twitch-api 0.4.0 → 1.0.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/README.md +130 -26
- data/lib/twitch/api_error.rb +5 -4
- data/lib/twitch/automod_message_status.rb +17 -0
- data/lib/twitch/bits_leader.rb +3 -1
- data/lib/twitch/category.rb +27 -0
- data/lib/twitch/channel.rb +46 -0
- data/lib/twitch/cheermote.rb +53 -0
- data/lib/twitch/cheermote_tier.rb +55 -0
- data/lib/twitch/cheermote_tier_image.rb +18 -0
- data/lib/twitch/cheermote_tier_images.rb +21 -0
- data/lib/twitch/client/custom_rewards.rb +35 -0
- data/lib/twitch/client/extensions.rb +20 -0
- data/lib/twitch/client/games.rb +20 -0
- data/lib/twitch/client/moderation.rb +28 -0
- data/lib/twitch/client/streams.rb +29 -0
- data/lib/twitch/client/subscriptions.rb +12 -0
- data/lib/twitch/client/users.rb +20 -0
- data/lib/twitch/client.rb +127 -100
- data/lib/twitch/clip.rb +5 -11
- data/lib/twitch/custom_reward.rb +91 -0
- data/lib/twitch/editor.rb +21 -0
- data/lib/twitch/entitlement_grant_url.rb +3 -2
- data/lib/twitch/extension.rb +37 -0
- data/lib/twitch/extensions_by_types.rb +32 -0
- data/lib/twitch/game.rb +4 -2
- data/lib/twitch/game_analytic.rb +4 -2
- data/lib/twitch/moderation_event.rb +33 -0
- data/lib/twitch/moderator.rb +20 -0
- data/lib/twitch/redemption.rb +35 -0
- data/lib/twitch/response.rb +42 -19
- data/lib/twitch/stream.rb +9 -11
- data/lib/twitch/stream_marker.rb +7 -8
- data/lib/twitch/stream_metadata.rb +27 -16
- data/lib/twitch/subscription.rb +28 -0
- data/lib/twitch/user.rb +8 -3
- data/lib/twitch/user_ban.rb +26 -0
- data/lib/twitch/user_follow.rb +4 -2
- data/lib/twitch/version.rb +3 -1
- data/lib/twitch/video.rb +7 -13
- data/lib/twitch-api.rb +3 -4
- metadata +57 -75
- data/.gitignore +0 -17
- data/.rspec +0 -3
- data/.travis.yml +0 -9
- data/Gemfile +0 -6
- data/Rakefile +0 -6
- data/bin/console +0 -14
- data/bin/setup +0 -8
- data/twitch-api.gemspec +0 -32
data/lib/twitch/response.rb
CHANGED
@@ -1,6 +1,11 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
module Twitch
|
2
4
|
# A compiled response from the API.
|
3
5
|
class Response
|
6
|
+
extend Forwardable
|
7
|
+
def_delegators :@http_response, :body, :success?
|
8
|
+
|
4
9
|
# The requested data.
|
5
10
|
attr_reader :data
|
6
11
|
# A total amount of entities.
|
@@ -10,10 +15,10 @@ module Twitch
|
|
10
15
|
# Usually contains the keys start_date and end_date.
|
11
16
|
# Applies to select endpoints.
|
12
17
|
attr_reader :date_range
|
13
|
-
# A hash containing a pagination token.
|
18
|
+
# A hash containing a pagination token.
|
14
19
|
# Access it with
|
15
20
|
# pagination['cursor']
|
16
|
-
# Applies to select endpoints.
|
21
|
+
# Applies to select endpoints.
|
17
22
|
attr_reader :pagination
|
18
23
|
# The total amount of calls that can be used in
|
19
24
|
# the rate limit period (one minute by default).
|
@@ -25,34 +30,52 @@ module Twitch
|
|
25
30
|
# The total amount of clips that can be created in
|
26
31
|
# the clip rate limit period (currently unknown).
|
27
32
|
attr_reader :clip_rate_limit
|
28
|
-
# The remaining amount of clips that can be created in
|
29
|
-
# the clip rate limit period.
|
33
|
+
# The remaining amount of clips that can be created in
|
34
|
+
# the clip rate limit period.
|
30
35
|
attr_reader :clip_rate_limit_remaining
|
31
36
|
# The HTTP raw response
|
32
37
|
attr_reader :raw
|
33
38
|
|
34
|
-
def initialize(data_class,
|
35
|
-
|
36
|
-
@raw =
|
39
|
+
def initialize(data_class, http_response:)
|
40
|
+
@http_response = http_response
|
41
|
+
@raw = @http_response
|
42
|
+
|
43
|
+
@data = parse_data data_class
|
44
|
+
|
45
|
+
parse_rate_limits
|
46
|
+
|
47
|
+
@pagination = body['pagination']
|
48
|
+
@total = body['total']
|
49
|
+
@date_range = body['date_range']
|
50
|
+
end
|
51
|
+
|
52
|
+
private
|
37
53
|
|
38
|
-
|
54
|
+
def parse_data(data_class)
|
55
|
+
raw_data = body['data']
|
56
|
+
return raw_data unless data_class
|
39
57
|
|
40
|
-
|
41
|
-
|
42
|
-
|
58
|
+
if raw_data.is_a?(Array)
|
59
|
+
raw_data.map { |data_element| data_class.new(data_element) }
|
60
|
+
else
|
61
|
+
data_class.new(raw_data)
|
62
|
+
end
|
63
|
+
end
|
43
64
|
|
65
|
+
def parse_rate_limits
|
44
66
|
@rate_limit = rate_limit_headers[:limit].to_i
|
45
67
|
@rate_limit_remaining = rate_limit_headers[:remaining].to_i
|
46
68
|
@rate_limit_resets_at = Time.at(rate_limit_headers[:reset].to_i)
|
47
69
|
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
end
|
70
|
+
@clip_rate_limit = rate_limit_headers[:'helixclipscreation-limit']
|
71
|
+
@clip_rate_limit_remaining = rate_limit_headers[:'helixclipscreation-remaining']
|
72
|
+
end
|
52
73
|
|
53
|
-
|
54
|
-
@
|
55
|
-
|
74
|
+
def rate_limit_headers
|
75
|
+
@rate_limit_headers ||=
|
76
|
+
@http_response.headers
|
77
|
+
.select { |key, _value| key.to_s.downcase.match(/^ratelimit/) }
|
78
|
+
.transform_keys { |key| key.gsub('ratelimit-', '').to_sym }
|
56
79
|
end
|
57
80
|
end
|
58
|
-
end
|
81
|
+
end
|
data/lib/twitch/stream.rb
CHANGED
@@ -1,11 +1,10 @@
|
|
1
|
-
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'time'
|
2
4
|
|
3
5
|
module Twitch
|
4
6
|
# A user's broadcasting session.
|
5
7
|
class Stream
|
6
|
-
# Fields to be converted from ISO 8601 string to a typed date.
|
7
|
-
DATE_ATTRIBUTES = [:started_at]
|
8
|
-
|
9
8
|
# ID of the stream.
|
10
9
|
attr_reader :id
|
11
10
|
# ID of the user broadcasting.
|
@@ -14,6 +13,8 @@ module Twitch
|
|
14
13
|
attr_reader :user_name
|
15
14
|
# ID of the game being broadcast.
|
16
15
|
attr_reader :game_id
|
16
|
+
# Name of the game being broadcast.
|
17
|
+
attr_reader :game_name
|
17
18
|
# Associated community IDs for the broadcaster.
|
18
19
|
attr_reader :community_ids
|
19
20
|
# The type of broadcast
|
@@ -29,15 +30,12 @@ module Twitch
|
|
29
30
|
attr_reader :language
|
30
31
|
# URL of the latest thumbnail image for the broadcast.
|
31
32
|
attr_reader :thumbnail_url
|
32
|
-
|
33
|
+
# Ids of tags on the live stream
|
34
|
+
attr_reader :tag_ids
|
33
35
|
|
34
36
|
def initialize(attributes = {})
|
35
|
-
attributes.each do |
|
36
|
-
|
37
|
-
instance_variable_set("@#{k}", Time.parse(v))
|
38
|
-
else
|
39
|
-
instance_variable_set("@#{k}", v)
|
40
|
-
end
|
37
|
+
attributes.each do |key, value|
|
38
|
+
instance_variable_set "@#{key}", value
|
41
39
|
end
|
42
40
|
end
|
43
41
|
end
|
data/lib/twitch/stream_marker.rb
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
module Twitch
|
2
4
|
# A point of time in a stream VOD that was marked while it is live.
|
3
5
|
class StreamMarker
|
@@ -15,7 +17,7 @@ module Twitch
|
|
15
17
|
|
16
18
|
def initialize(attributes = {})
|
17
19
|
@id = attributes['id']
|
18
|
-
@created_at =
|
20
|
+
@created_at = attributes['created_at']
|
19
21
|
@description = attributes['description']
|
20
22
|
@position_seconds = attributes['position_seconds']
|
21
23
|
@url = attributes['URL']
|
@@ -24,25 +26,22 @@ module Twitch
|
|
24
26
|
|
25
27
|
# The response envelope for the "Get Stream Markers" endpoint.
|
26
28
|
class StreamMarkerResponse
|
27
|
-
attr_reader :user_id
|
28
|
-
attr_reader :user_name
|
29
|
-
attr_reader :videos
|
29
|
+
attr_reader :user_id, :user_name, :videos
|
30
30
|
|
31
31
|
def initialize(attributes = {})
|
32
32
|
@user_id = attributes['user_id']
|
33
33
|
@user_name = attributes['user_name']
|
34
|
-
@videos = attributes['videos'].map { |
|
34
|
+
@videos = attributes['videos'].map { |video| VideoStreamMarkers.new(video) }
|
35
35
|
end
|
36
36
|
end
|
37
37
|
|
38
38
|
# A video with a list of markers.
|
39
39
|
class VideoStreamMarkers
|
40
|
-
attr_reader :video_id
|
41
|
-
attr_reader :markers
|
40
|
+
attr_reader :video_id, :markers
|
42
41
|
|
43
42
|
def initialize(attributes = {})
|
44
43
|
@video_id = attributes['video_id']
|
45
|
-
@markers = attributes['markers'].map{ |
|
44
|
+
@markers = attributes['markers'].map { |marker| StreamMarker.new(marker) }
|
46
45
|
end
|
47
46
|
end
|
48
47
|
end
|
@@ -1,9 +1,11 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
module Twitch
|
2
4
|
# A set of metadata to provide additional information about a
|
3
|
-
# game being streamed.
|
5
|
+
# game being streamed.
|
4
6
|
# Additional getters are assigned at initialization time, e.g.
|
5
7
|
# self.hearthstone
|
6
|
-
# has data when Hearthstone is being streamed.
|
8
|
+
# has data when Hearthstone is being streamed.
|
7
9
|
# Other games may be included, but will be set to nil
|
8
10
|
# if they aren't the game currently being streamed.
|
9
11
|
class StreamMetadata
|
@@ -11,22 +13,31 @@ module Twitch
|
|
11
13
|
attr_reader :user_id
|
12
14
|
# Display name of the streaming user.
|
13
15
|
attr_reader :user_name
|
14
|
-
# ID of the game being
|
16
|
+
# ID of the game being played.
|
15
17
|
attr_reader :game_id
|
16
18
|
|
17
19
|
def initialize(attributes = {})
|
18
|
-
@
|
19
|
-
|
20
|
-
@
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
20
|
+
@attributes = attributes
|
21
|
+
|
22
|
+
@user_id = @attributes['user_id']
|
23
|
+
@user_name = @attributes['user_name']
|
24
|
+
@game_id = @attributes['game_id']
|
25
|
+
end
|
26
|
+
|
27
|
+
# Since more games can be supported in the future,
|
28
|
+
# this will ensure they will all be available.
|
29
|
+
def method_missing(name, *args)
|
30
|
+
name = name.to_s
|
31
|
+
|
32
|
+
return super unless @attributes.key?(name)
|
33
|
+
|
34
|
+
@attributes[name]
|
35
|
+
end
|
36
|
+
|
37
|
+
def respond_to_missing?(name)
|
38
|
+
name = name.to_s
|
39
|
+
|
40
|
+
@attributes.key?(name) ? true : super
|
30
41
|
end
|
31
42
|
end
|
32
|
-
end
|
43
|
+
end
|
@@ -0,0 +1,28 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Twitch
|
4
|
+
# A user's voluntary contribution to a streamer
|
5
|
+
class Subscription
|
6
|
+
# ID of the user being subscribed to.
|
7
|
+
attr_reader :broadcaster_id
|
8
|
+
# Username of the user being subscribed to.
|
9
|
+
attr_reader :broadcaster_name
|
10
|
+
# Whether the subscription was received as a gift.
|
11
|
+
attr_reader :is_gift
|
12
|
+
# Tier of the subscription.
|
13
|
+
# 1000 = Tier 1, 2000 = Tier 2, 3000 = Tier 3
|
14
|
+
attr_reader :tier
|
15
|
+
# Descriptive name of the subscription.
|
16
|
+
attr_reader :plan_name
|
17
|
+
# ID of the subscribing user.
|
18
|
+
attr_reader :user_id
|
19
|
+
# Username of the subscribing user.
|
20
|
+
attr_reader :user_name
|
21
|
+
|
22
|
+
def initialize(attributes = {})
|
23
|
+
attributes.each do |key, value|
|
24
|
+
instance_variable_set "@#{key}", value
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
data/lib/twitch/user.rb
CHANGED
@@ -1,4 +1,7 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
module Twitch
|
4
|
+
# Data object for Twitch users
|
2
5
|
class User
|
3
6
|
# ID of the user.
|
4
7
|
attr_reader :id
|
@@ -10,7 +13,7 @@ module Twitch
|
|
10
13
|
# (global mod, admin, staff)
|
11
14
|
attr_reader :type
|
12
15
|
# Represents a special broadcaster role of a user.
|
13
|
-
# (partner,
|
16
|
+
# (partner, affiliate)
|
14
17
|
attr_reader :broadcaster_type
|
15
18
|
# Description/biographical info of a user.
|
16
19
|
attr_reader :description
|
@@ -21,10 +24,12 @@ module Twitch
|
|
21
24
|
attr_reader :offline_image_url
|
22
25
|
# Total number of visits to the user's stream page.
|
23
26
|
attr_reader :view_count
|
27
|
+
# The UTC date and time that the user’s account was created. The timestamp is in RFC3339 format.
|
28
|
+
attr_reader :created_at
|
24
29
|
|
25
30
|
def initialize(attributes = {})
|
26
|
-
attributes.each do |
|
27
|
-
instance_variable_set
|
31
|
+
attributes.each do |key, value|
|
32
|
+
instance_variable_set "@#{key}", value
|
28
33
|
end
|
29
34
|
end
|
30
35
|
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Twitch
|
4
|
+
# Ban information for a user.
|
5
|
+
class UserBan
|
6
|
+
# Fields to be converted from ISO 8601 string to a typed date.
|
7
|
+
DATE_ATTRIBUTES = %i[expires_at].freeze
|
8
|
+
|
9
|
+
# ID of the banned/timed-out user.
|
10
|
+
attr_reader :user_id
|
11
|
+
# Username of the banned/timed-out user.
|
12
|
+
attr_reader :user_name
|
13
|
+
# Date of when the time-out will expire (nil for permanent bans)
|
14
|
+
attr_reader :expires_at
|
15
|
+
|
16
|
+
def initialize(attributes = {})
|
17
|
+
attributes.each do |key, value|
|
18
|
+
if DATE_ATTRIBUTES.include?(key.to_sym)
|
19
|
+
instance_variable_set "@#{key}", Time.parse(value)
|
20
|
+
else
|
21
|
+
instance_variable_set "@#{key}", value
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
data/lib/twitch/user_follow.rb
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
module Twitch
|
2
4
|
# Represents a relationship of one user following another.
|
3
5
|
class UserFollow
|
@@ -17,7 +19,7 @@ module Twitch
|
|
17
19
|
@from_name = attributes['from_name']
|
18
20
|
@to_id = attributes['to_id']
|
19
21
|
@to_name = attributes['to_name']
|
20
|
-
@followed_at =
|
22
|
+
@followed_at = attributes['followed_at']
|
21
23
|
end
|
22
24
|
end
|
23
|
-
end
|
25
|
+
end
|
data/lib/twitch/version.rb
CHANGED
data/lib/twitch/video.rb
CHANGED
@@ -1,10 +1,10 @@
|
|
1
|
-
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'time'
|
2
4
|
|
3
5
|
module Twitch
|
4
6
|
# A captured broadcast or portion of a broadcast.
|
5
7
|
class Video
|
6
|
-
DATE_ATTRIBUTES = [:created_at, :published_at]
|
7
|
-
|
8
8
|
# ID of the video.
|
9
9
|
attr_reader :id
|
10
10
|
# Title of the video.
|
@@ -13,7 +13,7 @@ module Twitch
|
|
13
13
|
attr_reader :description
|
14
14
|
# Language of the video.
|
15
15
|
attr_reader :language
|
16
|
-
# Number of views
|
16
|
+
# Number of views
|
17
17
|
attr_reader :view_count
|
18
18
|
# Date the video was created.
|
19
19
|
attr_reader :created_at
|
@@ -31,19 +31,13 @@ module Twitch
|
|
31
31
|
attr_reader :user_name
|
32
32
|
# Viewability of the video (public or private)
|
33
33
|
attr_reader :viewable
|
34
|
-
# Duration of the video, in the format
|
35
|
-
# 0h0m0s
|
34
|
+
# Duration of the video, in the format `0h0m0s`
|
36
35
|
attr_reader :duration
|
37
36
|
|
38
37
|
def initialize(attributes = {})
|
39
|
-
attributes.each do |
|
40
|
-
|
41
|
-
instance_variable_set("@#{k}", Time.parse(v))
|
42
|
-
else
|
43
|
-
instance_variable_set("@#{k}", v)
|
44
|
-
end
|
38
|
+
attributes.each do |key, value|
|
39
|
+
instance_variable_set("@#{key}", value)
|
45
40
|
end
|
46
41
|
end
|
47
|
-
|
48
42
|
end
|
49
43
|
end
|
data/lib/twitch-api.rb
CHANGED
metadata
CHANGED
@@ -1,151 +1,131 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: twitch-api
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 1.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Maurice Wahba
|
8
|
-
|
9
|
-
|
8
|
+
- Alexander Popov
|
9
|
+
autorequire:
|
10
|
+
bindir: bin
|
10
11
|
cert_chain: []
|
11
|
-
date:
|
12
|
+
date: 2023-08-17 00:00:00.000000000 Z
|
12
13
|
dependencies:
|
13
14
|
- !ruby/object:Gem::Dependency
|
14
15
|
name: faraday
|
15
|
-
requirement: !ruby/object:Gem::Requirement
|
16
|
-
requirements:
|
17
|
-
- - ">="
|
18
|
-
- !ruby/object:Gem::Version
|
19
|
-
version: 0.12.2
|
20
|
-
type: :runtime
|
21
|
-
prerelease: false
|
22
|
-
version_requirements: !ruby/object:Gem::Requirement
|
23
|
-
requirements:
|
24
|
-
- - ">="
|
25
|
-
- !ruby/object:Gem::Version
|
26
|
-
version: 0.12.2
|
27
|
-
- !ruby/object:Gem::Dependency
|
28
|
-
name: faraday_middleware
|
29
16
|
requirement: !ruby/object:Gem::Requirement
|
30
17
|
requirements:
|
31
18
|
- - "~>"
|
32
19
|
- !ruby/object:Gem::Version
|
33
|
-
version: '
|
20
|
+
version: '2.3'
|
34
21
|
type: :runtime
|
35
22
|
prerelease: false
|
36
23
|
version_requirements: !ruby/object:Gem::Requirement
|
37
24
|
requirements:
|
38
25
|
- - "~>"
|
39
26
|
- !ruby/object:Gem::Version
|
40
|
-
version: '
|
27
|
+
version: '2.3'
|
41
28
|
- !ruby/object:Gem::Dependency
|
42
|
-
name:
|
29
|
+
name: faraday-parse_dates
|
43
30
|
requirement: !ruby/object:Gem::Requirement
|
44
31
|
requirements:
|
45
32
|
- - "~>"
|
46
33
|
- !ruby/object:Gem::Version
|
47
|
-
version:
|
48
|
-
type: :
|
49
|
-
prerelease: false
|
50
|
-
version_requirements: !ruby/object:Gem::Requirement
|
51
|
-
requirements:
|
52
|
-
- - "~>"
|
53
|
-
- !ruby/object:Gem::Version
|
54
|
-
version: '1.16'
|
55
|
-
- !ruby/object:Gem::Dependency
|
56
|
-
name: rake
|
57
|
-
requirement: !ruby/object:Gem::Requirement
|
58
|
-
requirements:
|
59
|
-
- - "~>"
|
60
|
-
- !ruby/object:Gem::Version
|
61
|
-
version: '10.0'
|
62
|
-
type: :development
|
63
|
-
prerelease: false
|
64
|
-
version_requirements: !ruby/object:Gem::Requirement
|
65
|
-
requirements:
|
66
|
-
- - "~>"
|
67
|
-
- !ruby/object:Gem::Version
|
68
|
-
version: '10.0'
|
69
|
-
- !ruby/object:Gem::Dependency
|
70
|
-
name: rspec
|
71
|
-
requirement: !ruby/object:Gem::Requirement
|
72
|
-
requirements:
|
73
|
-
- - "~>"
|
74
|
-
- !ruby/object:Gem::Version
|
75
|
-
version: '3.0'
|
76
|
-
type: :development
|
34
|
+
version: 0.1.1
|
35
|
+
type: :runtime
|
77
36
|
prerelease: false
|
78
37
|
version_requirements: !ruby/object:Gem::Requirement
|
79
38
|
requirements:
|
80
39
|
- - "~>"
|
81
40
|
- !ruby/object:Gem::Version
|
82
|
-
version:
|
41
|
+
version: 0.1.1
|
83
42
|
- !ruby/object:Gem::Dependency
|
84
|
-
name:
|
43
|
+
name: faraday-retry
|
85
44
|
requirement: !ruby/object:Gem::Requirement
|
86
45
|
requirements:
|
87
46
|
- - "~>"
|
88
47
|
- !ruby/object:Gem::Version
|
89
|
-
version: '
|
90
|
-
type: :
|
48
|
+
version: '2.0'
|
49
|
+
type: :runtime
|
91
50
|
prerelease: false
|
92
51
|
version_requirements: !ruby/object:Gem::Requirement
|
93
52
|
requirements:
|
94
53
|
- - "~>"
|
95
54
|
- !ruby/object:Gem::Version
|
96
|
-
version: '
|
55
|
+
version: '2.0'
|
97
56
|
- !ruby/object:Gem::Dependency
|
98
|
-
name:
|
57
|
+
name: twitch_oauth2
|
99
58
|
requirement: !ruby/object:Gem::Requirement
|
100
59
|
requirements:
|
101
60
|
- - "~>"
|
102
61
|
- !ruby/object:Gem::Version
|
103
|
-
version:
|
104
|
-
type: :
|
62
|
+
version: 0.5.0
|
63
|
+
type: :runtime
|
105
64
|
prerelease: false
|
106
65
|
version_requirements: !ruby/object:Gem::Requirement
|
107
66
|
requirements:
|
108
67
|
- - "~>"
|
109
68
|
- !ruby/object:Gem::Version
|
110
|
-
version:
|
111
|
-
description:
|
69
|
+
version: 0.5.0
|
70
|
+
description:
|
112
71
|
email:
|
113
72
|
- maurice.wahba@gmail.com
|
73
|
+
- alex.wayfer@gmail.com
|
114
74
|
executables: []
|
115
75
|
extensions: []
|
116
76
|
extra_rdoc_files: []
|
117
77
|
files:
|
118
|
-
- ".gitignore"
|
119
|
-
- ".rspec"
|
120
|
-
- ".travis.yml"
|
121
|
-
- Gemfile
|
122
78
|
- LICENSE.txt
|
123
79
|
- README.md
|
124
|
-
- Rakefile
|
125
|
-
- bin/console
|
126
|
-
- bin/setup
|
127
80
|
- lib/twitch-api.rb
|
128
81
|
- lib/twitch/api_error.rb
|
82
|
+
- lib/twitch/automod_message_status.rb
|
129
83
|
- lib/twitch/bits_leader.rb
|
84
|
+
- lib/twitch/category.rb
|
85
|
+
- lib/twitch/channel.rb
|
86
|
+
- lib/twitch/cheermote.rb
|
87
|
+
- lib/twitch/cheermote_tier.rb
|
88
|
+
- lib/twitch/cheermote_tier_image.rb
|
89
|
+
- lib/twitch/cheermote_tier_images.rb
|
130
90
|
- lib/twitch/client.rb
|
91
|
+
- lib/twitch/client/custom_rewards.rb
|
92
|
+
- lib/twitch/client/extensions.rb
|
93
|
+
- lib/twitch/client/games.rb
|
94
|
+
- lib/twitch/client/moderation.rb
|
95
|
+
- lib/twitch/client/streams.rb
|
96
|
+
- lib/twitch/client/subscriptions.rb
|
97
|
+
- lib/twitch/client/users.rb
|
131
98
|
- lib/twitch/clip.rb
|
99
|
+
- lib/twitch/custom_reward.rb
|
100
|
+
- lib/twitch/editor.rb
|
132
101
|
- lib/twitch/entitlement_grant_url.rb
|
102
|
+
- lib/twitch/extension.rb
|
103
|
+
- lib/twitch/extensions_by_types.rb
|
133
104
|
- lib/twitch/game.rb
|
134
105
|
- lib/twitch/game_analytic.rb
|
106
|
+
- lib/twitch/moderation_event.rb
|
107
|
+
- lib/twitch/moderator.rb
|
108
|
+
- lib/twitch/redemption.rb
|
135
109
|
- lib/twitch/response.rb
|
136
110
|
- lib/twitch/stream.rb
|
137
111
|
- lib/twitch/stream_marker.rb
|
138
112
|
- lib/twitch/stream_metadata.rb
|
113
|
+
- lib/twitch/subscription.rb
|
139
114
|
- lib/twitch/user.rb
|
115
|
+
- lib/twitch/user_ban.rb
|
140
116
|
- lib/twitch/user_follow.rb
|
141
117
|
- lib/twitch/version.rb
|
142
118
|
- lib/twitch/video.rb
|
143
|
-
- twitch-api.gemspec
|
144
119
|
homepage: https://github.com/mauricew/ruby-twitch-api
|
145
120
|
licenses:
|
146
121
|
- MIT
|
147
|
-
metadata:
|
148
|
-
|
122
|
+
metadata:
|
123
|
+
bug_tracker_uri: https://github.com/mauricew/ruby-twitch-api/issues
|
124
|
+
documentation_uri: http://www.rubydoc.info/gems/twitch-api/1.0.0
|
125
|
+
homepage_uri: https://github.com/mauricew/ruby-twitch-api
|
126
|
+
rubygems_mfa_required: 'true'
|
127
|
+
source_code_uri: https://github.com/mauricew/ruby-twitch-api
|
128
|
+
post_install_message:
|
149
129
|
rdoc_options: []
|
150
130
|
require_paths:
|
151
131
|
- lib
|
@@ -153,16 +133,18 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
153
133
|
requirements:
|
154
134
|
- - ">="
|
155
135
|
- !ruby/object:Gem::Version
|
156
|
-
version: '2.
|
136
|
+
version: '2.7'
|
137
|
+
- - "<"
|
138
|
+
- !ruby/object:Gem::Version
|
139
|
+
version: '4'
|
157
140
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
158
141
|
requirements:
|
159
142
|
- - ">="
|
160
143
|
- !ruby/object:Gem::Version
|
161
144
|
version: '0'
|
162
145
|
requirements: []
|
163
|
-
|
164
|
-
|
165
|
-
signing_key:
|
146
|
+
rubygems_version: 3.4.17
|
147
|
+
signing_key:
|
166
148
|
specification_version: 4
|
167
149
|
summary: Ruby client for the Twitch Helix API.
|
168
150
|
test_files: []
|
data/.gitignore
DELETED
@@ -1,17 +0,0 @@
|
|
1
|
-
/.bundle/
|
2
|
-
/.yardoc
|
3
|
-
/_yardoc/
|
4
|
-
/coverage/
|
5
|
-
/doc/
|
6
|
-
/pkg/
|
7
|
-
/spec/reports/
|
8
|
-
/tmp/
|
9
|
-
|
10
|
-
# rspec failure tracking
|
11
|
-
.rspec_status
|
12
|
-
|
13
|
-
# for a library or gem, you might want to ignore these files since the code is
|
14
|
-
# intended to run in multiple environments; otherwise, check them in:
|
15
|
-
Gemfile.lock
|
16
|
-
.ruby-version
|
17
|
-
.ruby-gemset
|
data/.rspec
DELETED
data/.travis.yml
DELETED