restiny 3.0.0 → 3.1.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 64bba6028ea7ef4119e6019011b4d35cf1fb850903b446387b3aae0ba47c03e7
4
- data.tar.gz: 629969c98d6d518c3cefb7f9c85d177a404408f6d88dd8d979be5e2be75c1027
3
+ metadata.gz: b1d08e2f02105ea2a6330679fe9cae0534bbb4a7d3c0fb7803d43fc70ae4ebdd
4
+ data.tar.gz: 80ab03d4fdbbf65ae276265f89e7c00d9a4f55870fdc0398893e45d429f44179
5
5
  SHA512:
6
- metadata.gz: 65a76e2738de6da2e4e3dfaf6015f689d8c95d8fea9daa952d153fdf251feec6a145fa16b627bfd2baea1eb3c05cc7d83058e1670b1715d9ea21c18409f081c5
7
- data.tar.gz: 70565f0ddc5c22d76f32cb1e4883261e3bbf181bd7e330a125a3c6982db1b95f6e14342aae7600379ded28697eef9f369ce4b50896b6388de984eea520aec971
6
+ metadata.gz: 4abf818ba76d6f6fefbf2070a1d56162462ac2d5a22dae7725383c34ae884d901be3539b78342510beaa93ddc9c3a554e90fcee473825bdcad144ab9a88af8c5
7
+ data.tar.gz: 78f09f843a2e5c00067b95e1e5aad5a938d181c56081b744e1ae0638605af65548de6d4b117d3667e326bc9ed2ef61aaa80b673990f15cc490045aa2aa9f95ca
@@ -8,6 +8,9 @@ module Restiny
8
8
  end
9
9
  end
10
10
 
11
+ class NetworkError < Error
12
+ end
13
+
11
14
  class RequestError < Error
12
15
  end
13
16
 
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Restiny
4
- VERSION = "3.0.0"
4
+ VERSION = "3.1.0"
5
5
  end
data/lib/restiny.rb CHANGED
@@ -23,7 +23,7 @@ module Restiny
23
23
  BUNGIE_URL = "https://www.bungie.net"
24
24
  API_BASE_URL = BUNGIE_URL + "/platform"
25
25
 
26
- attr_accessor :api_key, :oauth_state, :oauth_client_id, :access_token
26
+ attr_accessor :api_key, :oauth_state, :oauth_client_id, :access_token, :user_agent
27
27
 
28
28
  # OAuth methods
29
29
 
@@ -55,7 +55,10 @@ module Restiny
55
55
 
56
56
  live_version = result.dig("version")
57
57
 
58
- if force_download || @manifest.nil? || @manifest_version != live_version
58
+ @manifests ||= {}
59
+ @manifest_versions ||= {}
60
+
61
+ if force_download || @manifests[locale].nil? || @manifest_versions[locale] != live_version
59
62
  url = BUNGIE_URL + result.dig("mobileWorldContentPaths", locale)
60
63
 
61
64
  zipped_file = Down.download(url)
@@ -63,12 +66,12 @@ module Restiny
63
66
 
64
67
  Zip::File.open(zipped_file) { |file| file.first.extract(database_file_path) }
65
68
 
66
- @manifest = Manifest.new(database_file_path, live_version)
67
- @manifest_version = live_version
69
+ @manifests[locale] = Manifest.new(database_file_path, live_version)
70
+ @manifest_versions[locale] = live_version
68
71
  end
69
72
 
70
- @manifest
71
- rescue Down::Error => e
73
+ @manifests[locale]
74
+ rescue Down::Error => error
72
75
  raise Restiny::NetworkError.new("Unable to download the manifest file", error.response.code)
73
76
  rescue Zip::Error => error
74
77
  raise Restiny::Error.new("Unable to unzip the manifest file (#{error})")
@@ -113,6 +116,17 @@ module Restiny
113
116
  api_get("User/GetMembershipsById/#{membership_id}/#{membership_type}/")
114
117
  end
115
118
 
119
+ def get_primary_membership(parent_membership_id, use_fallback: true)
120
+ result = get_user_memberships_by_id(parent_membership_id)
121
+ return nil if result.nil? || result["primaryMembershipId"].nil?
122
+
123
+ result["destinyMemberships"].each do |membership|
124
+ return membership if membership["membershipID"] == result["primaryMembershipId"]
125
+ end
126
+
127
+ return result["destinyMemberships"][0] if use_fallback
128
+ end
129
+
116
130
  def search_player_by_bungie_name(name, membership_type: Platform::ALL)
117
131
  display_name, display_name_code = name.split("#")
118
132
  if display_name.nil? || display_name_code.nil?
@@ -153,7 +167,7 @@ module Restiny
153
167
  end
154
168
 
155
169
  def default_headers
156
- { "User-Agent": "restiny v#{Restiny::VERSION}" }
170
+ { "User-Agent": @user_agent || "restiny v#{Restiny::VERSION}" }
157
171
  end
158
172
 
159
173
  def api_connection
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: restiny
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.0.0
4
+ version: 3.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Daniel Bogan
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-07-11 00:00:00.000000000 Z
11
+ date: 2023-08-18 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: faraday