twitch-api 0.3.0 → 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (50) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +130 -26
  3. data/lib/twitch/api_error.rb +5 -4
  4. data/lib/twitch/automod_message_status.rb +17 -0
  5. data/lib/twitch/bits_leader.rb +6 -1
  6. data/lib/twitch/category.rb +27 -0
  7. data/lib/twitch/channel.rb +46 -0
  8. data/lib/twitch/cheermote.rb +53 -0
  9. data/lib/twitch/cheermote_tier.rb +55 -0
  10. data/lib/twitch/cheermote_tier_image.rb +18 -0
  11. data/lib/twitch/cheermote_tier_images.rb +21 -0
  12. data/lib/twitch/client/custom_rewards.rb +35 -0
  13. data/lib/twitch/client/extensions.rb +20 -0
  14. data/lib/twitch/client/games.rb +20 -0
  15. data/lib/twitch/client/moderation.rb +28 -0
  16. data/lib/twitch/client/streams.rb +29 -0
  17. data/lib/twitch/client/subscriptions.rb +12 -0
  18. data/lib/twitch/client/users.rb +20 -0
  19. data/lib/twitch/client.rb +128 -92
  20. data/lib/twitch/clip.rb +10 -12
  21. data/lib/twitch/custom_reward.rb +91 -0
  22. data/lib/twitch/editor.rb +21 -0
  23. data/lib/twitch/entitlement_grant_url.rb +3 -2
  24. data/lib/twitch/extension.rb +37 -0
  25. data/lib/twitch/extensions_by_types.rb +32 -0
  26. data/lib/twitch/game.rb +4 -2
  27. data/lib/twitch/game_analytic.rb +4 -2
  28. data/lib/twitch/moderation_event.rb +33 -0
  29. data/lib/twitch/moderator.rb +20 -0
  30. data/lib/twitch/redemption.rb +35 -0
  31. data/lib/twitch/response.rb +42 -19
  32. data/lib/twitch/stream.rb +12 -12
  33. data/lib/twitch/stream_marker.rb +47 -0
  34. data/lib/twitch/stream_metadata.rb +29 -15
  35. data/lib/twitch/subscription.rb +28 -0
  36. data/lib/twitch/user.rb +8 -3
  37. data/lib/twitch/user_ban.rb +26 -0
  38. data/lib/twitch/user_follow.rb +10 -2
  39. data/lib/twitch/version.rb +3 -1
  40. data/lib/twitch/video.rb +9 -13
  41. data/lib/twitch-api.rb +3 -4
  42. metadata +58 -75
  43. data/.gitignore +0 -17
  44. data/.rspec +0 -3
  45. data/.travis.yml +0 -9
  46. data/Gemfile +0 -6
  47. data/Rakefile +0 -6
  48. data/bin/console +0 -14
  49. data/bin/setup +0 -8
  50. data/twitch-api.gemspec +0 -32
@@ -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, res)
35
- http_res = res[:http_res]
36
- @raw = http_res if res[:with_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
- @data = http_res.body['data'].map { |d| data_class.new(d) }
54
+ def parse_data(data_class)
55
+ raw_data = body['data']
56
+ return raw_data unless data_class
39
57
 
40
- rate_limit_headers = Hash[http_res.headers.select do |k,v|
41
- k.to_s.downcase.match(/^ratelimit/)
42
- end.map { |k,v| [k.gsub('ratelimit-', '').to_sym, v] }]
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
- if rate_limit_headers.keys.any? { |k| k.to_s.start_with?('helixclipscreation') }
49
- @clip_rate_limit = rate_limit_headers[:'helixclipscreation-limit']
50
- @clip_rate_limit_remaining = rate_limit_headers[:'helixclipscreation-remaining']
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
- @pagination = http_res.body['pagination']
54
- @total = http_res.body['total']
55
- @date_range = http_res.body['date_range']
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,17 +1,20 @@
1
- require "time"
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.
12
11
  attr_reader :user_id
12
+ # Username of the user broadcasting.
13
+ attr_reader :user_name
13
14
  # ID of the game being broadcast.
14
15
  attr_reader :game_id
16
+ # Name of the game being broadcast.
17
+ attr_reader :game_name
15
18
  # Associated community IDs for the broadcaster.
16
19
  attr_reader :community_ids
17
20
  # The type of broadcast
@@ -27,16 +30,13 @@ module Twitch
27
30
  attr_reader :language
28
31
  # URL of the latest thumbnail image for the broadcast.
29
32
  attr_reader :thumbnail_url
30
-
33
+ # Ids of tags on the live stream
34
+ attr_reader :tag_ids
31
35
 
32
36
  def initialize(attributes = {})
33
- attributes.each do |k, v|
34
- if DATE_ATTRIBUTES.include?(k.to_sym)
35
- instance_variable_set("@#{k}", Time.parse(v))
36
- else
37
- instance_variable_set("@#{k}", v)
38
- end
37
+ attributes.each do |key, value|
38
+ instance_variable_set "@#{key}", value
39
39
  end
40
40
  end
41
41
  end
42
- end
42
+ end
@@ -0,0 +1,47 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Twitch
4
+ # A point of time in a stream VOD that was marked while it is live.
5
+ class StreamMarker
6
+ # ID of the stream marker.
7
+ attr_reader :id
8
+ # Date at which the stream marker was created.
9
+ attr_reader :created_at
10
+ # Description of the stream marker.
11
+ attr_reader :description
12
+ # Elapsed time in the VOD in seconds at which the stream marker was created.
13
+ attr_reader :position_seconds
14
+ # URL pointing to the video and timestamp of the stream marker.
15
+ # Not returned upon creation.
16
+ attr_reader :url
17
+
18
+ def initialize(attributes = {})
19
+ @id = attributes['id']
20
+ @created_at = attributes['created_at']
21
+ @description = attributes['description']
22
+ @position_seconds = attributes['position_seconds']
23
+ @url = attributes['URL']
24
+ end
25
+ end
26
+
27
+ # The response envelope for the "Get Stream Markers" endpoint.
28
+ class StreamMarkerResponse
29
+ attr_reader :user_id, :user_name, :videos
30
+
31
+ def initialize(attributes = {})
32
+ @user_id = attributes['user_id']
33
+ @user_name = attributes['user_name']
34
+ @videos = attributes['videos'].map { |video| VideoStreamMarkers.new(video) }
35
+ end
36
+ end
37
+
38
+ # A video with a list of markers.
39
+ class VideoStreamMarkers
40
+ attr_reader :video_id, :markers
41
+
42
+ def initialize(attributes = {})
43
+ @video_id = attributes['video_id']
44
+ @markers = attributes['markers'].map { |marker| StreamMarker.new(marker) }
45
+ end
46
+ end
47
+ end
@@ -1,29 +1,43 @@
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
10
12
  # ID of the streaming user.
11
13
  attr_reader :user_id
12
- # ID of the game being playead.
14
+ # Display name of the streaming user.
15
+ attr_reader :user_name
16
+ # ID of the game being played.
13
17
  attr_reader :game_id
14
18
 
15
19
  def initialize(attributes = {})
16
- @user_id = attributes['user_id']
17
- @game_id = attributes['game_id']
18
-
19
- # Since more games can be supported in the future,
20
- # this will ensure they will all be available.
21
- attributes.each do |k, v|
22
- unless instance_variables.include?("@#{k}".to_sym)
23
- self.class.send(:attr_reader, k.to_sym)
24
- instance_variable_set("@#{k}", v)
25
- end
26
- end
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
27
41
  end
28
42
  end
29
- 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, affilaite)
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 |k, v|
27
- instance_variable_set("@#{k}", v)
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
@@ -1,17 +1,25 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Twitch
2
4
  # Represents a relationship of one user following another.
3
5
  class UserFollow
4
6
  # User ID of the *following* user.
5
7
  attr_reader :from_id
8
+ # Display name of the *following* user.
9
+ attr_reader :from_name
6
10
  # User ID of the *followed* user.
7
11
  attr_reader :to_id
12
+ # User name of the *followed* user.
13
+ attr_reader :to_name
8
14
  # Date at which the follow action was performed.
9
15
  attr_reader :followed_at
10
16
 
11
17
  def initialize(attributes = {})
12
18
  @from_id = attributes['from_id']
19
+ @from_name = attributes['from_name']
13
20
  @to_id = attributes['to_id']
14
- @followed_at = Time.iso8601(attributes['followed_at'])
21
+ @to_name = attributes['to_name']
22
+ @followed_at = attributes['followed_at']
15
23
  end
16
24
  end
17
- end
25
+ end
@@ -1,4 +1,6 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Twitch
2
4
  # Library version.
3
- VERSION = "0.3.0"
5
+ VERSION = '1.0.0'
4
6
  end
data/lib/twitch/video.rb CHANGED
@@ -1,10 +1,10 @@
1
- require "time"
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
@@ -27,21 +27,17 @@ module Twitch
27
27
  attr_reader :url
28
28
  # ID of the user who uploaded/broadcasted the video.
29
29
  attr_reader :user_id
30
+ # Display name of the user who uploaded/broadcasted the video.
31
+ attr_reader :user_name
30
32
  # Viewability of the video (public or private)
31
33
  attr_reader :viewable
32
- # Duration of the video, in the format
33
- # 0h0m0s
34
+ # Duration of the video, in the format `0h0m0s`
34
35
  attr_reader :duration
35
36
 
36
37
  def initialize(attributes = {})
37
- attributes.each do |k, v|
38
- if DATE_ATTRIBUTES.include?(k.to_sym)
39
- instance_variable_set("@#{k}", Time.parse(v))
40
- else
41
- instance_variable_set("@#{k}", v)
42
- end
38
+ attributes.each do |key, value|
39
+ instance_variable_set("@#{key}", value)
43
40
  end
44
41
  end
45
-
46
42
  end
47
43
  end
data/lib/twitch-api.rb CHANGED
@@ -1,5 +1,4 @@
1
- require "twitch/version"
2
- require "twitch/client"
1
+ # frozen_string_literal: true
3
2
 
4
- module Twitch
5
- end
3
+ require_relative 'twitch/version'
4
+ require_relative 'twitch/client'
metadata CHANGED
@@ -1,150 +1,131 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: twitch-api
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.0
4
+ version: 1.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Maurice Wahba
8
- autorequire:
9
- bindir: exe
8
+ - Alexander Popov
9
+ autorequire:
10
+ bindir: bin
10
11
  cert_chain: []
11
- date: 2018-06-17 00:00:00.000000000 Z
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: '0.12'
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: '0.12'
27
+ version: '2.3'
41
28
  - !ruby/object:Gem::Dependency
42
- name: bundler
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: '1.16'
48
- type: :development
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: '3.0'
41
+ version: 0.1.1
83
42
  - !ruby/object:Gem::Dependency
84
- name: webmock
43
+ name: faraday-retry
85
44
  requirement: !ruby/object:Gem::Requirement
86
45
  requirements:
87
46
  - - "~>"
88
47
  - !ruby/object:Gem::Version
89
- version: '3.1'
90
- type: :development
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: '3.1'
55
+ version: '2.0'
97
56
  - !ruby/object:Gem::Dependency
98
- name: vcr
57
+ name: twitch_oauth2
99
58
  requirement: !ruby/object:Gem::Requirement
100
59
  requirements:
101
60
  - - "~>"
102
61
  - !ruby/object:Gem::Version
103
- version: '3.0'
104
- type: :development
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: '3.0'
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
111
+ - lib/twitch/stream_marker.rb
137
112
  - lib/twitch/stream_metadata.rb
113
+ - lib/twitch/subscription.rb
138
114
  - lib/twitch/user.rb
115
+ - lib/twitch/user_ban.rb
139
116
  - lib/twitch/user_follow.rb
140
117
  - lib/twitch/version.rb
141
118
  - lib/twitch/video.rb
142
- - twitch-api.gemspec
143
119
  homepage: https://github.com/mauricew/ruby-twitch-api
144
120
  licenses:
145
121
  - MIT
146
- metadata: {}
147
- post_install_message:
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:
148
129
  rdoc_options: []
149
130
  require_paths:
150
131
  - lib
@@ -152,16 +133,18 @@ required_ruby_version: !ruby/object:Gem::Requirement
152
133
  requirements:
153
134
  - - ">="
154
135
  - !ruby/object:Gem::Version
155
- version: '2.0'
136
+ version: '2.7'
137
+ - - "<"
138
+ - !ruby/object:Gem::Version
139
+ version: '4'
156
140
  required_rubygems_version: !ruby/object:Gem::Requirement
157
141
  requirements:
158
142
  - - ">="
159
143
  - !ruby/object:Gem::Version
160
144
  version: '0'
161
145
  requirements: []
162
- rubyforge_project:
163
- rubygems_version: 2.7.1
164
- signing_key:
146
+ rubygems_version: 3.4.17
147
+ signing_key:
165
148
  specification_version: 4
166
149
  summary: Ruby client for the Twitch Helix API.
167
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
@@ -1,3 +0,0 @@
1
- --format documentation
2
- --color
3
- --require spec_helper