this repo has no description
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

at 646c17e2a0b8a8a7f116a6d0972b4cdabdf01938 61 lines 1.3 kB view raw
1package main 2 3import ( 4 "net/http" 5 6 "github.com/labstack/echo/v4" 7 "github.com/labstack/echo/v4/middleware" 8 "github.com/edavis/bsky-feeds/mostliked" 9) 10 11type SkeletonRequest struct { 12 Feed string `query:"feed"` 13 Limit int64 `query:"limit"` 14 Offset string `query:"offset"` 15} 16 17type SkeletonResponse struct { 18 Cursor string `json:"cursor,omitempty"` 19 Feed []Post `json:"feed"` 20} 21 22type Post struct { 23 Uri string `json:"post"` 24} 25 26type SkeletonHeader struct { 27 Langs []string `header:"Accept-Language"` 28} 29 30func getFeedSkeleton(c echo.Context) error { 31 var req SkeletonRequest 32 if err := c.Bind(&req); err != nil { 33 return c.String(http.StatusBadRequest, "bad request") 34 } 35 var hdr SkeletonHeader 36 if err := (&echo.DefaultBinder{}).BindHeaders(c, &hdr); err != nil { 37 return c.String(http.StatusBadRequest, "bad request") 38 } 39 40 var posts []Post 41 uris := mostliked.Feed(mostliked.FeedViewParams{ 42 Limit: req.Limit, 43 Offset: req.Offset, 44 Langs: hdr.Langs, 45 }) 46 for _, uri := range uris { 47 posts = append(posts, Post{uri}) 48 } 49 response := SkeletonResponse{ 50 Feed: posts, 51 } 52 return c.JSON(http.StatusOK, response) 53} 54 55func main() { 56 e := echo.New() 57 e.Use(middleware.Logger()) 58 e.Use(middleware.Recover()) 59 e.GET("/xrpc/app.bsky.feed.getFeedSkeleton", getFeedSkeleton) 60 e.Logger.Fatal(e.Start(":5000")) 61}