From 1bb8536334fbdb7108a5c2d7b955b9211b29486d Mon Sep 17 00:00:00 2001 From: daru Date: Thu, 28 Jul 2022 00:43:35 +0200 Subject: [PATCH] =?UTF-8?q?Big=20cleanup=20=F0=9F=A7=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- go.mod | 2 +- go.sum | 4 +- huso.go | 3 + labersack.go | 14 ++--- ober.go | 159 ++++++++++++--------------------------------------- 5 files changed, 49 insertions(+), 133 deletions(-) diff --git a/go.mod b/go.mod index d6038bd..a64a95e 100644 --- a/go.mod +++ b/go.mod @@ -26,5 +26,5 @@ require ( github.com/xujiajun/mmap-go v1.0.1 // indirect github.com/xujiajun/utils v0.0.0-20190123093513-8bf096c4f53b // indirect golang.org/x/crypto v0.0.0-20220722155217-630584e8d5aa // indirect - golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f // indirect + golang.org/x/sys v0.0.0-20220727055044-e65921a090b8 // indirect ) diff --git a/go.sum b/go.sum index 8dce39d..0bc7f98 100644 --- a/go.sum +++ b/go.sum @@ -72,8 +72,8 @@ golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.0.0-20211216021012-1d35b9e2eb4e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220227234510-4e6760a101f9/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220405210540-1e041c57c461/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f h1:v4INt8xihDGvnrfjMDVXGxw9wrfxYyCjk0KbXjhR55s= -golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220727055044-e65921a090b8 h1:dyU22nBWzrmTQxtNrr4dzVOvaw35nUYE279vF9UmsI8= +golang.org/x/sys v0.0.0-20220727055044-e65921a090b8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= diff --git a/huso.go b/huso.go index e0e9d4e..99033e6 100644 --- a/huso.go +++ b/huso.go @@ -51,6 +51,9 @@ var ( mmDbServer = flag.String("mmDbServer", "hanami.family:3306", "MovieManager db server") mmDbUser = flag.String("mmDbUser", "yui", "MovieManager db user") discordToken = flag.String("discordToken", "OTk4MTk3MTMzNjE2MzUzMzUw.GKPdLt.zaMvvlikffjBxJO-Qx69A5nQNQxtA-FmkH2yTA", "Discord bot auth token") + discordChannel = flag.String("discordChannel", "998277590609559632", "Discord bot channel id") + husoWebAnimeUri = flag.String("husoWebAnimeUri", "https://anime.hanami.family/anime/", "HusoWeb Anime base URL") + husoWebUserUri = flag.String("husoWebUserUri", "https://anime.hanami.family/user/", "HusoWeb User base URL") animeCache *bigcache.BigCache seasoncache *bigcache.BigCache userCache *bigcache.BigCache diff --git a/labersack.go b/labersack.go index 6a08a5f..330e616 100644 --- a/labersack.go +++ b/labersack.go @@ -30,10 +30,10 @@ func SendAppointBroadcast(creator string, app *Appointment) { msgStart.WriteString(fmt.Sprintf("<@%d>", uData.DiscordID)) } - msgs := fmt.Sprintf("🗓️ New appointment for [%s](https://anime.hanami.family/anime/%d) at\n\n", anime.Title, app.Anime, app.Time.Unix(), app.Time.Unix()) + msgs := fmt.Sprintf("🗓️ New appointment for [%s](%s%d) at\n\n", anime.Title, *husoWebAnimeUri, app.Anime, app.Time.Unix(), app.Time.Unix()) msge := discordgo.MessageEmbed{ Description: msgs, - URL: fmt.Sprintf("https://anime.hanami.family/anime/%d", app.Anime), + URL: fmt.Sprintf("%s%d", *husoWebAnimeUri, app.Anime), Thumbnail: &discordgo.MessageEmbedThumbnail{URL: anime.ImageLargeURL}, Color: 7187428, Footer: &discordgo.MessageEmbedFooter{ @@ -46,7 +46,7 @@ func SendAppointBroadcast(creator string, app *Appointment) { msge.Author = &discordgo.MessageEmbedAuthor{ Name: user.Username, IconURL: user.ImageURL, - URL: fmt.Sprintf("https://anime.hanami.family/user/%s", creator), + URL: fmt.Sprintf("%s%s", *husoWebUserUri, creator), } } @@ -54,7 +54,7 @@ func SendAppointBroadcast(creator string, app *Appointment) { Content: msgStart.String(), Embeds: []*discordgo.MessageEmbed{&msge}, } - _, err = discc.ChannelMessageSendComplex("998277590609559632", &msgc) + _, err = discc.ChannelMessageSendComplex(*discordChannel, &msgc) if err != nil { color.Errorln(err.Error()) @@ -84,10 +84,10 @@ func AnnounceAppointmentSoon(app *Appointment) { msgStart.WriteString(fmt.Sprintf("<@%d>", uData.DiscordID)) } - msgs := fmt.Sprintf("⏰ Appointment starting !\n[%s](https://anime.hanami.family/anime/%d) at\n", app.Time.Unix(), anime.Title, app.Anime, app.Time.Unix()) + msgs := fmt.Sprintf("⏰ Appointment starting !\n[%s](%s%d) at\n", app.Time.Unix(), anime.Title, *husoWebAnimeUri, app.Anime, app.Time.Unix()) msge := discordgo.MessageEmbed{ Description: msgs, - URL: fmt.Sprintf("https://anime.hanami.family/anime/%d", app.Anime), + URL: fmt.Sprintf("%s%d", *husoWebAnimeUri, app.Anime), Thumbnail: &discordgo.MessageEmbedThumbnail{URL: anime.ImageLargeURL}, Color: 7187428, Footer: &discordgo.MessageEmbedFooter{ @@ -99,7 +99,7 @@ func AnnounceAppointmentSoon(app *Appointment) { Content: msgStart.String(), Embeds: []*discordgo.MessageEmbed{&msge}, } - _, err = discc.ChannelMessageSendComplex("998277590609559632", &msgc) + _, err = discc.ChannelMessageSendComplex(*discordChannel, &msgc) if err != nil { color.Errorln(err.Error()) diff --git a/ober.go b/ober.go index 38a9ab0..3313c74 100644 --- a/ober.go +++ b/ober.go @@ -14,6 +14,13 @@ import ( "github.com/xujiajun/nutsdb" ) +const ( + xHusoAuth = "X-HUSO-AUTH" + htmlContentType = "text/html; charset=utf-8" + jsonContentType = "application/json; charset=utf-8" + textContentType = "text/plain; charset=utf-8" +) + func RunWebserv() { r := router.New() r.GET("/", Headers(Start)) @@ -62,12 +69,12 @@ func Start(ctx *fasthttp.RequestCtx) { WriteIndex(ctx, season, oracles, charts, logOut.String()) - ctx.SetContentType("text/html; charset=utf-8") + ctx.SetContentType(htmlContentType) ctx.SetStatusCode(fasthttp.StatusOK) } func AuthTest(ctx *fasthttp.RequestCtx) { - auth := ctx.Request.Header.Peek("X-HUSO-AUTH") + auth := ctx.Request.Header.Peek(xHusoAuth) if ctx.UserValue("user") == nil || auth == nil || string(auth) == "" { ctx.SetStatusCode(fasthttp.StatusBadRequest) return @@ -87,15 +94,7 @@ func Season(ctx *fasthttp.RequestCtx) { addErrorToCtx(ctx, err) return } - - err = writeResponseBody(ctx, data) - if err != nil { - addErrorToCtx(ctx, err) - return - } - - ctx.SetContentType("application/json; charset=utf-8") - ctx.SetStatusCode(fasthttp.StatusOK) + setResponseJson(ctx, data) } func SeasonNext(ctx *fasthttp.RequestCtx) { @@ -104,15 +103,7 @@ func SeasonNext(ctx *fasthttp.RequestCtx) { addErrorToCtx(ctx, err) return } - - err = writeResponseBody(ctx, data) - if err != nil { - addErrorToCtx(ctx, err) - return - } - - ctx.SetContentType("application/json; charset=utf-8") - ctx.SetStatusCode(fasthttp.StatusOK) + setResponseJson(ctx, data) } func SeasonNextNext(ctx *fasthttp.RequestCtx) { @@ -121,15 +112,7 @@ func SeasonNextNext(ctx *fasthttp.RequestCtx) { addErrorToCtx(ctx, err) return } - - err = writeResponseBody(ctx, data) - if err != nil { - addErrorToCtx(ctx, err) - return - } - - ctx.SetContentType("application/json; charset=utf-8") - ctx.SetStatusCode(fasthttp.StatusOK) + setResponseJson(ctx, data) } func SeasonLast(ctx *fasthttp.RequestCtx) { @@ -138,15 +121,7 @@ func SeasonLast(ctx *fasthttp.RequestCtx) { addErrorToCtx(ctx, err) return } - - err = writeResponseBody(ctx, data) - if err != nil { - addErrorToCtx(ctx, err) - return - } - - ctx.SetContentType("application/json; charset=utf-8") - ctx.SetStatusCode(fasthttp.StatusOK) + setResponseJson(ctx, data) } func AnimeGet(ctx *fasthttp.RequestCtx) { @@ -173,14 +148,7 @@ func AnimeGet(ctx *fasthttp.RequestCtx) { addErrorToCtx(ctx, err) return } - _, err = ctx.Write(bytes) - if err != nil { - addErrorToCtx(ctx, err) - return - } - - ctx.SetContentType("application/json; charset=utf-8") - ctx.SetStatusCode(fasthttp.StatusOK) + setResponseJson(ctx, bytes) } func AnimeSearchGet(ctx *fasthttp.RequestCtx) { @@ -195,14 +163,7 @@ func AnimeSearchGet(ctx *fasthttp.RequestCtx) { addErrorToCtx(ctx, err) return } - _, err = ctx.Write(bytes) - if err != nil { - addErrorToCtx(ctx, err) - return - } - - ctx.SetContentType("application/json; charset=utf-8") - ctx.SetStatusCode(fasthttp.StatusOK) + setResponseJson(ctx, bytes) } func AppointmentGet(ctx *fasthttp.RequestCtx) { @@ -222,14 +183,7 @@ func AppointmentGet(ctx *fasthttp.RequestCtx) { addErrorToCtx(ctx, err) return } - _, err = ctx.Write(bytes) - if err != nil { - addErrorToCtx(ctx, err) - return - } - - ctx.SetContentType("application/json; charset=utf-8") - ctx.SetStatusCode(fasthttp.StatusOK) + setResponseJson(ctx, bytes) } func ChatGet(ctx *fasthttp.RequestCtx) { @@ -268,7 +222,7 @@ func ChatGet(ctx *fasthttp.RequestCtx) { addErrorToCtx(ctx, err) return } - ctx.SetContentType("text/plain; charset=utf-8") + ctx.SetContentType(textContentType) ctx.SetStatusCode(fasthttp.StatusOK) } @@ -278,7 +232,7 @@ func LogGet(ctx *fasthttp.RequestCtx) { addErrorToCtx(ctx, err) return } - ctx.SetContentType("text/plain; charset=utf-8") + ctx.SetContentType(textContentType) ctx.SetStatusCode(fasthttp.StatusOK) } @@ -319,14 +273,7 @@ func UserGet(ctx *fasthttp.RequestCtx) { addErrorToCtx(ctx, err) return } - _, err = ctx.Write(bytes) - if err != nil { - addErrorToCtx(ctx, err) - return - } - - ctx.SetContentType("application/json; charset=utf-8") - ctx.SetStatusCode(fasthttp.StatusOK) + setResponseJson(ctx, bytes) } func UserStashGet(ctx *fasthttp.RequestCtx) { @@ -345,14 +292,7 @@ func WatchGet(ctx *fasthttp.RequestCtx) { addErrorToCtx(ctx, err) return } - _, err = ctx.Write(bytes) - if err != nil { - addErrorToCtx(ctx, err) - return - } - - ctx.SetContentType("application/json; charset=utf-8") - ctx.SetStatusCode(fasthttp.StatusOK) + setResponseJson(ctx, bytes) } func WatchExtendedGet(ctx *fasthttp.RequestCtx) { @@ -388,14 +328,7 @@ func WatchExtendedGet(ctx *fasthttp.RequestCtx) { addErrorToCtx(ctx, err) return } - _, err = ctx.Write(bytes) - if err != nil { - addErrorToCtx(ctx, err) - return - } - - ctx.SetContentType("application/json; charset=utf-8") - ctx.SetStatusCode(fasthttp.StatusOK) + setResponseJson(ctx, bytes) } func Register(ctx *fasthttp.RequestCtx) { @@ -463,13 +396,11 @@ func Register(ctx *fasthttp.RequestCtx) { return } - ctx.SetBody(body) - ctx.SetContentType("application/json; charset=utf-8") - ctx.SetStatusCode(fasthttp.StatusOK) + setResponseJson(ctx, body) } func RegisterUpdate(ctx *fasthttp.RequestCtx) { - auth := ctx.Request.Header.Peek("X-HUSO-AUTH") + auth := ctx.Request.Header.Peek(xHusoAuth) if auth == nil || string(auth) == "" || !strings.Contains(string(ctx.Request.Header.ContentType()), "application/json") { ctx.SetStatusCode(fasthttp.StatusBadRequest) return @@ -532,9 +463,7 @@ func RegisterUpdate(ctx *fasthttp.RequestCtx) { return } - ctx.SetBody(body) - ctx.SetContentType("application/json; charset=utf-8") - ctx.SetStatusCode(fasthttp.StatusOK) + setResponseJson(ctx, body) } func AppointmentPost(ctx *fasthttp.RequestCtx) { @@ -542,7 +471,7 @@ func AppointmentPost(ctx *fasthttp.RequestCtx) { } func ChatPost(ctx *fasthttp.RequestCtx) { - auth := ctx.Request.Header.Peek("X-HUSO-AUTH") + auth := ctx.Request.Header.Peek(xHusoAuth) if ctx.UserValue("id") == nil || ctx.UserValue("user") == nil || auth == nil || string(auth) == "" || !strings.Contains(string(ctx.Request.Header.ContentType()), "text/plain") { ctx.SetStatusCode(fasthttp.StatusBadRequest) return @@ -583,7 +512,7 @@ func ChatPost(ctx *fasthttp.RequestCtx) { addErrorToCtx(ctx, err) return } - ctx.SetContentType("text/plain; charset=utf-8") + ctx.SetContentType(textContentType) ctx.SetStatusCode(fasthttp.StatusOK) } @@ -600,7 +529,7 @@ func AppointmentDelete(ctx *fasthttp.RequestCtx) { } func UnRegister(ctx *fasthttp.RequestCtx) { - auth := ctx.Request.Header.Peek("X-HUSO-AUTH") + auth := ctx.Request.Header.Peek(xHusoAuth) if auth == nil || string(auth) == "" || !strings.Contains(string(ctx.Request.Header.ContentType()), "application/json") { ctx.SetStatusCode(fasthttp.StatusBadRequest) return @@ -651,9 +580,7 @@ func UnRegister(ctx *fasthttp.RequestCtx) { return } - ctx.SetBody(body) - ctx.SetContentType("application/json; charset=utf-8") - ctx.SetStatusCode(fasthttp.StatusOK) + setResponseJson(ctx, body) } func WatchDelete(ctx *fasthttp.RequestCtx) { @@ -720,7 +647,7 @@ func watchGetLogic(ctx *fasthttp.RequestCtx) ([]AnimeUser, error) { } func processUpdateReq(ctx *fasthttp.RequestCtx, update bool) { - auth := ctx.Request.Header.Peek("X-HUSO-AUTH") + auth := ctx.Request.Header.Peek(xHusoAuth) if ctx.UserValue("user") == nil || auth == nil || string(auth) == "" || !strings.Contains(string(ctx.Request.Header.ContentType()), "application/json") { ctx.SetStatusCode(fasthttp.StatusBadRequest) return @@ -788,16 +715,11 @@ func processUpdateReq(ctx *fasthttp.RequestCtx, update bool) { addErrorToCtx(ctx, err) return } - err = writeResponseBody(ctx, data) - if err != nil { - addErrorToCtx(ctx, err) - return - } - ctx.SetContentType("application/json; charset=utf-8") + setResponseJson(ctx, data) } func processUpdateAppointmentReq(ctx *fasthttp.RequestCtx, update bool) { - auth := ctx.Request.Header.Peek("X-HUSO-AUTH") + auth := ctx.Request.Header.Peek(xHusoAuth) if ctx.UserValue("user") == nil || auth == nil || string(auth) == "" || !strings.Contains(string(ctx.Request.Header.ContentType()), "application/json") { ctx.SetStatusCode(fasthttp.StatusBadRequest) return @@ -877,16 +799,11 @@ func processUpdateAppointmentReq(ctx *fasthttp.RequestCtx, update bool) { addErrorToCtx(ctx, err) return } - err = writeResponseBody(ctx, data) - if err != nil { - addErrorToCtx(ctx, err) - return - } - ctx.SetContentType("application/json; charset=utf-8") + setResponseJson(ctx, data) } func processUserStashReq(ctx *fasthttp.RequestCtx, update bool) { - auth := ctx.Request.Header.Peek("X-HUSO-AUTH") + auth := ctx.Request.Header.Peek(xHusoAuth) dataPath := fmt.Sprintf("%s", ctx.UserValue("data")) if auth == nil || string(auth) == "" || dataPath == "" { ctx.SetStatusCode(fasthttp.StatusBadRequest) @@ -930,14 +847,10 @@ func processUserStashReq(ctx *fasthttp.RequestCtx, update bool) { } } -func writeResponseBody(ctx *fasthttp.RequestCtx, bytes []byte) error { - _, err := ctx.Write(bytes) - if err != nil { - return err - } - ctx.SetContentType("application/json; charset=utf-8") +func setResponseJson(ctx *fasthttp.RequestCtx, bytes []byte) { + ctx.SetBody(bytes) + ctx.SetContentType(jsonContentType) ctx.SetStatusCode(fasthttp.StatusOK) - return err } func addErrorToCtx(ctx *fasthttp.RequestCtx, err error) {