Files
hetty/pkg/api/resolvers.go

54 lines
1.1 KiB
Go
Raw Normal View History

package api
//go:generate go run github.com/99designs/gqlgen
import (
"context"
"fmt"
"github.com/dstotijn/gurp/pkg/reqlog"
)
type Resolver struct {
RequestLogService *reqlog.Service
}
type queryResolver struct{ *Resolver }
func (r *Resolver) Query() QueryResolver { return &queryResolver{r} }
func (r *queryResolver) GetHTTPRequests(ctx context.Context) ([]HTTPRequest, error) {
logs := r.RequestLogService.Requests()
reqs := make([]HTTPRequest, len(logs))
for i, log := range logs {
method := HTTPMethod(log.Request.Method)
if !method.IsValid() {
return nil, fmt.Errorf("request has invalid method: %v", method)
}
reqs[i] = HTTPRequest{
URL: log.Request.URL.String(),
Method: method,
Timestamp: log.Timestamp,
}
if len(log.Body) > 0 {
reqBody := string(log.Body)
reqs[i].Body = &reqBody
}
if log.Response != nil {
reqs[i].Response = &HTTPResponse{
StatusCode: log.Response.Response.StatusCode,
}
if len(log.Response.Body) > 0 {
resBody := string(log.Response.Body)
reqs[i].Response.Body = &resBody
}
}
}
return reqs, nil
}