-
Notifications
You must be signed in to change notification settings - Fork 1
/
playback_access_token.go
60 lines (52 loc) · 1.45 KB
/
playback_access_token.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
package twitchgql
import (
"strconv"
"github.com/json-iterator/go"
)
type PlaybackAccessToken struct {
Request PlaybackAccessTokenRequest
Response PlaybackAccessTokenResponse
}
type PlaybackAccessTokenRequest struct {
Params PlaybackAccessTokenRequestParams
Signature bool
Value bool
}
type PlaybackAccessTokenRequestParams struct {
Platform string
PlayerType string
PlayerBackend string
HasAdblock bool
DisableHTTPs bool
}
type PlaybackAccessTokenResponse struct {
Signature string
Value string
}
func (pat *PlaybackAccessToken) RequestParser() (string, error) {
if pat.Request == (PlaybackAccessTokenRequest{}) {
return "", nil
}
query := `playbackAccessToken(params:{`
query += `platform:\"` + pat.Request.Params.Platform + `\",`
query += `playerType:\"` + pat.Request.Params.PlayerType + `\",`
query += `playerBackend:\"` + pat.Request.Params.PlayerBackend + `\",`
query += `hasAdblock:` + strconv.FormatBool(pat.Request.Params.HasAdblock) + `,`
query += `disableHTTPS:` + strconv.FormatBool(pat.Request.Params.DisableHTTPs) + `,`
query += `}){`
if pat.Request.Signature {
query += `signature,`
}
if pat.Request.Value {
query += `value,`
}
return query + `},`, nil
}
func (pat *PlaybackAccessToken) ResponseParser(res []byte) {
if pat.Request.Signature {
pat.Response.Signature = jsoniter.Get(res, "signature").ToString()
}
if pat.Request.Value {
pat.Response.Value = jsoniter.Get(res, "value").ToString()
}
}