mirror of
https://codeberg.org/git-pages/git-pages.git
synced 2026-05-22 15:12:15 +00:00
Factor out getWebRoot(). NFCI
This commit is contained in:
78
src/pages.go
78
src/pages.go
@@ -70,6 +70,20 @@ func makeWebRoot(host string, projectName string) string {
|
||||
return fmt.Sprintf("%s/%s", strings.ToLower(host), projectName)
|
||||
}
|
||||
|
||||
func getWebRoot(r *http.Request) (string, error) {
|
||||
host, err := GetHost(r)
|
||||
if err != nil {
|
||||
return "", err
|
||||
}
|
||||
|
||||
projectName, err := GetProjectName(r)
|
||||
if err != nil {
|
||||
return "", err
|
||||
}
|
||||
|
||||
return makeWebRoot(host, projectName), nil
|
||||
}
|
||||
|
||||
func writeRedirect(w http.ResponseWriter, code int, path string) {
|
||||
w.Header().Set("Location", path)
|
||||
w.WriteHeader(code)
|
||||
@@ -433,18 +447,11 @@ func putPage(w http.ResponseWriter, r *http.Request) error {
|
||||
}
|
||||
}
|
||||
|
||||
host, err := GetHost(r)
|
||||
webRoot, err := getWebRoot(r)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
projectName, err := GetProjectName(r)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
webRoot := makeWebRoot(host, projectName)
|
||||
|
||||
updateCtx, cancel := context.WithTimeout(r.Context(), time.Duration(config.Limits.UpdateTimeout))
|
||||
defer cancel()
|
||||
|
||||
@@ -514,25 +521,19 @@ func patchPage(w http.ResponseWriter, r *http.Request) error {
|
||||
}
|
||||
}
|
||||
|
||||
host, err := GetHost(r)
|
||||
webRoot, err := getWebRoot(r)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
projectName, err := GetProjectName(r)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
webRoot := makeWebRoot(host, projectName)
|
||||
|
||||
updateCtx, cancel := context.WithTimeout(r.Context(), time.Duration(config.Limits.UpdateTimeout))
|
||||
defer cancel()
|
||||
|
||||
if _, err = AuthorizeUpdateFromArchive(r); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
if checkDryRun(w, r) {
|
||||
return nil
|
||||
}
|
||||
|
||||
// Providing atomic compare-and-swap operations might be difficult or impossible depending
|
||||
// on the backend in use and its configuration, but for applications where a mostly-atomic
|
||||
// compare-and-swap operation is good enough (e.g. generating page previews) we don't want
|
||||
@@ -553,9 +554,8 @@ func patchPage(w http.ResponseWriter, r *http.Request) error {
|
||||
return nil
|
||||
}
|
||||
|
||||
if checkDryRun(w, r) {
|
||||
return nil
|
||||
}
|
||||
updateCtx, cancel := context.WithTimeout(r.Context(), time.Duration(config.Limits.UpdateTimeout))
|
||||
defer cancel()
|
||||
|
||||
contentType := getMediaType(r.Header.Get("Content-Type"))
|
||||
reader := http.MaxBytesReader(w, r.Body, int64(config.Limits.MaxSiteSize.Bytes()))
|
||||
@@ -613,17 +613,12 @@ func reportUpdateResult(w http.ResponseWriter, result UpdateResult) error {
|
||||
}
|
||||
|
||||
func deletePage(w http.ResponseWriter, r *http.Request) error {
|
||||
_, err := AuthorizeUpdateFromRepository(r)
|
||||
webRoot, err := getWebRoot(r)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
host, err := GetHost(r)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
projectName, err := GetProjectName(r)
|
||||
_, err = AuthorizeUpdateFromRepository(r)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
@@ -632,17 +627,13 @@ func deletePage(w http.ResponseWriter, r *http.Request) error {
|
||||
return nil
|
||||
}
|
||||
|
||||
err = backend.DeleteManifest(r.Context(), makeWebRoot(host, projectName),
|
||||
ModifyManifestOptions{})
|
||||
if err != nil {
|
||||
if err = backend.DeleteManifest(r.Context(), webRoot, ModifyManifestOptions{}); err != nil {
|
||||
w.WriteHeader(http.StatusInternalServerError)
|
||||
fmt.Fprintln(w, err)
|
||||
} else {
|
||||
w.Header().Add("Update-Result", "deleted")
|
||||
w.WriteHeader(http.StatusOK)
|
||||
}
|
||||
if err != nil {
|
||||
fmt.Fprintln(w, err)
|
||||
}
|
||||
return err
|
||||
}
|
||||
|
||||
@@ -651,23 +642,16 @@ func postPage(w http.ResponseWriter, r *http.Request) error {
|
||||
requestTimeout := 3 * time.Second
|
||||
requestTimer := time.NewTimer(requestTimeout)
|
||||
|
||||
webRoot, err := getWebRoot(r)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
auth, err := AuthorizeUpdateFromRepository(r)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
host, err := GetHost(r)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
projectName, err := GetProjectName(r)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
webRoot := makeWebRoot(host, projectName)
|
||||
|
||||
eventName := ""
|
||||
for _, header := range []string{
|
||||
"X-Forgejo-Event",
|
||||
|
||||
Reference in New Issue
Block a user