restiny 3.1.0 → 5.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: b1d08e2f02105ea2a6330679fe9cae0534bbb4a7d3c0fb7803d43fc70ae4ebdd
4
- data.tar.gz: 80ab03d4fdbbf65ae276265f89e7c00d9a4f55870fdc0398893e45d429f44179
3
+ metadata.gz: 366f1afb92a72c9adbc817eb5e8651fcd2df0656584c138660708525343b8407
4
+ data.tar.gz: 7fa7f9df35a0ee12206627a43c7ffb4d299819c5d26340c83186f520e30de99e
5
5
  SHA512:
6
- metadata.gz: 4abf818ba76d6f6fefbf2070a1d56162462ac2d5a22dae7725383c34ae884d901be3539b78342510beaa93ddc9c3a554e90fcee473825bdcad144ab9a88af8c5
7
- data.tar.gz: 78f09f843a2e5c00067b95e1e5aad5a938d181c56081b744e1ae0638605af65548de6d4b117d3667e326bc9ed2ef61aaa80b673990f15cc490045aa2aa9f95ca
6
+ metadata.gz: 8c71e268039ac692949adf704883eda27bc2da5d747dab7d610a09621921ef3e64e4909bca9456431f404a0ff4211a19f31efbdf7eb57701bf852bacf360cf90
7
+ data.tar.gz: 77c6af1bf576b0e590a6659565af7739316cbc3a72b159a26c8b3077308c3713f1cb8cf45c103d3a0993c2012957feaeb372c6bdaec0436b85b4af0b2f290261
@@ -1,21 +1,23 @@
1
- require "faraday"
2
- require "restiny/errors"
1
+ # frozen_string_literal: true
2
+
3
+ require 'faraday'
4
+ require 'restiny/errors'
3
5
 
4
6
  module Faraday
5
7
  module Restiny
6
- Faraday::Response.register_middleware(destiny_api: "Faraday::Restiny::Api")
8
+ Faraday::Response.register_middleware(destiny_api: 'Faraday::Restiny::Api')
7
9
 
8
10
  class Api < Middleware
9
11
  def on_complete(env)
10
- return if env["response_body"].empty? || !env["response_body"].dig("ErrorCode")
12
+ return if env['response_body'].empty? || !env['response_body']['ErrorCode']
11
13
 
12
- if env["response_body"]["ErrorCode"] == 1
13
- env[:body] = env["response_body"].dig("Response")
14
+ if env['response_body']['ErrorCode'] == 1
15
+ env[:body] = env['response_body']['Response']
14
16
  return
15
17
  end
16
18
 
17
19
  klass =
18
- case env["status"]
20
+ case env['status']
19
21
  when 400..499
20
22
  ::Restiny::RequestError
21
23
  when 500..599
@@ -24,7 +26,7 @@ module Faraday
24
26
  ::Restiny::Error
25
27
  end
26
28
 
27
- raise klass.new(env["response_body"]["Message"], env["response_body"]["ErrorStatus"])
29
+ raise klass.new(env['response_body']['Message'], env['response_body']['ErrorStatus'])
28
30
  end
29
31
  end
30
32
  end
@@ -1,20 +1,22 @@
1
- require "faraday"
2
- require "restiny/errors"
1
+ # frozen_string_literal: true
2
+
3
+ require 'faraday'
4
+ require 'restiny/errors'
3
5
 
4
6
  module Faraday
5
7
  module Restiny
6
- Faraday::Response.register_middleware(destiny_auth: "Faraday::Restiny::Auth")
8
+ Faraday::Response.register_middleware(destiny_auth: 'Faraday::Restiny::Auth')
7
9
 
8
10
  class Auth < Middleware
9
11
  def on_complete(env)
10
- return if env["response_body"].empty? || env["url"].to_s !~ /oauth/
12
+ return if env['response_body'].empty? || env['url'].to_s !~ /oauth/
13
+
14
+ return unless env['response_body']['error']
11
15
 
12
- if env["response_body"]["error"]
13
- raise ::Restiny::AuthenticationError.new(
14
- env["response_body"]["error_description"],
15
- env["response_body"]["error"]
16
- )
17
- end
16
+ raise ::Restiny::AuthenticationError.new(
17
+ env['response_body']['error_description'],
18
+ env['response_body']['error']
19
+ )
18
20
  end
19
21
  end
20
22
  end
@@ -56,16 +56,16 @@ module Restiny
56
56
  end
57
57
 
58
58
  module ComponentType
59
- CHARACTERS = "Characters"
60
- CHARACTER_EQUIPMENT = "CharacterEquipment"
61
- CHARACTER_INVENTORIES = "CharacterInventories"
62
- CHARACTER_LOADOUTS = "CharacterLoadouts"
63
- PROFILES = "Profiles"
64
- PROFILE_INVENTORIES = "ProfileInventories"
65
- ITEM_INSTANCES = "ItemInstances"
66
- ITEM_SOCKETS = "ItemSockets"
67
- ITEM_COMMON_DATA = "ItemCommonData"
68
- ITEM_PLUG_STATES = "ItemPlugStates"
69
- ITEM_REUSABLE_PLUGS = "ItemReusablePlugs"
59
+ CHARACTERS = 'Characters'
60
+ CHARACTER_EQUIPMENT = 'CharacterEquipment'
61
+ CHARACTER_INVENTORIES = 'CharacterInventories'
62
+ CHARACTER_LOADOUTS = 'CharacterLoadouts'
63
+ PROFILES = 'Profiles'
64
+ PROFILE_INVENTORIES = 'ProfileInventories'
65
+ ITEM_INSTANCES = 'ItemInstances'
66
+ ITEM_SOCKETS = 'ItemSockets'
67
+ ITEM_COMMON_DATA = 'ItemCommonData'
68
+ ITEM_PLUG_STATES = 'ItemPlugStates'
69
+ ITEM_REUSABLE_PLUGS = 'ItemReusablePlugs'
70
70
  end
71
71
  end
@@ -1,6 +1,6 @@
1
- # frozen_string/literal: true
1
+ # frozen_string_literal: true
2
2
 
3
- require "sqlite3"
3
+ require 'sqlite3'
4
4
 
5
5
  module Restiny
6
6
  class Manifest
@@ -68,49 +68,36 @@ module Restiny
68
68
  Unlock: %w[unlock unlocks],
69
69
  Vendor: %w[vendor vendors],
70
70
  VendorGroup: %w[vendor_group vendor_groups]
71
- }
71
+ }.freeze
72
72
 
73
- attr_reader :file_path, :version
73
+ attr_reader :version
74
74
 
75
75
  ENTITIES.each do |entity, method_names|
76
76
  full_table_name = "Destiny#{entity}Definition"
77
77
  single_method_name, plural_method_name = method_names
78
78
 
79
- define_method single_method_name do |id|
80
- fetch_item(table_name: full_table_name, id: id)
81
- end
82
-
83
- define_method plural_method_name do |limit: nil|
84
- fetch_items(table_name: full_table_name, limit: limit)
85
- end
79
+ define_method(single_method_name) { |id| fetch_item(table_name: full_table_name, id: id) }
80
+ define_method(plural_method_name) { |limit: nil| fetch_items(table_name: full_table_name, limit: limit) }
86
81
  end
87
82
 
88
83
  def initialize(file_path, version)
89
84
  if file_path.empty? || !File.exist?(file_path) || !File.file?(file_path)
90
- raise Restiny::InvalidParamsError.new("You must provide a valid path for the manifest file")
85
+ raise Restiny::InvalidParamsError, 'You must provide a valid path for the manifest file'
91
86
  end
92
87
 
93
88
  @database = SQLite3::Database.new(file_path, results_as_hash: true)
94
- @file_path = file_path
95
89
  @version = version
96
90
  end
97
91
 
98
92
  private
99
93
 
100
- def get_entity_names
101
- query = "SELECT name from sqlite_schema WHERE name LIKE 'Destiny%'"
102
- @database.execute(query).map { |row| row["name"].gsub(/(Destiny|Definition)/, "") }
103
- end
104
-
105
94
  def fetch_item(table_name:, id:)
106
95
  query = "SELECT json FROM #{table_name} WHERE json_extract(json, '$.hash')=?"
107
96
  result = @database.execute(query, id)
108
97
 
109
- return nil if result.nil? || result.count < 1 || !result[0].include?("json")
110
-
111
- JSON.parse(result[0]["json"])
98
+ JSON.parse(result[0]['json']) unless result.nil? || result.count < 1 || !result[0].include?('json')
112
99
  rescue SQLite3::Exception => e
113
- raise Restiny::RequestError.new("Error while fetching item (#{e})")
100
+ raise Restiny::RequestError, "Error while fetching item (#{e})"
114
101
  end
115
102
 
116
103
  def fetch_items(table_name:, limit: nil)
@@ -119,14 +106,14 @@ module Restiny
119
106
  query = "SELECT json FROM #{table_name} ORDER BY json_extract(json, '$.index')"
120
107
 
121
108
  if limit
122
- query << " LIMIT ?"
109
+ query << ' LIMIT ?'
123
110
  bindings << limit
124
111
  end
125
112
 
126
113
  items = []
127
114
 
128
115
  @database.execute(query, bindings) do |row|
129
- item = JSON.parse(row["json"])
116
+ item = JSON.parse(row['json'])
130
117
  yield item if block_given?
131
118
 
132
119
  items << item
@@ -134,7 +121,7 @@ module Restiny
134
121
 
135
122
  items unless block_given?
136
123
  rescue SQLite3::Exception => e
137
- raise Restiny::RequestError.new("Error while fetching items (#{e})")
124
+ raise Restiny::RequestError, "Error while fetching items (#{e})"
138
125
  end
139
126
  end
140
127
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Restiny
4
- VERSION = "3.1.0"
4
+ VERSION = '5.0.0'
5
5
  end
data/lib/restiny.rb CHANGED
@@ -2,26 +2,26 @@
2
2
 
3
3
  $LOAD_PATH.unshift(__dir__)
4
4
 
5
- require "restiny/version"
6
- require "restiny/constants"
7
- require "restiny/errors"
8
- require "restiny/manifest"
9
-
10
- require "faraday"
11
- require "faraday/follow_redirects"
12
- require "faraday/destiny/api"
13
- require "faraday/destiny/auth"
14
-
15
- require "down"
16
- require "json"
17
- require "securerandom"
18
- require "zip"
5
+ require 'restiny/version'
6
+ require 'restiny/constants'
7
+ require 'restiny/errors'
8
+ require 'restiny/manifest'
9
+
10
+ require 'down'
11
+ require 'faraday'
12
+ require 'faraday/follow_redirects'
13
+ require 'faraday/destiny/api'
14
+ require 'faraday/destiny/auth'
15
+ require 'json'
16
+ require 'securerandom'
17
+ require 'tmpdir'
18
+ require 'zip'
19
19
 
20
20
  module Restiny
21
21
  extend self
22
22
 
23
- BUNGIE_URL = "https://www.bungie.net"
24
- API_BASE_URL = BUNGIE_URL + "/platform"
23
+ BUNGIE_URL = 'https://www.bungie.net'
24
+ API_BASE_URL = "#{BUNGIE_URL}/platform".freeze
25
25
 
26
26
  attr_accessor :api_key, :oauth_state, :oauth_client_id, :access_token, :user_agent
27
27
 
@@ -32,61 +32,63 @@ module Restiny
32
32
 
33
33
  @oauth_state = state || SecureRandom.hex(15)
34
34
 
35
- params = { response_type: "code", client_id: @oauth_client_id, state: @oauth_state }
36
- params["redirect_url"] = redirect_url unless redirect_url.nil?
35
+ params = { response_type: 'code', client_id: @oauth_client_id, state: @oauth_state }
36
+ params['redirect_url'] = redirect_url unless redirect_url.nil?
37
37
 
38
- auth_connection.build_url(BUNGIE_URL + "/en/oauth/authorize/", params).to_s
38
+ auth_connection.build_url("#{BUNGIE_URL}/en/oauth/authorize/", params).to_s
39
39
  end
40
40
 
41
41
  def request_access_token(code:, redirect_url: nil)
42
42
  check_oauth_client_id
43
43
 
44
- params = { code: code, grant_type: "authorization_code", client_id: @oauth_client_id }
45
- params["redirect_url"] = redirect_url unless redirect_url.nil?
44
+ params = { code: code, grant_type: 'authorization_code', client_id: @oauth_client_id }
45
+ params['redirect_url'] = redirect_url unless redirect_url.nil?
46
46
 
47
- auth_post("app/oauth/token/", params)
47
+ auth_connection.post('app/oauth/token/', params).body
48
48
  end
49
49
 
50
50
  # Manifest methods
51
51
 
52
- def get_manifest(locale: "en", force_download: false)
53
- result = api_get("Destiny2/Manifest/")
54
- raise Restiny::ResponseError.new("Unable to determine manifest details") if result.nil?
52
+ def download_manifest(locale: 'en', force_download: false)
53
+ result = api_get('Destiny2/Manifest/')
54
+ raise Restiny::ResponseError, 'Unable to determine manifest details' if result.nil?
55
55
 
56
- live_version = result.dig("version")
56
+ live_version = result['version']
57
57
 
58
58
  @manifests ||= {}
59
59
  @manifest_versions ||= {}
60
60
 
61
61
  if force_download || @manifests[locale].nil? || @manifest_versions[locale] != live_version
62
- url = BUNGIE_URL + result.dig("mobileWorldContentPaths", locale)
63
-
64
- zipped_file = Down.download(url)
65
- database_file_path = zipped_file.path + ".db"
62
+ manifest_db_url = result.dig('mobileWorldContentPaths', locale)
63
+ raise Restiny::RequestError, 'Unknown locale' if manifest_db_url.nil?
66
64
 
67
- Zip::File.open(zipped_file) { |file| file.first.extract(database_file_path) }
65
+ database_file_path = Zip::File.open(Down.download(BUNGIE_URL + manifest_db_url)) do |zip_file|
66
+ File.join(Dir.tmpdir, "#{live_version}.en.content.db").tap do |path|
67
+ zip_file.first.extract(path) unless File.exist?(path)
68
+ end
69
+ end
68
70
 
69
71
  @manifests[locale] = Manifest.new(database_file_path, live_version)
70
72
  @manifest_versions[locale] = live_version
71
73
  end
72
74
 
73
75
  @manifests[locale]
74
- rescue Down::Error => error
75
- raise Restiny::NetworkError.new("Unable to download the manifest file", error.response.code)
76
- rescue Zip::Error => error
77
- raise Restiny::Error.new("Unable to unzip the manifest file (#{error})")
76
+ rescue Down::Error => e
77
+ raise Restiny::NetworkError.new('Unable to download the manifest file', e.response.code)
78
+ rescue Zip::Error => e
79
+ raise Restiny::Error, "Unable to unzip the manifest file (#{e})"
78
80
  end
79
81
 
80
82
  # Profile and related methods
81
83
 
82
84
  def get_profile(membership_id:, membership_type:, components:, type_url: nil)
83
85
  if !components.is_a?(Array) || components.empty?
84
- raise Restiny::InvalidParamsError.new("Please provide at least one component")
86
+ raise Restiny::InvalidParamsError, 'Please provide at least one component'
85
87
  end
86
88
 
87
89
  url = "Destiny2/#{membership_type}/Profile/#{membership_id}/"
88
90
  url += type_url if type_url
89
- url += "?components=#{components.join(",")}"
91
+ url += "?components=#{components.join(',')}"
90
92
 
91
93
  api_get(url)
92
94
  end
@@ -112,25 +114,26 @@ module Restiny
112
114
  # User methods.
113
115
 
114
116
  def get_user_memberships_by_id(membership_id, membership_type: Platform::ALL)
115
- raise Restiny::InvalidParamsError.new("Please provide a membership ID") if membership_id.nil?
117
+ raise Restiny::InvalidParamsError, 'Please provide a membership ID' if membership_id.nil?
118
+
116
119
  api_get("User/GetMembershipsById/#{membership_id}/#{membership_type}/")
117
120
  end
118
121
 
119
- def get_primary_membership(parent_membership_id, use_fallback: true)
122
+ def get_user_primary_membership(parent_membership_id, use_fallback: true)
120
123
  result = get_user_memberships_by_id(parent_membership_id)
121
- return nil if result.nil? || result["primaryMembershipId"].nil?
124
+ return nil if result.nil? || result['primaryMembershipId'].nil?
122
125
 
123
- result["destinyMemberships"].each do |membership|
124
- return membership if membership["membershipID"] == result["primaryMembershipId"]
126
+ result['destinyMemberships'].each do |membership|
127
+ return membership if membership['membershipID'] == result['primaryMembershipId']
125
128
  end
126
129
 
127
- return result["destinyMemberships"][0] if use_fallback
130
+ result['destinyMemberships'][0] if use_fallback
128
131
  end
129
132
 
130
133
  def search_player_by_bungie_name(name, membership_type: Platform::ALL)
131
- display_name, display_name_code = name.split("#")
134
+ display_name, display_name_code = name.split('#')
132
135
  if display_name.nil? || display_name_code.nil?
133
- raise Restiny::InvalidParamsError.new("You must provide a valid Bungie name")
136
+ raise Restiny::InvalidParamsError, 'You must provide a valid Bungie name'
134
137
  end
135
138
 
136
139
  api_post(
@@ -142,7 +145,7 @@ module Restiny
142
145
  )
143
146
  end
144
147
 
145
- def search_users_by_global_name(name:, page: 0)
148
+ def search_users_by_global_name(name, page: 0)
146
149
  api_post("User/Search/GlobalName/#{page}/", params: { displayNamePrefix: name })
147
150
  end
148
151
 
@@ -156,29 +159,24 @@ module Restiny
156
159
  api_connection.post(url, params, token_header).body
157
160
  end
158
161
 
159
- def auth_post(url, params)
160
- auth_connection.post(url, params, "Content-Type" => "application/x-www-form-urlencoded").body
161
- end
162
-
163
162
  private
164
163
 
165
164
  def check_oauth_client_id
166
- raise Restiny::RequestError.new("You need to set an OAuth client ID") unless @oauth_client_id
165
+ raise Restiny::RequestError, 'You need to set an OAuth client ID' unless @oauth_client_id
167
166
  end
168
167
 
169
168
  def default_headers
170
- { "User-Agent": @user_agent || "restiny v#{Restiny::VERSION}" }
169
+ { 'User-Agent': @user_agent || "restiny v#{Restiny::VERSION}" }
171
170
  end
172
171
 
173
172
  def api_connection
174
- raise Restiny::InvalidParamsError.new("You need to set an API key") unless @api_key
173
+ raise Restiny::InvalidParamsError, 'You need to set an API key' unless @api_key
175
174
 
176
175
  @connection ||=
177
176
  Faraday.new(
178
177
  url: API_BASE_URL,
179
- headers: default_headers.merge("X-API-KEY": @api_key)
178
+ headers: default_headers.merge('X-API-KEY': @api_key)
180
179
  ) do |faraday|
181
- faraday.request :url_encoded
182
180
  faraday.request :json
183
181
  faraday.response :follow_redirects
184
182
  faraday.response :destiny_api
@@ -190,7 +188,6 @@ module Restiny
190
188
  @auth_connection ||=
191
189
  Faraday.new(url: API_BASE_URL, headers: default_headers) do |faraday|
192
190
  faraday.request :url_encoded
193
- faraday.request :json
194
191
  faraday.response :follow_redirects
195
192
  faraday.response :destiny_auth
196
193
  faraday.response :json
@@ -198,6 +195,6 @@ module Restiny
198
195
  end
199
196
 
200
197
  def token_header
201
- {}.tap { |headers| headers["authorization"] = "Bearer #{@oauth_token}" if @oauth_token }
198
+ {}.tap { |headers| headers['authorization'] = "Bearer #{@access_token}" if @access_token }
202
199
  end
203
200
  end
metadata CHANGED
@@ -1,71 +1,57 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: restiny
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.1.0
4
+ version: 5.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Daniel Bogan
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-08-18 00:00:00.000000000 Z
11
+ date: 2023-11-04 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
- name: faraday
15
- requirement: !ruby/object:Gem::Requirement
16
- requirements:
17
- - - "~>"
18
- - !ruby/object:Gem::Version
19
- version: '2.0'
20
- type: :runtime
21
- prerelease: false
22
- version_requirements: !ruby/object:Gem::Requirement
23
- requirements:
24
- - - "~>"
25
- - !ruby/object:Gem::Version
26
- version: '2.0'
27
- - !ruby/object:Gem::Dependency
28
- name: faraday-follow_redirects
14
+ name: down
29
15
  requirement: !ruby/object:Gem::Requirement
30
16
  requirements:
31
17
  - - "~>"
32
18
  - !ruby/object:Gem::Version
33
- version: '0.3'
19
+ version: '5.4'
34
20
  type: :runtime
35
21
  prerelease: false
36
22
  version_requirements: !ruby/object:Gem::Requirement
37
23
  requirements:
38
24
  - - "~>"
39
25
  - !ruby/object:Gem::Version
40
- version: '0.3'
26
+ version: '5.4'
41
27
  - !ruby/object:Gem::Dependency
42
- name: sqlite3
28
+ name: faraday
43
29
  requirement: !ruby/object:Gem::Requirement
44
30
  requirements:
45
31
  - - "~>"
46
32
  - !ruby/object:Gem::Version
47
- version: '1.3'
33
+ version: '2.0'
48
34
  type: :runtime
49
35
  prerelease: false
50
36
  version_requirements: !ruby/object:Gem::Requirement
51
37
  requirements:
52
38
  - - "~>"
53
39
  - !ruby/object:Gem::Version
54
- version: '1.3'
40
+ version: '2.0'
55
41
  - !ruby/object:Gem::Dependency
56
- name: down
42
+ name: faraday-follow_redirects
57
43
  requirement: !ruby/object:Gem::Requirement
58
44
  requirements:
59
45
  - - "~>"
60
46
  - !ruby/object:Gem::Version
61
- version: '5.4'
47
+ version: '0.3'
62
48
  type: :runtime
63
49
  prerelease: false
64
50
  version_requirements: !ruby/object:Gem::Requirement
65
51
  requirements:
66
52
  - - "~>"
67
53
  - !ruby/object:Gem::Version
68
- version: '5.4'
54
+ version: '0.3'
69
55
  - !ruby/object:Gem::Dependency
70
56
  name: rubyzip
71
57
  requirement: !ruby/object:Gem::Requirement
@@ -81,75 +67,19 @@ dependencies:
81
67
  - !ruby/object:Gem::Version
82
68
  version: '2.3'
83
69
  - !ruby/object:Gem::Dependency
84
- name: rake
85
- requirement: !ruby/object:Gem::Requirement
86
- requirements:
87
- - - "~>"
88
- - !ruby/object:Gem::Version
89
- version: '13.0'
90
- type: :development
91
- prerelease: false
92
- version_requirements: !ruby/object:Gem::Requirement
93
- requirements:
94
- - - "~>"
95
- - !ruby/object:Gem::Version
96
- version: '13.0'
97
- - !ruby/object:Gem::Dependency
98
- name: rspec
99
- requirement: !ruby/object:Gem::Requirement
100
- requirements:
101
- - - "~>"
102
- - !ruby/object:Gem::Version
103
- version: '3.12'
104
- type: :development
105
- prerelease: false
106
- version_requirements: !ruby/object:Gem::Requirement
107
- requirements:
108
- - - "~>"
109
- - !ruby/object:Gem::Version
110
- version: '3.12'
111
- - !ruby/object:Gem::Dependency
112
- name: rubocop-rspec
113
- requirement: !ruby/object:Gem::Requirement
114
- requirements:
115
- - - "~>"
116
- - !ruby/object:Gem::Version
117
- version: '2.22'
118
- type: :development
119
- prerelease: false
120
- version_requirements: !ruby/object:Gem::Requirement
121
- requirements:
122
- - - "~>"
123
- - !ruby/object:Gem::Version
124
- version: '2.22'
125
- - !ruby/object:Gem::Dependency
126
- name: standard
127
- requirement: !ruby/object:Gem::Requirement
128
- requirements:
129
- - - "~>"
130
- - !ruby/object:Gem::Version
131
- version: '1.28'
132
- type: :development
133
- prerelease: false
134
- version_requirements: !ruby/object:Gem::Requirement
135
- requirements:
136
- - - "~>"
137
- - !ruby/object:Gem::Version
138
- version: '1.28'
139
- - !ruby/object:Gem::Dependency
140
- name: vcr
70
+ name: sqlite3
141
71
  requirement: !ruby/object:Gem::Requirement
142
72
  requirements:
143
73
  - - "~>"
144
74
  - !ruby/object:Gem::Version
145
- version: '6.1'
146
- type: :development
75
+ version: '1.3'
76
+ type: :runtime
147
77
  prerelease: false
148
78
  version_requirements: !ruby/object:Gem::Requirement
149
79
  requirements:
150
80
  - - "~>"
151
81
  - !ruby/object:Gem::Version
152
- version: '6.1'
82
+ version: '1.3'
153
83
  description: A gem for interacting with Bungie's Destiny API.
154
84
  email:
155
85
  - d+restiny@waferbaby.com
@@ -167,24 +97,25 @@ files:
167
97
  homepage: http://github.com/waferbaby/restiny
168
98
  licenses:
169
99
  - MIT
170
- metadata: {}
171
- post_install_message:
100
+ metadata:
101
+ rubygems_mfa_required: 'true'
102
+ post_install_message:
172
103
  rdoc_options: []
173
104
  require_paths:
174
105
  - lib
175
106
  required_ruby_version: !ruby/object:Gem::Requirement
176
107
  requirements:
177
- - - ">="
108
+ - - ">"
178
109
  - !ruby/object:Gem::Version
179
- version: '0'
110
+ version: '3.0'
180
111
  required_rubygems_version: !ruby/object:Gem::Requirement
181
112
  requirements:
182
113
  - - ">="
183
114
  - !ruby/object:Gem::Version
184
115
  version: '0'
185
116
  requirements: []
186
- rubygems_version: 3.3.7
187
- signing_key:
117
+ rubygems_version: 3.2.33
118
+ signing_key:
188
119
  specification_version: 4
189
120
  summary: A Destiny API gem
190
121
  test_files: []