// // POST /library/labels // func addLabel(c *echo.Context) error { name := strings.TrimPrefix(form(c, "name"), "label/") if name == "" { return c.String(400, "Name too short") } label := Label{ Name: name, Content: form(c, "content"), Expanded: form(c, "expanded") == "true", } user := c.Get("user").(*User) err := store.SaveLabel(&label, user.ID) if err == ErrLabelExists { return c.String(409, "Existing label") } else if err != nil { return err } return c.JSON(200, addedLabel{ ID: label.ID, Name: label.Name, }) }
func createUser(c *echo.Context) error { u := new(user) if err := c.Bind(u); err != nil { return err } users[u.ID] = *u return c.JSON(http.StatusCreated, u) }
// // GET /library/episode/:id // func getEpisode(c *echo.Context) error { id, err := strconv.ParseUint(c.Param("id"), 10, 64) if err != nil { return c.NoContent(400) } return c.JSON(200, store.GetEpisode(id)) }
func updateUser(c *echo.Context) error { u := new(user) if err := c.Bind(u); err != nil { return err } id, _ := strconv.Atoi(c.Param("id")) users[id].Name = u.Name return c.JSON(http.StatusOK, users[id]) }
func createUser(c *echo.Context) error { u := &user{ ID: seq, } if err := c.Bind(u); err != nil { return err } users[u.ID] = u seq++ return c.JSON(http.StatusCreated, u) }
// // POST /library/casts // func addCast(c *echo.Context) error { user := c.Get("user").(*User) url := form(c, "feedurl") cast := store.GetCastByURL(url) if cast == nil { cast = <-crawl.fetch(url) if cast == nil { return c.String(500, "Could not fetch feed") } } user, err := store.AddSubscription(user.ID, cast.ID) if err != nil && err != ErrSubscriptionExists { return err } authCache.set(c.Get("token").(string), user) return c.JSON(200, cast) }
// // GET /library/newepisodes // func getNewEpisodes(c *echo.Context) error { now := time.Now().Unix() user := c.Get("user").(*User) since := c.Request().URL.Query().Get("since") if since == "" { return c.JSON(200, newEpisodes{ Timestamp: now, Episodes: store.GetEpisodesSince(0, user.Subscriptions), }) } ts, err := strconv.ParseInt(since, 10, 64) if err != nil { return c.NoContent(400) } return c.JSON(200, newEpisodes{ Timestamp: now, Episodes: store.GetEpisodesSince(ts, user.Subscriptions), }) }
// // POST /account/login // func login(c *echo.Context) error { if !formContains(c, "username", "password", "uuid", "clientname") { return echo.NewHTTPError(400) } user := store.GetUser(form(c, "username")) if user == nil { return echo.NewHTTPError(401) } if correctPassword(user.Password, form(c, "password")) { uuid := form(c, "uuid") for _, client := range user.Clients { if uuid == client.UUID { return c.JSON(200, token{client.Token}) } } t, err := createToken(32) if err != nil { return err } err = store.AddClient(user.ID, &Client{ Token: t, UUID: uuid, Name: form(c, "clientname"), }) if err != nil { return err } return c.JSON(200, token{t}) } return echo.NewHTTPError(401) }
// // GET /library/events // func getEvents(c *echo.Context) error { now := time.Now().Unix() var err error var ts uint64 since := c.Request().URL.Query().Get("since") if since != "" { ts, err = strconv.ParseUint(since, 10, 64) if err != nil { return c.NoContent(400) } } user := c.Get("user").(*User) uuid := "" excludeSelf := c.Request().URL.Query().Get("exclude_self") if excludeSelf == "true" { uuid = c.Get("uuid").(string) } return c.JSON(200, events{ Timestamp: now, Events: store.GetEvents(user.ID, ts, uuid), }) }
// // GET /library/casts // func getCasts(c *echo.Context) error { user := c.Get("user").(*User) return c.JSON(200, store.GetCastsByID(user.Subscriptions)) }
// // GET /account/settings // func getSettings(c *echo.Context) error { user := c.Get("user").(*User) uuid := c.Get("uuid").(string) return c.JSON(200, store.GetSettings(user.ID, uuid)) }
func getUser(c *echo.Context) error { id, _ := strconv.Atoi(c.Param("id")) return c.JSON(http.StatusOK, users[id]) }
func getUser(c *echo.Context) error { return c.JSON(http.StatusOK, users[c.P(0)]) }
func getUsers(c *echo.Context) error { return c.JSON(http.StatusOK, users) }
// // GET /library/labels // func getLabels(c *echo.Context) error { user := c.Get("user").(*User) return c.JSON(200, store.GetLabels(user.ID)) }