Diffstat (limited to 'internal/router/handlers/api-v1-map-get.go')
| -rw-r--r-- | internal/router/handlers/api-v1-map-get.go | 116 |
1 files changed, 0 insertions, 116 deletions
diff --git a/internal/router/handlers/api-v1-map-get.go b/internal/router/handlers/api-v1-map-get.go deleted file mode 100644 index e19c54a..0000000 --- a/internal/router/handlers/api-v1-map-get.go +++ /dev/null @@ -1,116 +0,0 @@ -package handlers - -import ( - "fmt" - "log/slog" - "slices" - "strconv" - "strings" - - "github.com/SayaAndy/saya-today-web/internal/blog" - "github.com/SayaAndy/saya-today-web/internal/router" - "github.com/gofiber/fiber/v2" -) - -type GetMapHandler struct { - router.BasicHandler -} - -func init() { - router.Routes = append(router.Routes, &GetMapHandler{}) -} - -func (r *GetMapHandler) Filter() (method string, path string) { - return "GET", "/api/v1/map" -} - -func (r *GetMapHandler) IsTemplated() bool { - return false -} - -func (r *GetMapHandler) TemplatesToInject() []string { - return []string{"views/partials/global-map-widget.html"} -} - -func (r *GetMapHandler) ToCache() router.CacheSetting { - return router.ByUrlAndQuery -} - -func (r *GetMapHandler) ToValidateLang() router.LangSetting { - return router.InReferer -} - -func (r *GetMapHandler) Render(c *fiber.Ctx, supplements *router.Supplements, lang string, templateMap fiber.Map) (statusCode int, err error) { - codename := c.Query("codename") - zoom := c.QueryInt("zoom", 4) - zoomPosition := c.Query("zoomPosition") - - pages, err := supplements.BlogClient.Scan(lang + "/") - status := fiber.StatusOK - if err != nil { - slog.Error("received an error while scanning blog pages", - slog.String("error", err.Error()), - slog.String("lang", lang), - ) - status = fiber.StatusPartialContent - pages = []*blog.Page{} - } - slices.SortFunc(pages, func(a *blog.Page, b *blog.Page) int { - return a.Metadata.PublishedTime.Compare(b.Metadata.PublishedTime) - }) - - type MapMarker struct { - Index int `json:"Index"` - Title string `json:"Title"` - PageLink string `json:"PageLink"` - Lat float64 `json:"Lat"` - Long float64 `json:"Long"` - AccuracyMeters int64 `json:"AccuracyMeters"` - Thumbnail string `json:"Thumbnail"` - ToHighlight bool `json:"ToHighlight"` - } - - templateMap["MapLocationLat"] = 45.4507 - templateMap["MapLocationLong"] = 68.8319 - templateMap["MapLocationZoom"] = zoom - templateMap["ZoomPosition"] = zoomPosition - - mapMarkers := make([]*MapMarker, 0, len(pages)) - for i, page := range pages { - geolocationParts := strings.Split(page.Metadata.Geolocation, " ") - if len(geolocationParts) < 2 { - continue - } - - var x, y float64 - var areaError int64 - if len(geolocationParts) >= 2 { - x, _ = strconv.ParseFloat(geolocationParts[0], 64) - y, _ = strconv.ParseFloat(geolocationParts[1], 64) - } - if len(geolocationParts) >= 3 { - areaError, _ = strconv.ParseInt(geolocationParts[2], 10, 64) - } - - toHighlight := page.FileName == codename - if toHighlight { - templateMap["MapLocationLat"] = x - templateMap["MapLocationLong"] = y - } - - mapMarkers = append(mapMarkers, &MapMarker{ - Index: i, - Title: page.Metadata.Title, - PageLink: fmt.Sprintf("/%s/blog/%s", lang, page.FileName), - Lat: x, - Long: y, - AccuracyMeters: areaError, - Thumbnail: page.Metadata.Thumbnail, - ToHighlight: toHighlight, - }) - } - - templateMap["MapMarkers"] = mapMarkers - - return status, nil -} |