1
1
package radiko
2
2
3
3
import (
4
- "bytes"
5
4
"context"
6
5
"encoding/base64"
7
6
"errors"
8
7
"fmt"
9
- "io"
10
8
"io/ioutil"
11
9
"strconv"
12
10
"strings"
13
11
)
14
12
15
13
// AuthorizeToken returns an enables auth_token and error,
16
14
// and sets auth_token in Client.
17
- // Is is a alias function that wraps Auth1Fms and Auth2Fms .
15
+ // Is is a alias function that wraps Auth1 and Auth2 .
18
16
func (c * Client ) AuthorizeToken (ctx context.Context ) (string , error ) {
19
- bin , err := downloadBinary ( )
17
+ authToken , length , offset , err := c . Auth1 ( ctx )
20
18
if err != nil {
21
19
return "" , err
22
20
}
23
21
24
- f := bytes .NewReader (bin )
22
+ b := radikoAuthkeyValue [offset : offset + length ]
23
+ partialKey := base64 .StdEncoding .EncodeToString ([]byte (b ))
25
24
26
- authToken , length , offset , err := c .Auth1Fms (ctx )
25
+ slc , err := c .Auth2 (ctx , authToken , partialKey )
27
26
if err != nil {
28
27
return "" , err
29
28
}
30
-
31
- b := make ([]byte , length )
32
- io .CopyN (ioutil .Discard , f , offset )
33
- if _ , err = f .Read (b ); err != nil {
34
- return "" , err
35
- }
36
- partialKey := base64 .StdEncoding .EncodeToString (b )
37
-
38
- slc , err := c .Auth2Fms (ctx , authToken , partialKey )
39
- if err != nil {
40
- return "" , err
41
- }
42
- if err := verifyAuth2FmsResponse (slc ); err != nil {
29
+ if err := verifyAuth2Response (slc ); err != nil {
43
30
return "" , err
44
31
}
45
32
46
33
c .setAuthTokenHeader (authToken )
47
34
return authToken , nil
48
35
}
49
36
50
- // Auth1Fms returns authToken, keyLength, keyOffset and error.
51
- func (c * Client ) Auth1Fms (ctx context.Context ) (string , int64 , int64 , error ) {
52
- apiEndpoint := apiPath (apiV2 , "auth1_fms " )
37
+ // Auth1 returns authToken, keyLength, keyOffset and error.
38
+ func (c * Client ) Auth1 (ctx context.Context ) (string , int64 , int64 , error ) {
39
+ apiEndpoint := apiPath (apiV2 , "auth1 " )
53
40
54
- req , err := c .newRequest (ctx , "POST " , apiEndpoint , & Params {
41
+ req , err := c .newRequest (ctx , "GET " , apiEndpoint , & Params {
55
42
header : map [string ]string {
56
43
radikoAppHeader : radikoApp ,
57
44
radikoAppVersionHeader : radikoAppVersion ,
@@ -85,14 +72,12 @@ func (c *Client) Auth1Fms(ctx context.Context) (string, int64, int64, error) {
85
72
return authToken , length , offset , err
86
73
}
87
74
88
- // Auth2Fms enables the given authToken.
89
- func (c * Client ) Auth2Fms (ctx context.Context , authToken , partialKey string ) ([]string , error ) {
90
- apiEndpoint := apiPath (apiV2 , "auth2_fms " )
75
+ // Auth2 enables the given authToken.
76
+ func (c * Client ) Auth2 (ctx context.Context , authToken , partialKey string ) ([]string , error ) {
77
+ apiEndpoint := apiPath (apiV2 , "auth2 " )
91
78
92
- req , err := c .newRequest (ctx , "POST " , apiEndpoint , & Params {
79
+ req , err := c .newRequest (ctx , "GET " , apiEndpoint , & Params {
93
80
header : map [string ]string {
94
- radikoAppHeader : radikoApp ,
95
- radikoAppVersionHeader : radikoAppVersion ,
96
81
radikoUserHeader : radikoUser ,
97
82
radikoDeviceHeader : radikoDevice ,
98
83
radikoAuthTokenHeader : authToken ,
@@ -118,7 +103,7 @@ func (c *Client) Auth2Fms(ctx context.Context, authToken, partialKey string) ([]
118
103
return s , nil
119
104
}
120
105
121
- func verifyAuth2FmsResponse (slc []string ) error {
106
+ func verifyAuth2Response (slc []string ) error {
122
107
if len (slc ) == 0 {
123
108
return errors .New ("missing token" )
124
109
}
0 commit comments