func NewHTTPRequests()

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()
}