use pixelapi style handler registration

This commit is contained in:
2020-07-20 16:57:43 +02:00
parent 3c07909822
commit 058b287738

View File

@@ -66,11 +66,9 @@ func New(
panic(fmt.Errorf("Could not get hostname: %s", err))
}
var p = prefix
// Serve static files
var fs = http.FileServer(http.Dir(resourceDir + "/static"))
r.GET(p+"/res/*filepath", func(w http.ResponseWriter, r *http.Request, p httprouter.Params) {
r.GET(prefix+"/res/*filepath", func(w http.ResponseWriter, r *http.Request, p httprouter.Params) {
// Cache resources for 4 weeks
w.Header().Set("Cache-Control", "public, max-age=2419200")
r.URL.Path = p.ByName("filepath")
@@ -78,8 +76,8 @@ func New(
})
// Static assets
r.GET(p+"/favicon.ico" /* */, wc.serveFile("/favicon.ico"))
r.GET(p+"/robots.txt" /* */, wc.serveFile("/robots.txt"))
r.GET(prefix+"/favicon.ico" /* */, wc.serveFile("/favicon.ico"))
r.GET(prefix+"/robots.txt" /* */, wc.serveFile("/robots.txt"))
if maintenanceMode {
r.NotFound = http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
@@ -89,53 +87,65 @@ func New(
return wc
}
r.NotFound = http.HandlerFunc(wc.serveNotFound)
// Request method shorthands. These help keep the array of handlers aligned
const PST, GET, PUT, DEL = "POST", "GET", "PUT", "DELETE"
// Loop over the handlers and register all of them in the router
for _, h := range []struct {
method string // HTTP request method this API handler uses
path string // The URL path this API will be registered on
handler httprouter.Handle // The function to run when this API is called
}{
// General navigation
r.GET(p+"/" /* */, wc.serveTemplate("home", false))
r.GET(p+"/api" /* */, wc.serveTemplate("apidoc", false))
r.GET(p+"/history" /* */, wc.serveTemplate("history_cookies", false))
r.GET(p+"/u/:id" /* */, wc.serveFileViewer)
r.GET(p+"/u/:id/preview" /**/, wc.serveFilePreview)
r.GET(p+"/l/:id" /* */, wc.serveListViewer)
r.GET(p+"/s/:id" /* */, wc.serveSkynetViewer)
r.GET(p+"/t" /* */, wc.serveTemplate("paste", false))
r.GET(p+"/donation" /* */, wc.serveTemplate("donation", false))
r.GET(p+"/widgets" /* */, wc.serveTemplate("widgets", false))
r.GET(p+"/about" /* */, wc.serveTemplate("about", false))
r.GET(p+"/appearance" /* */, wc.serveTemplate("appearance", false))
{GET, "" /* */, wc.serveTemplate("home", false)},
{GET, "api" /* */, wc.serveTemplate("apidoc", false)},
{GET, "history" /* */, wc.serveTemplate("history_cookies", false)},
{GET, "u/:id" /* */, wc.serveFileViewer},
{GET, "u/:id/preview" /**/, wc.serveFilePreview},
{GET, "l/:id" /* */, wc.serveListViewer},
{GET, "s/:id" /* */, wc.serveSkynetViewer},
{GET, "t" /* */, wc.serveTemplate("paste", false)},
{GET, "donation" /* */, wc.serveTemplate("donation", false)},
{GET, "widgets" /* */, wc.serveTemplate("widgets", false)},
{GET, "about" /* */, wc.serveTemplate("about", false)},
{GET, "appearance" /* */, wc.serveTemplate("appearance", false)},
// User account pages
r.GET(p+"/register" /* */, wc.serveForm(wc.registerForm, false))
r.POST(p+"/register" /* */, wc.serveForm(wc.registerForm, false))
r.GET(p+"/login" /* */, wc.serveForm(wc.loginForm, false))
r.POST(p+"/login" /* */, wc.serveForm(wc.loginForm, false))
r.GET(p+"/password_reset" /* */, wc.serveForm(wc.passwordResetForm, false))
r.POST(p+"/password_reset" /* */, wc.serveForm(wc.passwordResetForm, false))
r.GET(p+"/logout" /* */, wc.serveTemplate("logout", true))
r.POST(p+"/logout" /* */, wc.serveLogout)
r.GET(p+"/user" /* */, wc.serveTemplate("user_home", true))
r.GET(p+"/user/files" /* */, wc.serveTemplate("user_files", true))
r.GET(p+"/user/lists" /* */, wc.serveTemplate("user_lists", true))
r.GET(p+"/user/filemanager" /**/, wc.serveTemplate("file_manager", true))
{GET, "register" /* */, wc.serveForm(wc.registerForm, false)},
{PST, "register" /* */, wc.serveForm(wc.registerForm, false)},
{GET, "login" /* */, wc.serveForm(wc.loginForm, false)},
{PST, "login" /* */, wc.serveForm(wc.loginForm, false)},
{GET, "password_reset" /* */, wc.serveForm(wc.passwordResetForm, false)},
{PST, "password_reset" /* */, wc.serveForm(wc.passwordResetForm, false)},
{GET, "logout" /* */, wc.serveTemplate("logout", true)},
{PST, "logout" /* */, wc.serveLogout},
{GET, "user" /* */, wc.serveTemplate("user_home", true)},
{GET, "user/files" /* */, wc.serveTemplate("user_files", true)},
{GET, "user/lists" /* */, wc.serveTemplate("user_lists", true)},
{GET, "user/filemanager" /**/, wc.serveTemplate("file_manager", true)},
// User account settings
r.GET(p+"/user/settings" /* */, wc.serveUserSettings)
r.POST(p+"/user/settings" /* */, wc.serveUserSettings)
r.GET(p+"/user/confirm_email" /* */, wc.serveEmailConfirm)
r.GET(p+"/user/password_reset_confirm" /* */, wc.serveForm(wc.passwordResetConfirmForm, false))
r.POST(p+"/user/password_reset_confirm" /**/, wc.serveForm(wc.passwordResetConfirmForm, false))
{GET, "user/settings" /* */, wc.serveUserSettings},
{PST, "user/settings" /* */, wc.serveUserSettings},
{GET, "user/confirm_email" /* */, wc.serveEmailConfirm},
{GET, "user/password_reset_confirm" /**/, wc.serveForm(wc.passwordResetConfirmForm, false)},
{PST, "user/password_reset_confirm" /**/, wc.serveForm(wc.passwordResetConfirmForm, false)},
// Admin settings
r.GET(p+"/admin" /* */, wc.serveTemplate("admin_panel", true))
r.GET(p+"/admin/globals" /* */, wc.serveForm(wc.adminGlobalsForm, true))
r.POST(p+"/admin/globals" /**/, wc.serveForm(wc.adminGlobalsForm, true))
r.GET(p+"/admin/abuse" /* */, wc.serveForm(wc.adminAbuseForm, true))
r.POST(p+"/admin/abuse" /**/, wc.serveForm(wc.adminAbuseForm, true))
{GET, "admin" /* */, wc.serveTemplate("admin_panel", true)},
{GET, "admin/globals" /**/, wc.serveForm(wc.adminGlobalsForm, true)},
{PST, "admin/globals" /**/, wc.serveForm(wc.adminGlobalsForm, true)},
{GET, "admin/abuse" /* */, wc.serveForm(wc.adminAbuseForm, true)},
{PST, "admin/abuse" /* */, wc.serveForm(wc.adminAbuseForm, true)},
// Advertising related
r.GET(p+"/click/:id" /* */, wc.serveAdClick)
r.GET(p+"/campaign/:id" /* */, wc.serveCampaignPartner)
r.NotFound = http.HandlerFunc(wc.serveNotFound)
{GET, "click/:id" /* */, wc.serveAdClick},
{GET, "campaign/:id" /**/, wc.serveCampaignPartner},
} {
r.Handle(h.method, prefix+"/"+h.path, h.handler)
}
return wc
}