
Instead of returning an error "error doing X", just return "doing X". The fact that it's returned as an error object says enough about that it's an error. This also makes it easier to chain error messages, without seeing the word "error" in every part of the chain.
150 lines
7.1 KiB
Go
150 lines
7.1 KiB
Go
// Package api provides primitives to interact with the openapi HTTP API.
|
|
//
|
|
// Code generated by github.com/deepmap/oapi-codegen version v1.9.0 DO NOT EDIT.
|
|
package api
|
|
|
|
import (
|
|
"bytes"
|
|
"compress/gzip"
|
|
"encoding/base64"
|
|
"fmt"
|
|
"net/url"
|
|
"path"
|
|
"strings"
|
|
|
|
"github.com/getkin/kin-openapi/openapi3"
|
|
)
|
|
|
|
// Base64 encoded, gzipped, json marshaled Swagger object
|
|
var swaggerSpec = []string{
|
|
|
|
"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",
|
|
}
|
|
|
|
// GetSwagger returns the content of the embedded swagger specification file
|
|
// or error if failed to decode
|
|
func decodeSpec() ([]byte, error) {
|
|
zipped, err := base64.StdEncoding.DecodeString(strings.Join(swaggerSpec, ""))
|
|
if err != nil {
|
|
return nil, fmt.Errorf("base64 decoding spec: %s", err)
|
|
}
|
|
zr, err := gzip.NewReader(bytes.NewReader(zipped))
|
|
if err != nil {
|
|
return nil, fmt.Errorf("decompressing spec: %s", err)
|
|
}
|
|
var buf bytes.Buffer
|
|
_, err = buf.ReadFrom(zr)
|
|
if err != nil {
|
|
return nil, fmt.Errorf("decompressing spec: %s", err)
|
|
}
|
|
|
|
return buf.Bytes(), nil
|
|
}
|
|
|
|
var rawSpec = decodeSpecCached()
|
|
|
|
// a naive cached of a decoded swagger spec
|
|
func decodeSpecCached() func() ([]byte, error) {
|
|
data, err := decodeSpec()
|
|
return func() ([]byte, error) {
|
|
return data, err
|
|
}
|
|
}
|
|
|
|
// Constructs a synthetic filesystem for resolving external references when loading openapi specifications.
|
|
func PathToRawSpec(pathToFile string) map[string]func() ([]byte, error) {
|
|
var res = make(map[string]func() ([]byte, error))
|
|
if len(pathToFile) > 0 {
|
|
res[pathToFile] = rawSpec
|
|
}
|
|
|
|
return res
|
|
}
|
|
|
|
// GetSwagger returns the Swagger specification corresponding to the generated code
|
|
// in this file. The external references of Swagger specification are resolved.
|
|
// The logic of resolving external references is tightly connected to "import-mapping" feature.
|
|
// Externally referenced files must be embedded in the corresponding golang packages.
|
|
// Urls can be supported but this task was out of the scope.
|
|
func GetSwagger() (swagger *openapi3.T, err error) {
|
|
var resolvePath = PathToRawSpec("")
|
|
|
|
loader := openapi3.NewLoader()
|
|
loader.IsExternalRefsAllowed = true
|
|
loader.ReadFromURIFunc = func(loader *openapi3.Loader, url *url.URL) ([]byte, error) {
|
|
var pathToFile = url.String()
|
|
pathToFile = path.Clean(pathToFile)
|
|
getSpec, ok := resolvePath[pathToFile]
|
|
if !ok {
|
|
err1 := fmt.Errorf("path not found: %s", pathToFile)
|
|
return nil, err1
|
|
}
|
|
return getSpec()
|
|
}
|
|
var specData []byte
|
|
specData, err = rawSpec()
|
|
if err != nil {
|
|
return
|
|
}
|
|
swagger, err = loader.LoadFromData(specData)
|
|
if err != nil {
|
|
return
|
|
}
|
|
return
|
|
}
|