diff --git a/routes/actions.go b/routes/actions.go index 6024230..58d707a 100644 --- a/routes/actions.go +++ b/routes/actions.go @@ -11,7 +11,7 @@ import ( "github.com/tidwall/gjson" ) -func pixivPostRequest(r *fiber.Ctx, url, payload, token, csrf string, isJSON bool) error { +func pixivPostRequest(r CompatRequest, url, payload, token, csrf string, isJSON bool) error { requestBody := []byte(payload) req, err := http.NewRequestWithContext(r.Context(), "POST", url, bytes.NewBuffer(requestBody)) @@ -63,7 +63,7 @@ func AddBookmarkRoute(w http.ResponseWriter, r CompatRequest) error { csrf := session.GetCookie(r.Request, session.Cookie_CSRF) if token == "" || csrf == "" { - return PromptUserToLoginPage(r) + return PromptUserToLoginPage(w, r) } id := r.Params("id") @@ -82,7 +82,7 @@ func AddBookmarkRoute(w http.ResponseWriter, r CompatRequest) error { return err } - return r.SendString("Success") + return SendString(w, "Success") } func DeleteBookmarkRoute(w http.ResponseWriter, r CompatRequest) error { @@ -90,7 +90,7 @@ func DeleteBookmarkRoute(w http.ResponseWriter, r CompatRequest) error { csrf := session.GetCookie(r.Request, session.Cookie_CSRF) if token == "" || csrf == "" { - return PromptUserToLoginPage(r) + return PromptUserToLoginPage(w, r) } id := r.Params("id") @@ -105,7 +105,7 @@ func DeleteBookmarkRoute(w http.ResponseWriter, r CompatRequest) error { return err } - return r.SendString("Success") + return SendString(w, "Success") } func LikeRoute(w http.ResponseWriter, r CompatRequest) error { @@ -113,7 +113,7 @@ func LikeRoute(w http.ResponseWriter, r CompatRequest) error { csrf := session.GetCookie(r.Request, session.Cookie_CSRF) if token == "" || csrf == "" { - return PromptUserToLoginPage(r) + return PromptUserToLoginPage(w, r) } id := r.Params("id") @@ -127,5 +127,11 @@ func LikeRoute(w http.ResponseWriter, r CompatRequest) error { return err } - return r.SendString("Success") + return SendString(w, "Success") } + +func SendString(w http.ResponseWriter, text string) error { + w.Header().Set("content-type", "text/plain") + _, err := w.Write([]byte(text)) + return err +} \ No newline at end of file diff --git a/routes/artwork.go b/routes/artwork.go index c5028d3..f4041cb 100644 --- a/routes/artwork.go +++ b/routes/artwork.go @@ -26,7 +26,7 @@ func ArtworkPage(w http.ResponseWriter, r CompatRequest) error { // monkey patching. assuming illust.Images[_].Large is used for _, img := range illust.Images { - PreloadImage(r, img.Large) + PreloadImage(w, img.Large) } return Render(w, r, Data_artwork{ @@ -39,6 +39,6 @@ func ArtworkPage(w http.ResponseWriter, r CompatRequest) error { }) } -func PreloadImage(r *fiber.Ctx, url string) { - r.Response().Header.Add("Link", fmt.Sprintf("<%s>; rel=preload; as=image", url)) +func PreloadImage(w http.ResponseWriter, url string) { + w.Header().Add("Link", fmt.Sprintf("<%s>; rel=preload; as=image", url)) } diff --git a/routes/compat.go b/routes/compat.go index bf795f1..5ac39e2 100644 --- a/routes/compat.go +++ b/routes/compat.go @@ -58,3 +58,12 @@ func (r CompatRequest) Params(name string, defaultValue ...string) string { } } } + +func RedirectToRoute(w http.ResponseWriter, r CompatRequest, path string, query_params map[string]string, code int) error { + query := url.Values{} + for k, v := range query_params { + query.Add(k, v) + } + http.Redirect(w, r.Request, path+query.Encode(), code) + return nil +} diff --git a/routes/index.go b/routes/index.go index 63d9cfd..9d64f15 100644 --- a/routes/index.go +++ b/routes/index.go @@ -1,11 +1,11 @@ package routes import ( + "encoding/json" "net/http" "codeberg.org/vnpower/pixivfe/v2/core" "codeberg.org/vnpower/pixivfe/v2/session" - "net/http" ) func IndexPage(w http.ResponseWriter, r CompatRequest) error { @@ -43,7 +43,7 @@ func Oembed(w http.ResponseWriter, r CompatRequest) error { artistName := r.Query("a", "") artistURL := r.Query("u", "") - data := fiber.Map{ + data := map[string]any{ "version": "1.0", "embed_type": "rich", "provider_name": "PixivFE", @@ -52,5 +52,5 @@ func Oembed(w http.ResponseWriter, r CompatRequest) error { "author_url": artistURL, } - return r.JSON(data) + return json.NewEncoder(w).Encode(data) } diff --git a/routes/personal.go b/routes/personal.go index 3b22c8f..b6d27b8 100644 --- a/routes/personal.go +++ b/routes/personal.go @@ -18,32 +18,32 @@ func LoginUserPage(w http.ResponseWriter, r CompatRequest) error { token := session.GetPixivToken(r.Request) if token == "" { - return PromptUserToLoginPage(r) + return PromptUserToLoginPage(w, r) } // The left part of the token is the member ID userId := strings.Split(token, "_") - r.Redirect("/users/" + userId[0]) + http.Redirect(w, r.Request, "/users/" + userId[0], http.StatusSeeOther) return nil } func LoginBookmarkPage(w http.ResponseWriter, r CompatRequest) error { token := session.GetPixivToken(r.Request) if token == "" { - return PromptUserToLoginPage(r) + return PromptUserToLoginPage(w, r) } // The left part of the token is the member ID userId := strings.Split(token, "_") - r.Redirect("/users/" + userId[0] + "/bookmarks#checkpoint") + http.Redirect(w, r.Request, "/users/" + userId[0] + "/bookmarks#checkpoint", http.StatusSeeOther) return nil } func FollowingWorksPage(w http.ResponseWriter, r CompatRequest) error { if token := session.GetPixivToken(r.Request); token == "" { - return PromptUserToLoginPage(r) + return PromptUserToLoginPage(w, r) } mode := r.Query("mode", "all") diff --git a/routes/rankingCalendar.go b/routes/rankingCalendar.go index 449e6af..31aa8af 100644 --- a/routes/rankingCalendar.go +++ b/routes/rankingCalendar.go @@ -34,15 +34,17 @@ func parseDate(t time.Time) DateWrap { } func RankingCalendarPicker(w http.ResponseWriter, r CompatRequest) error { - mode := r.FormValue("mode", "daily") - date := r.FormValue("date", "") + mode := r.FormValue("mode") + if mode == "" { + mode = "daily" + } + date := r.FormValue("date") - return r.RedirectToRoute("/rankingCalendar", fiber.Map{ - "queries": map[string]string{ + return RedirectToRoute(w, r,"/rankingCalendar", map[string]string{ "mode": mode, "date": date, - }, - }) + + }, http.StatusFound) } func RankingCalendarPage(w http.ResponseWriter, r CompatRequest) error { diff --git a/routes/render.go b/routes/render.go index c5a26b4..29c90c7 100644 --- a/routes/render.go +++ b/routes/render.go @@ -4,7 +4,6 @@ import ( "io" "log" "net/http" - "net/url" "reflect" "strings" diff --git a/routes/settings.go b/routes/settings.go index a472f7f..049c3cb 100644 --- a/routes/settings.go +++ b/routes/settings.go @@ -163,7 +163,7 @@ func SettingsPage(w http.ResponseWriter, r CompatRequest) error { func SettingsPost(w http.ResponseWriter, r CompatRequest) error { t := r.Params("type") - noredirect := r.FormValue("noredirect", "") == "" + noredirect := r.FormValue("noredirect") == "" var err error switch t { @@ -199,5 +199,6 @@ func SettingsPost(w http.ResponseWriter, r CompatRequest) error { return nil } - return r.Redirect("/settings", http.StatusSeeOther) + http.Redirect(w, r.Request, "/settings", http.StatusSeeOther) + return nil } diff --git a/routes/tag.go b/routes/tag.go index 25a9761..a7570c2 100644 --- a/routes/tag.go +++ b/routes/tag.go @@ -55,21 +55,19 @@ func TagPage(w http.ResponseWriter, r CompatRequest) error { } func AdvancedTagPost(w http.ResponseWriter, r CompatRequest) error { - return r.RedirectToRoute("/tags", fiber.Map{ - "queries": map[string]string{ - "name": r.Query("name", r.FormValue("name")), - "category": r.Query("category", "artworks"), - "order": r.Query("order", "date_d"), - "mode": r.Query("mode", "safe"), - "ratio": r.Query("ratio"), - "page": r.Query("page", "1"), - "wlt": r.Query("wlt", r.FormValue("wlt")), - "wgt": r.Query("wgt", r.FormValue("wgt")), - "hlt": r.Query("hlt", r.FormValue("hlt")), - "hgt": r.Query("hgt", r.FormValue("hgt")), - "tool": r.Query("tool", r.FormValue("tool")), - "scd": r.Query("scd", r.FormValue("scd")), - "ecd": r.Query("ecd", r.FormValue("ecd")), - }, + return RedirectToRoute(w, r,"/tags", map[string]string{ + "name": r.Query("name", r.FormValue("name")), + "category": r.Query("category", "artworks"), + "order": r.Query("order", "date_d"), + "mode": r.Query("mode", "safe"), + "ratio": r.Query("ratio"), + "page": r.Query("page", "1"), + "wlt": r.Query("wlt", r.FormValue("wlt")), + "wgt": r.Query("wgt", r.FormValue("wgt")), + "hlt": r.Query("hlt", r.FormValue("hlt")), + "hgt": r.Query("hgt", r.FormValue("hgt")), + "tool": r.Query("tool", r.FormValue("tool")), + "scd": r.Query("scd", r.FormValue("scd")), + "ecd": r.Query("ecd", r.FormValue("ecd")), }, http.StatusFound) } diff --git a/routes/user.go b/routes/user.go index 6918364..65bcd91 100644 --- a/routes/user.go +++ b/routes/user.go @@ -21,7 +21,7 @@ func fetchData(r CompatRequest, getTags bool) (userPageData, error) { if _, err := strconv.Atoi(id); err != nil { return userPageData{}, err } - category := core.UserArtCategory(r.Request.Params("category", string(core.UserArt_Any))) + category := core.UserArtCategory(r.Params("category", string(core.UserArt_Any))) err := category.Validate() if err != nil { return userPageData{}, err diff --git a/session/cookie.go b/session/cookie.go index 55245ab..7d680fa 100644 --- a/session/cookie.go +++ b/session/cookie.go @@ -51,7 +51,7 @@ func SetCookie(w http.ResponseWriter, name CookieName, value string) { Value: value, Path: "/", // expires in 30 days from now - Expires: r.Context().Time().Add(30 * (24 * time.Hour)), + Expires: time.Now().Add(30 * (24 * time.Hour)), HttpOnly: true, Secure: true, SameSite: http.SameSiteStrictMode, // bye-bye cross site forgery