twitchrb 1.1.0 → 1.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.github/workflows/ci.yml +2 -2
- data/Gemfile.lock +4 -2
- data/README.md +31 -24
- data/lib/twitch/client.rb +5 -3
- data/lib/twitch/resources/channels.rb +3 -3
- data/lib/twitch/resources/clips.rb +4 -4
- data/lib/twitch/resources/games.rb +20 -7
- data/lib/twitch/resources/users.rb +22 -7
- data/lib/twitch/resources/videos.rb +12 -5
- data/lib/twitch/version.rb +1 -1
- metadata +7 -7
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 62be7346346cf921307a581b64b68bd364342b81a93e334b4fbf1ffd8198b6c2
|
4
|
+
data.tar.gz: 6d4a106e899173699181fd01e0be36d2461287b6c8520d83293421a2e6a5704c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: aa82df2fb8d72bfd37b36abfaa51c01bc0159ff764fa2f2f7da927b04166bb4d3b5fbe1023cd3d8a0a36689d39707743d9b2c1fcffe1615de2606a739cf4685b
|
7
|
+
data.tar.gz: 18faf9bc25f3d9d98910434835d73c02e5f0acd3a942639ee72ae0759b07c0b8f2035d56b11486c27b50e2fbb16292ad8d99002f3a1236160ef950a4829422ef
|
data/.github/workflows/ci.yml
CHANGED
@@ -7,12 +7,12 @@ jobs:
|
|
7
7
|
fail-fast: false
|
8
8
|
matrix:
|
9
9
|
ruby_version:
|
10
|
-
- 2.6
|
11
10
|
- 2.7
|
12
11
|
- 3.0
|
13
12
|
- 3.1
|
13
|
+
- 3.2
|
14
14
|
steps:
|
15
|
-
- uses: actions/checkout@
|
15
|
+
- uses: actions/checkout@v3
|
16
16
|
- uses: ruby/setup-ruby@v1
|
17
17
|
with:
|
18
18
|
ruby-version: ${{ matrix.ruby_version }}
|
data/Gemfile.lock
CHANGED
@@ -1,14 +1,16 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
twitchrb (1.
|
4
|
+
twitchrb (1.2.0)
|
5
5
|
faraday (~> 2.0)
|
6
6
|
|
7
7
|
GEM
|
8
8
|
remote: https://rubygems.org/
|
9
9
|
specs:
|
10
|
+
base64 (0.1.1)
|
10
11
|
dotenv (2.7.6)
|
11
|
-
faraday (2.7.
|
12
|
+
faraday (2.7.11)
|
13
|
+
base64
|
12
14
|
faraday-net_http (>= 2.0, < 3.1)
|
13
15
|
ruby2_keywords (>= 0.0.4)
|
14
16
|
faraday-net_http (3.0.2)
|
data/README.md
CHANGED
@@ -26,23 +26,23 @@ An access token is required because the Helix API requires authentication.
|
|
26
26
|
|
27
27
|
```ruby
|
28
28
|
# Retrieves a user by their ID
|
29
|
-
@client.users.
|
29
|
+
@client.users.retrieve(id: 141981764)
|
30
|
+
|
31
|
+
# Retrieves multiple users by their IDs
|
32
|
+
# Requires an array of IDs
|
33
|
+
@client.users.retrieve(ids: [141981764, 72938118])
|
30
34
|
|
31
35
|
# Retrieves a user by their username
|
32
|
-
@client.users.
|
36
|
+
@client.users.retrieve(username: "twitchdev")
|
37
|
+
|
38
|
+
# Retrieves multiple users by their usernames
|
39
|
+
# Requires an array of IDs
|
40
|
+
@client.users.retrieve(usernames: ["twitchdev", "deanpcmad"])
|
33
41
|
|
34
42
|
# Update the currently authenticated user's description
|
35
43
|
# Required scope: user:edit
|
36
44
|
@client.users.update(description: "New Description")
|
37
45
|
|
38
|
-
# Deprecated. Please look at using channels.followed or channels.followers
|
39
|
-
# Shows users who follow or are following a user ID
|
40
|
-
@client.users.follows(from_id: 141981764)
|
41
|
-
@client.users.follows(to_id: 141981764)
|
42
|
-
|
43
|
-
# A quick method for seeing if a user is following a channel
|
44
|
-
@client.users.following?(from_id: 141981764, to_id: 141981764)
|
45
|
-
|
46
46
|
# Returns Blocked users for a broadcaster
|
47
47
|
# Required scope: user:read:blocked_users
|
48
48
|
@client.users.blocks(broadcaster_id: 141981764)
|
@@ -74,7 +74,7 @@ An access token is required because the Helix API requires authentication.
|
|
74
74
|
|
75
75
|
```ruby
|
76
76
|
# Retrieve a channel by their ID
|
77
|
-
@client.channels.
|
77
|
+
@client.channels.retrieve(id: 141981764)
|
78
78
|
|
79
79
|
# Retrieve a list of broadcasters a specified user follows
|
80
80
|
# user_id must match the currently authenticated user
|
@@ -82,7 +82,8 @@ An access token is required because the Helix API requires authentication.
|
|
82
82
|
@client.channels.followed user_id: 123123
|
83
83
|
|
84
84
|
# Retrieve a list of users that follow a specified broadcaster
|
85
|
-
# broadcaster_id must match the currently authenticated user
|
85
|
+
# broadcaster_id must match the currently authenticated user or
|
86
|
+
# a moderator of the specified broadcaster
|
86
87
|
# Required scope: moderator:read:followers
|
87
88
|
@client.channels.followers broadcaster_id: 123123
|
88
89
|
|
@@ -107,18 +108,19 @@ attributes = {title: "My new title"}
|
|
107
108
|
|
108
109
|
```ruby
|
109
110
|
# Retrieves a list of videos
|
110
|
-
# Available parameters:
|
111
|
-
@client.videos.list(id: 12345)
|
111
|
+
# Available parameters: user_id or game_id
|
112
112
|
@client.videos.list(user_id: 12345)
|
113
113
|
@client.videos.list(game_id: 12345)
|
114
|
+
|
115
|
+
# Retrieves a video by its ID
|
116
|
+
@client.videos.retrieve(id: 12345)
|
114
117
|
```
|
115
118
|
|
116
119
|
### Clips
|
117
120
|
|
118
121
|
```ruby
|
119
122
|
# Retrieves a list of clips
|
120
|
-
# Available parameters:
|
121
|
-
@client.clips.list(id: 12345)
|
123
|
+
# Available parameters: broadcaster_id or game_id
|
122
124
|
@client.clips.list(user_id: 12345)
|
123
125
|
@client.clips.list(game_id: 12345)
|
124
126
|
|
@@ -157,19 +159,24 @@ attributes = {title: "My new title"}
|
|
157
159
|
### Games
|
158
160
|
|
159
161
|
```ruby
|
160
|
-
# Retrieves a game by
|
161
|
-
@client.games.
|
162
|
+
# Retrieves a game by ID
|
163
|
+
@client.games.retrieve(id: 514974)
|
164
|
+
|
165
|
+
# Retrieves multiple games by IDs
|
166
|
+
# Requires an array of IDs
|
167
|
+
@client.games.retrieve(ids: [66402, 514974])
|
162
168
|
|
163
|
-
# Retrieves a game by
|
164
|
-
@client.games.
|
169
|
+
# Retrieves a game by name
|
170
|
+
@client.games.retrieve(name: "Battlefield 4")
|
165
171
|
|
166
|
-
# Retrieves
|
167
|
-
|
172
|
+
# Retrieves multiple games by names
|
173
|
+
# Requires an array of IDs
|
174
|
+
@client.games.retrieve(names: ["Battlefield 4", "Battlefield 2042"])
|
168
175
|
```
|
169
176
|
|
170
177
|
## EventSub Subscriptions
|
171
178
|
|
172
|
-
These require an application OAuth access token.
|
179
|
+
These require an application OAuth access token.
|
173
180
|
|
174
181
|
```ruby
|
175
182
|
# Retrieves a list of EventSub Subscriptions
|
@@ -291,7 +298,7 @@ These require an application OAuth access token.
|
|
291
298
|
## Raids
|
292
299
|
|
293
300
|
```ruby
|
294
|
-
# Starts a raid
|
301
|
+
# Starts a raid
|
295
302
|
# Requires channel:manage:raids
|
296
303
|
# from_broadcaster_id must be the authenticated user
|
297
304
|
@client.raids.create from_broadcaster_id: 123, to_broadcaster_id: 321
|
data/lib/twitch/client.rb
CHANGED
@@ -36,7 +36,7 @@ module Twitch
|
|
36
36
|
def videos
|
37
37
|
VideosResource.new(self)
|
38
38
|
end
|
39
|
-
|
39
|
+
|
40
40
|
def clips
|
41
41
|
ClipsResource.new(self)
|
42
42
|
end
|
@@ -152,12 +152,14 @@ module Twitch
|
|
152
152
|
def connection
|
153
153
|
@connection ||= Faraday.new(BASE_URL) do |conn|
|
154
154
|
conn.request :authorization, :Bearer, access_token
|
155
|
-
|
155
|
+
|
156
|
+
conn.options.params_encoder = Faraday::FlatParamsEncoder
|
157
|
+
|
156
158
|
conn.headers = {
|
157
159
|
"User-Agent" => "twitchrb/v#{VERSION} (github.com/deanpcmad/twitchrb)",
|
158
160
|
"Client-ID": client_id
|
159
161
|
}
|
160
|
-
|
162
|
+
|
161
163
|
conn.request :json
|
162
164
|
|
163
165
|
conn.response :json, content_type: "application/json"
|
@@ -1,8 +1,8 @@
|
|
1
1
|
module Twitch
|
2
2
|
class ChannelsResource < Resource
|
3
|
-
|
4
|
-
def
|
5
|
-
Channel.new get_request("channels?broadcaster_id=#{
|
3
|
+
|
4
|
+
def retrieve(id:)
|
5
|
+
Channel.new get_request("channels?broadcaster_id=#{id}").body.dig("data")[0]
|
6
6
|
end
|
7
7
|
|
8
8
|
# Retrieve a list of broadcasters a specified user follows
|
@@ -1,21 +1,21 @@
|
|
1
1
|
module Twitch
|
2
2
|
class ClipsResource < Resource
|
3
|
-
|
3
|
+
|
4
4
|
def list(**params)
|
5
|
-
raise "
|
5
|
+
raise "broadcaster_id or game_id is required" unless !params[:broadcaster_id].nil? || !params[:game_id].nil?
|
6
6
|
|
7
7
|
response = get_request("clips", params: params)
|
8
8
|
Collection.from_response(response, type: Clip)
|
9
9
|
end
|
10
10
|
|
11
11
|
def retrieve(id:)
|
12
|
-
Clip.new get_request("clips
|
12
|
+
Clip.new get_request("clips", params: {id: id}).body.dig("data")[0]
|
13
13
|
end
|
14
14
|
|
15
15
|
# Required scope: clips:edit
|
16
16
|
def create(broadcaster_id:, **attributes)
|
17
17
|
response = post_request("clips", body: attributes.merge(broadcaster_id: broadcaster_id))
|
18
|
-
|
18
|
+
|
19
19
|
Clip.new(response.body.dig("data")[0]) if response.success?
|
20
20
|
end
|
21
21
|
|
@@ -1,14 +1,27 @@
|
|
1
1
|
module Twitch
|
2
2
|
class GamesResource < Resource
|
3
3
|
|
4
|
-
def
|
5
|
-
|
6
|
-
Collection.from_response(response, type: Game)
|
7
|
-
end
|
4
|
+
def retrieve(id: nil, ids: nil, name: nil, names: nil)
|
5
|
+
raise "Either id, ids, name or names is required" unless !id.nil? || !ids.nil? || !name.nil? || !names.nil?
|
8
6
|
|
9
|
-
|
10
|
-
|
11
|
-
|
7
|
+
if id
|
8
|
+
response = get_request("games", params: {id: id})
|
9
|
+
elsif ids
|
10
|
+
response = get_request("games", params: {id: ids})
|
11
|
+
elsif names
|
12
|
+
response = get_request("games", params: {name: names})
|
13
|
+
else
|
14
|
+
response = get_request("games", params: {name: name})
|
15
|
+
end
|
16
|
+
|
17
|
+
body = response.body.dig("data")
|
18
|
+
if body.count == 1
|
19
|
+
Game.new body[0]
|
20
|
+
elsif body.count > 1
|
21
|
+
Collection.from_response(response, type: Game)
|
22
|
+
else
|
23
|
+
return nil
|
24
|
+
end
|
12
25
|
end
|
13
26
|
|
14
27
|
def top(**params)
|
@@ -1,12 +1,27 @@
|
|
1
1
|
module Twitch
|
2
2
|
class UsersResource < Resource
|
3
|
-
|
4
|
-
def get_by_id(user_id:)
|
5
|
-
User.new get_request("users?id=#{user_id}").body.dig("data")[0]
|
6
|
-
end
|
7
3
|
|
8
|
-
def
|
9
|
-
|
4
|
+
def retrieve(id: nil, ids: nil, username: nil, usernames: nil)
|
5
|
+
raise "Either id, ids, username or usernames is required" unless !id.nil? || !ids.nil? || !username.nil? || !usernames.nil?
|
6
|
+
|
7
|
+
if id
|
8
|
+
response = get_request("users", params: {id: id})
|
9
|
+
elsif ids
|
10
|
+
response = get_request("users", params: {id: ids})
|
11
|
+
elsif usernames
|
12
|
+
response = get_request("users", params: {login: usernames})
|
13
|
+
else
|
14
|
+
response = get_request("users", params: {login: username})
|
15
|
+
end
|
16
|
+
|
17
|
+
body = response.body.dig("data")
|
18
|
+
if body.count == 1
|
19
|
+
User.new body[0]
|
20
|
+
elsif body.count > 1
|
21
|
+
Collection.from_response(response, type: User)
|
22
|
+
else
|
23
|
+
return nil
|
24
|
+
end
|
10
25
|
end
|
11
26
|
|
12
27
|
# Updates the current users description
|
@@ -38,7 +53,7 @@ module Twitch
|
|
38
53
|
# Deprecated.
|
39
54
|
def follows(**params)
|
40
55
|
warn "`users.follows` is deprecated. Use `channels.followers` or `channels.following` instead."
|
41
|
-
|
56
|
+
|
42
57
|
raise "from_id or to_id is required" unless !params[:from_id].nil? || !params[:to_id].nil?
|
43
58
|
|
44
59
|
response = get_request("users/follows", params: params)
|
@@ -1,17 +1,24 @@
|
|
1
1
|
module Twitch
|
2
2
|
class VideosResource < Resource
|
3
|
-
|
3
|
+
|
4
4
|
def list(**params)
|
5
|
-
raise "
|
5
|
+
raise "user_id or game_id is required" unless !params[:user_id].nil? || !params[:game_id].nil?
|
6
6
|
|
7
7
|
response = get_request("videos", params: params)
|
8
8
|
Collection.from_response(response, type: Video)
|
9
9
|
end
|
10
10
|
|
11
|
+
def retrieve(id:)
|
12
|
+
response = get_request("videos", params: {id: id})
|
13
|
+
if response.body
|
14
|
+
Video.new response.body["data"].first
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
11
18
|
# Required scope: channel:manage:videos
|
12
|
-
|
13
|
-
|
14
|
-
|
19
|
+
def delete(video_id:)
|
20
|
+
delete_request("videos?id=#{video_id}")
|
21
|
+
end
|
15
22
|
|
16
23
|
end
|
17
24
|
end
|
data/lib/twitch/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: twitchrb
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Dean Perry
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2023-
|
11
|
+
date: 2023-10-29 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: faraday
|
@@ -24,7 +24,7 @@ dependencies:
|
|
24
24
|
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: '2.0'
|
27
|
-
description:
|
27
|
+
description:
|
28
28
|
email:
|
29
29
|
- dean@deanpcmad.com
|
30
30
|
executables: []
|
@@ -128,7 +128,7 @@ licenses:
|
|
128
128
|
metadata:
|
129
129
|
homepage_uri: https://deanpcmad.com
|
130
130
|
source_code_uri: https://github.com/deanpcmad/twitchrb
|
131
|
-
post_install_message:
|
131
|
+
post_install_message:
|
132
132
|
rdoc_options: []
|
133
133
|
require_paths:
|
134
134
|
- lib
|
@@ -143,8 +143,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
143
143
|
- !ruby/object:Gem::Version
|
144
144
|
version: '0'
|
145
145
|
requirements: []
|
146
|
-
rubygems_version: 3.4.
|
147
|
-
signing_key:
|
146
|
+
rubygems_version: 3.4.10
|
147
|
+
signing_key:
|
148
148
|
specification_version: 4
|
149
149
|
summary: A Ruby library for interacting with the Twitch Helix API
|
150
150
|
test_files: []
|