package port import ( "errors" "net/http" "gitea.dwysokinski.me/twhelp/corev3/internal/port/internal/apimodel" "github.com/getkin/kin-openapi/openapi3" ) func (h *apiHTTPHandler) sendOpenAPIJSON(w http.ResponseWriter, r *http.Request) { schema, err := h.getOpenAPISchema() if err != nil { w.WriteHeader(http.StatusInternalServerError) return } h.renderJSON(w, r, http.StatusOK, schema) } func getOpenAPISchema(cfg OpenAPIConfig) (*openapi3.T, error) { if !cfg.Enabled { return nil, errors.New("openapi is disabled") } schema, err := apimodel.GetSwagger() if err != nil { return nil, err } if len(cfg.Servers) == 0 { return schema, nil } schema.Servers = make(openapi3.Servers, 0, len(cfg.Servers)) for _, s := range cfg.Servers { u := *s.URL u.Path = cfg.BasePath schema.Servers = append(schema.Servers, &openapi3.Server{ URL: u.String(), }) } return schema, nil }