136 lines
5.9 KiB
Go
136 lines
5.9 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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",
|
|
"+iN+cj7sCKYt+aj3/nL/3wAAAP//aU95WLUhAAA=",
|
|
}
|
|
|
|
// 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("error base64 decoding spec: %s", err)
|
|
}
|
|
zr, err := gzip.NewReader(bytes.NewReader(zipped))
|
|
if err != nil {
|
|
return nil, fmt.Errorf("error decompressing spec: %s", err)
|
|
}
|
|
var buf bytes.Buffer
|
|
_, err = buf.ReadFrom(zr)
|
|
if err != nil {
|
|
return nil, fmt.Errorf("error 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
|
|
}
|