
This is made with plain sqlite. It's probably a good idea to move to something like GORM instead.
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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",
|
|
"e3e++28AAAD//9hZQfR1IQAA",
|
|
}
|
|
|
|
// 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
|
|
}
|