in internal/pkg/apivalidator/request.go [49:96]
func NewHTTPRequests(host string, client *http.Client, cloudSpec *spec.Swagger) error {
if client == nil {
return errors.New("requests to api: an http client must be specified")
}
var reqs []*http.Request
requests := apiRequests{reqs}
// nolint
for path, pathItem := range cloudSpec.Paths.Paths {
var request []*http.Request
if pathItem.Head != nil {
request = append(request, buildRequest(host, path, "HEAD"))
}
if pathItem.Get != nil {
request = append(request, buildRequest(host, path, "GET"))
}
if pathItem.Post != nil {
request = append(request, buildRequest(host, path, "POST"))
}
if pathItem.Put != nil {
request = append(request, buildRequest(host, path, "PUT"))
}
if pathItem.Patch != nil {
request = append(request, buildRequest(host, path, "PATCH"))
}
if pathItem.Delete != nil {
request = append(request, buildRequest(host, path, "DELETE"))
}
requests.reqs = append(requests.reqs, request...)
}
sort.SliceStable(requests.reqs, func(i, j int) bool {
return requests.reqs[i].Method < requests.reqs[j].Method
})
var merr = multierror.NewPrefixed("api spec validation")
for i := range requests.reqs {
req := requests.reqs[i]
fmt.Printf("%v %v%v\n", req.Method, req.URL.Host, req.URL.Path)
if err := validateRequest(req, client); err != nil {
merr = merr.Append(err)
}
}
return merr.ErrorOrNil()
}