Fix loading external spec files
This commit is contained in:
parent
304fa4a99e
commit
cb37844281
@ -68,6 +68,7 @@ func (m *Module) SetupModule(router *mux.Router, f func(cb func(http.ResponseWri
|
|||||||
router.HandleFunc("/", m.getClient(m.homepage))
|
router.HandleFunc("/", m.getClient(m.homepage))
|
||||||
router.HandleFunc("/login", m.sessionWrapper(m.loginPage))
|
router.HandleFunc("/login", m.sessionWrapper(m.loginPage))
|
||||||
router.PathPrefix("/spec/{org}/{repo}/{sha}/{spec:.+}").HandlerFunc(m.getClient(m.specPage))
|
router.PathPrefix("/spec/{org}/{repo}/{sha}/{spec:.+}").HandlerFunc(m.getClient(m.specPage))
|
||||||
|
router.PathPrefix("/spec-raw/{org}/{repo}/{sha}/{spec:.+}").HandlerFunc(m.getClient(m.specRawPage))
|
||||||
router.PathPrefix("/swagger").HandlerFunc(func(rw http.ResponseWriter, req *http.Request) {
|
router.PathPrefix("/swagger").HandlerFunc(func(rw http.ResponseWriter, req *http.Request) {
|
||||||
p := filepath.Join("swagger", filepath.Base(req.URL.Path))
|
p := filepath.Join("swagger", filepath.Base(req.URL.Path))
|
||||||
open, err := assets.SwaggerAssets.Open(p)
|
open, err := assets.SwaggerAssets.Open(p)
|
||||||
@ -349,16 +350,6 @@ func (m *Module) specPage(rw http.ResponseWriter, req *http.Request, state *util
|
|||||||
mySha := vars["sha"]
|
mySha := vars["sha"]
|
||||||
mySpec := vars["spec"]
|
mySpec := vars["spec"]
|
||||||
|
|
||||||
q := req.URL.Query()
|
|
||||||
if q.Has("raw") && q.Get("raw") == "true" {
|
|
||||||
open, _, err := giteaClient.GetFile(myOrg, myRepo, mySha, mySpec)
|
|
||||||
if err != nil {
|
|
||||||
http.Error(rw, "OpenAPI spec raw: "+err.Error(), http.StatusInternalServerError)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
http.ServeContent(rw, req, mySpec, time.Now(), bytes.NewReader(open))
|
|
||||||
return
|
|
||||||
}
|
|
||||||
contents, _, err := giteaClient.GetContents(myOrg, myRepo, mySha, mySpec)
|
contents, _, err := giteaClient.GetContents(myOrg, myRepo, mySha, mySpec)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
http.Error(rw, "OpenAPI spec: "+err.Error(), http.StatusInternalServerError)
|
http.Error(rw, "OpenAPI spec: "+err.Error(), http.StatusInternalServerError)
|
||||||
@ -381,7 +372,7 @@ func (m *Module) specPage(rw http.ResponseWriter, req *http.Request, state *util
|
|||||||
Url string `json:"url"`
|
Url string `json:"url"`
|
||||||
Name string `json:"name"`
|
Name string `json:"name"`
|
||||||
}{
|
}{
|
||||||
{Url: fmt.Sprintf("/gitea/spec/%s/%s/%s/%s?raw=true", myOrg, myRepo, mySha, mySpec), Name: contents.Name},
|
{Url: fmt.Sprintf("/gitea/spec-raw/%s/%s/%s/%s", myOrg, myRepo, mySha, mySpec), Name: contents.Name},
|
||||||
},
|
},
|
||||||
LoadMain: contents.Name,
|
LoadMain: contents.Name,
|
||||||
})
|
})
|
||||||
@ -390,3 +381,18 @@ func (m *Module) specPage(rw http.ResponseWriter, req *http.Request, state *util
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (m *Module) specRawPage(rw http.ResponseWriter, req *http.Request, state *utils.State, giteaClient *gitea.Client) {
|
||||||
|
vars := mux.Vars(req)
|
||||||
|
myOrg := vars["org"]
|
||||||
|
myRepo := vars["repo"]
|
||||||
|
mySha := vars["sha"]
|
||||||
|
mySpec := vars["spec"]
|
||||||
|
|
||||||
|
open, _, err := giteaClient.GetFile(myOrg, myRepo, mySha, mySpec)
|
||||||
|
if err != nil {
|
||||||
|
http.Error(rw, "OpenAPI spec raw: "+err.Error(), http.StatusInternalServerError)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
http.ServeContent(rw, req, mySpec, time.Now(), bytes.NewReader(open))
|
||||||
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user