/
series.go
84 lines (78 loc) · 2.57 KB
/
series.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
package public
import (
"fmt"
"net/http"
"strconv"
"github.com/labstack/echo/v4"
)
// SeriesByID returns a series with it's immediate children with a SeriesID
//
// @Summary Provides a series
// @Description Returns a series object, including the children videos and series.
// @ID get-public-series
// @Tags public-series
// @Param seriesid path int true "Series ID"
// @Produce json
// @Success 200 {object} public.Series
// @Router /v1/public/series/{seriesid} [get]
func (r *Repos) SeriesByID(c echo.Context) error {
id, err := strconv.Atoi(c.Param("id"))
if err != nil {
return echo.NewHTTPError(http.StatusBadRequest, "Bad series ID")
}
s, err := r.public.GetSeries(c.Request().Context(), id)
if err != nil {
err = fmt.Errorf("Public SeriesByID failed : %w", err)
return echo.NewHTTPError(http.StatusInternalServerError, err)
}
return c.JSON(http.StatusOK, s)
}
// SeriesByYear returns a virtual series containing series / videos made in that year
//
// @Summary Series of a year
// @Description Returns a series array, virtual series that contains child series / videos
// @Description that were made in that year.
// @ID get-public-series-year
// @Tags public-series
// @Param year path int true "Year"
// @Produce json
// @Success 200 {array} public.Series
// @Router /v1/public/series/yearly/{year} [get]
func (r *Repos) SeriesByYear(c echo.Context) error {
year, err := strconv.Atoi(c.Param("year"))
if err != nil {
return echo.NewHTTPError(http.StatusBadRequest, "Bad year")
}
s, err := r.public.SeriesByYear(c.Request().Context(), year)
if err != nil {
err = fmt.Errorf("Public ListSeriesByYear failed : %w", err)
return echo.NewHTTPError(http.StatusInternalServerError, err)
}
return c.JSON(http.StatusOK, s)
}
type SearchInput struct {
Query string `json:"query"`
}
// Search returns a virtual series that contains relevant videos and series
//
// @Summary Search the VOD library
// @Description Returns a virtual series that contains relevant videos and series
// @ID search-vod
// @Tags public-series
// @Param searchInput body SearchInput true "Search Input object"
// @Produce json
// @Success 200 {array} public.Series
// @Router /v1/public/search [post]
func (r *Repos) Search(c echo.Context) error {
searchInput := SearchInput{}
err := c.Bind(&searchInput)
if err != nil {
return echo.NewHTTPError(http.StatusBadRequest, err)
}
s, err := r.public.Search(c.Request().Context(), searchInput.Query)
if err != nil {
err = fmt.Errorf("Public Search failed : %w", err)
return echo.NewHTTPError(http.StatusInternalServerError, err)
}
return c.JSON(http.StatusOK, s)
}