package api import ( "net/http" "github.com/gin-gonic/gin" ) func (server *ApiServer) loadEndpoints() { server.engine.GET("/ping", func(c *gin.Context) { c.JSON(http.StatusOK, gin.H{ "message": "pong", }) }) // info for user-end html pages serverInfo := ServerInfo{ ClientID: server.conf.ClientID, AuthParams: TwitchAuthParams{ ClientID: server.conf.ClientID, ForceVerify: false, RedirectURI: server.conf.RedirectURI, ResponseType: "code", Scope: []string{ "bits:read", "channel:bot", "channel:read:goals", "channel:read:hype_train", "channel:read:polls", "channel:manage:polls", "channel:read:predictions", "channel:manage:predictions", "channel:read:redemptions", "channel:manage:redemptions", "channel:read:vips", "channel:moderate", "user:bot", "user:read:broadcast", "user:read:chat", "user:read:emotes", "user:write:chat", }, State: "", // TODO make this unique per request }, } server.engine.GET("/info", func(c *gin.Context) { c.JSON(http.StatusOK, serverInfo) }) server.engine.GET("/auth", func(c *gin.Context) { // TODO auth response from twitch // parse args as TwitchAuthRespOk or TwitchAuthRespErr c.JSON(http.StatusOK, serverInfo) }) } type ServerInfo struct { ClientID string `json:"client_id"` AuthParams TwitchAuthParams `json:"auth_params"` } type TwitchAuthParams struct { ClientID string `json:"client_id"` ForceVerify bool `json:"force_verify"` RedirectURI string `json:"redirect_uri"` ResponseType string `json:"response_type"` Scope []string `json:"scope"` State string `json:"state"` } type TwitchAuthRespOk struct { Code string `json:"code"` Scope string `json:"scope"` State string `json:"state"` } type TwitchAuthRespErr struct { Err string `json:"error"` ErrDesc string `json:"error_description"` State string `json:"state"` }