+1
-2
src/rocksky.gleam
+1
-2
src/rocksky.gleam
+12
-5
src/rocksky/client/base.gleam
+12
-5
src/rocksky/client/base.gleam
···
3
3
import gleam/http/request.{type Request}
4
4
import gleam/http/response.{type Response}
5
5
import gleam/httpc
6
-
import gleam/option.{type Option}
6
+
import gleam/option.{type Option, None}
7
7
import gleam/string
8
8
import rocksky/errors.{type ApiError}
9
9
···
13
13
Client(
14
14
base_url: String,
15
15
access_token: Option(String),
16
+
api_key: Option(String),
16
17
timeout_ms: Option(Int),
17
18
http_client: fn(Request(String)) ->
18
19
Result(Response(String), httpc.HttpError),
19
20
)
20
21
}
21
22
22
-
pub fn new(access_token: Option(String), timeout_ms: Option(Int)) -> Client {
23
+
pub fn new() -> Client {
24
+
let http_client = fn(req) { httpc.send(req) }
25
+
Client(base_url, None, None, None, http_client)
26
+
}
27
+
28
+
pub fn from_url(base_url: String) -> Client {
23
29
let http_client = fn(req) { httpc.send(req) }
24
-
Client(base_url, access_token:, timeout_ms:, http_client:)
30
+
Client(base_url, None, None, None, http_client)
25
31
}
26
32
27
-
pub fn from_url(
33
+
pub fn from_opts(
28
34
base_url: String,
29
35
access_token: Option(String),
36
+
api_key: Option(String),
30
37
timeout_ms: Option(Int),
31
38
) -> Client {
32
39
let http_client = fn(req) { httpc.send(req) }
33
-
Client(base_url:, access_token:, timeout_ms:, http_client:)
40
+
Client(base_url:, access_token:, api_key:, timeout_ms:, http_client:)
34
41
}
35
42
36
43
pub fn get(
+13
-13
test/rocksky_test.gleam
+13
-13
test/rocksky_test.gleam
···
20
20
}
21
21
22
22
pub fn get_user_test() {
23
-
let client = base.from_url(base_url, None, None)
23
+
let client = base.from_url(base_url)
24
24
25
25
users.new(client)
26
26
|> users.get_user("tsiry-sandratraina.comm")
···
46
46
}
47
47
48
48
pub fn get_albums_test() {
49
-
let client = base.from_url(base_url, None, None)
49
+
let client = base.from_url(base_url)
50
50
51
51
albums.new(client)
52
52
|> albums.get_albums(Some("tsiry-sandratraina.com"), pagination.Default)
···
72
72
}
73
73
74
74
pub fn get_albums_pagination_test() {
75
-
let client = base.from_url(base_url, None, None)
75
+
let client = base.from_url(base_url)
76
76
77
77
albums.new(client)
78
78
|> albums.get_albums(
···
83
83
}
84
84
85
85
pub fn get_artists_test() {
86
-
let client = base.from_url(base_url, None, None)
86
+
let client = base.from_url(base_url)
87
87
88
88
artists.new(client)
89
89
|> artists.get_artists(Some("tsiry-sandratraina.com"), pagination.Default)
···
109
109
}
110
110
111
111
pub fn get_artists_pagination_test() {
112
-
let client = base.from_url(base_url, None, None)
112
+
let client = base.from_url(base_url)
113
113
114
114
artists.new(client)
115
115
|> artists.get_artists(
···
120
120
}
121
121
122
122
pub fn get_tracks_test() {
123
-
let client = base.from_url(base_url, None, None)
123
+
let client = base.from_url(base_url)
124
124
125
125
tracks.new(client)
126
126
|> tracks.get_tracks(Some("tsiry-sandratraina.com"), pagination.Default)
···
146
146
}
147
147
148
148
pub fn get_tracks_pagination_test() {
149
-
let client = base.from_url(base_url, None, None)
149
+
let client = base.from_url(base_url)
150
150
151
151
tracks.new(client)
152
152
|> tracks.get_tracks(
···
157
157
}
158
158
159
159
pub fn get_scrobbles_test() {
160
-
let client = base.from_url(base_url, None, None)
160
+
let client = base.from_url(base_url)
161
161
162
162
scrobbles.new(client)
163
163
|> scrobbles.get_scrobbles(Some("tsiry-sandratraina.com"), pagination.Default)
···
183
183
}
184
184
185
185
pub fn get_scrobbles_pagination_test() {
186
-
let client = base.from_url(base_url, None, None)
186
+
let client = base.from_url(base_url)
187
187
188
188
scrobbles.new(client)
189
189
|> scrobbles.get_scrobbles(
···
194
194
}
195
195
196
196
pub fn search_test() {
197
-
let client = base.from_url(base_url, None, None)
197
+
let client = base.from_url(base_url)
198
198
199
199
resource.new(client, "/search")
200
200
|> resource.search("daft punk")
···
202
202
}
203
203
204
204
pub fn get_album_test() {
205
-
let client = base.from_url(base_url, None, None)
205
+
let client = base.from_url(base_url)
206
206
207
207
albums.new(client)
208
208
|> albums.get_album(
···
218
218
}
219
219
220
220
pub fn get_artist_test() {
221
-
let client = base.from_url(base_url, None, None)
221
+
let client = base.from_url(base_url)
222
222
223
223
artists.new(client)
224
224
|> artists.get_artist(
···
234
234
}
235
235
236
236
pub fn get_track_test() {
237
-
let client = base.from_url(base_url, None, None)
237
+
let client = base.from_url(base_url)
238
238
239
239
tracks.new(client)
240
240
|> tracks.get_track(