nintendo_eshop 0.1.0 → 0.2.1

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: 0b5aad1fc3ec9ae00b695d50e092876aeb6db8b5d4c19603ea905ba49fd3e88e
4
- data.tar.gz: b5c26c915e8e5cc703c32152dd06b7e56378c964d77cec0ac12ff326ffe9caed
3
+ metadata.gz: 12f5dad40b2c47b627cb4fc2104e9d1cbbf4caacc63462dca74c391d3015051f
4
+ data.tar.gz: 5568ba79119aa10a65a26eef3308fdd902ccd4595d237e4cf2672383c5b9f2bc
5
5
  SHA512:
6
- metadata.gz: 7e1a501720baec7391a1e32f0343d3b5379d1e8355acf46b7d89f30276c993f336cfe4a8a2b99e4a4e9c0f4953351d83fa0ea75592035649c95e50b02603dacd
7
- data.tar.gz: aeb1fd14ec3b5d370336949a19827c4cb23b4af9c33d29be17e893144e48e13db51ce5095e09469289e0b384c8edac854615493b23b8ea68a8abe2e419ba9f35
6
+ metadata.gz: 8a296f6fb77265d5b92ce87f360ed70b52ee2bcc25fbb905d6e8aba51a58fdf2f396d06a2a671824ed2f24eba2a459632241cef5c8b8a7cb766d7c11370b09d9
7
+ data.tar.gz: f09b193df612e7728974efb8ea3fb1e6b181007e72de8f9ebeb9ba8d32381d6d09ad62e74bfec96d9335cb55bbc5136dd76971daacf42ae3c84f2f104e796277
data/.rspec_status CHANGED
@@ -1,11 +1,11 @@
1
1
  example_id | status | run_time |
2
2
  ------------------------------------------------------ | ------ | --------------- |
3
- ./spec/acceptance/retrieve_a_valid_record_spec.rb[1:1] | passed | 0.12552 seconds |
4
- ./spec/nintendo_eshop/game_spec.rb[1:1:1] | passed | 0.0032 seconds |
5
- ./spec/nintendo_eshop/game_spec.rb[1:1:2] | passed | 0.00406 seconds |
6
- ./spec/nintendo_eshop/game_spec.rb[1:1:3] | passed | 0.0034 seconds |
7
- ./spec/nintendo_eshop/game_spec.rb[1:1:4] | passed | 0.00478 seconds |
8
- ./spec/nintendo_eshop/game_spec.rb[1:1:5] | passed | 0.00013 seconds |
9
- ./spec/nintendo_eshop/games_list_spec.rb[1:1] | passed | 0.00227 seconds |
10
- ./spec/nintendo_eshop/games_list_spec.rb[1:2:1] | passed | 0.00325 seconds |
11
- ./spec/nintendo_eshop_spec.rb[1:1] | passed | 0.00127 seconds |
3
+ ./spec/acceptance/retrieve_a_valid_record_spec.rb[1:1] | passed | 0.12883 seconds |
4
+ ./spec/nintendo_eshop/game_spec.rb[1:1:1] | passed | 0.00211 seconds |
5
+ ./spec/nintendo_eshop/game_spec.rb[1:1:2] | passed | 0.00446 seconds |
6
+ ./spec/nintendo_eshop/game_spec.rb[1:1:3] | passed | 0.00191 seconds |
7
+ ./spec/nintendo_eshop/game_spec.rb[1:1:4] | passed | 0.00461 seconds |
8
+ ./spec/nintendo_eshop/game_spec.rb[1:1:5] | passed | 0.00023 seconds |
9
+ ./spec/nintendo_eshop/games_list_spec.rb[1:1] | passed | 0.00093 seconds |
10
+ ./spec/nintendo_eshop/games_list_spec.rb[1:2:1] | passed | 0.00163 seconds |
11
+ ./spec/nintendo_eshop_spec.rb[1:1] | passed | 0.00058 seconds |
data/Gemfile.lock CHANGED
@@ -1,56 +1,57 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- nintendo_eshop (0.1.0)
4
+ nintendo_eshop (0.2.1)
5
5
 
6
6
  GEM
7
7
  remote: https://rubygems.org/
8
8
  specs:
9
- addressable (2.6.0)
10
- public_suffix (>= 2.0.2, < 4.0)
9
+ addressable (2.7.0)
10
+ public_suffix (>= 2.0.2, < 5.0)
11
11
  ast (2.4.0)
12
- backport (1.1.1)
12
+ backport (1.1.2)
13
+ benchmark (0.1.0)
13
14
  coderay (1.1.2)
14
15
  crack (0.4.3)
15
16
  safe_yaml (~> 1.0.0)
16
- debase (0.2.2)
17
+ debase (0.2.4.1)
17
18
  debase-ruby_core_source (>= 0.10.2)
18
- debase-ruby_core_source (0.10.5)
19
+ debase-ruby_core_source (0.10.9)
19
20
  diff-lcs (1.3)
20
21
  docile (1.3.2)
21
- hashdiff (0.4.0)
22
- htmlentities (4.3.4)
23
- jaro_winkler (1.5.3)
24
- json (2.2.0)
25
- kramdown (1.17.0)
26
- method_source (0.9.2)
22
+ e2mmap (0.1.0)
23
+ hashdiff (1.0.1)
24
+ jaro_winkler (1.5.4)
25
+ json (2.3.0)
26
+ maruku (0.7.3)
27
+ method_source (1.0.0)
27
28
  mini_portile2 (2.4.0)
28
- nokogiri (1.10.3)
29
+ nokogiri (1.10.9)
29
30
  mini_portile2 (~> 2.4.0)
30
- parallel (1.17.0)
31
- parser (2.6.3.0)
31
+ parallel (1.19.1)
32
+ parser (2.7.1.0)
32
33
  ast (~> 2.4.0)
33
- pry (0.12.2)
34
- coderay (~> 1.1.0)
35
- method_source (~> 0.9.0)
36
- public_suffix (3.1.0)
34
+ pry (0.13.0)
35
+ coderay (~> 1.1)
36
+ method_source (~> 1.0)
37
+ public_suffix (4.0.3)
37
38
  rainbow (3.0.0)
38
- rake (12.3.2)
39
- reverse_markdown (1.1.0)
39
+ rake (13.0.1)
40
+ reverse_markdown (1.4.0)
40
41
  nokogiri
41
- rspec (3.8.0)
42
- rspec-core (~> 3.8.0)
43
- rspec-expectations (~> 3.8.0)
44
- rspec-mocks (~> 3.8.0)
45
- rspec-core (3.8.1)
46
- rspec-support (~> 3.8.0)
47
- rspec-expectations (3.8.4)
42
+ rspec (3.9.0)
43
+ rspec-core (~> 3.9.0)
44
+ rspec-expectations (~> 3.9.0)
45
+ rspec-mocks (~> 3.9.0)
46
+ rspec-core (3.9.1)
47
+ rspec-support (~> 3.9.1)
48
+ rspec-expectations (3.9.1)
48
49
  diff-lcs (>= 1.2.0, < 2.0)
49
- rspec-support (~> 3.8.0)
50
- rspec-mocks (3.8.1)
50
+ rspec-support (~> 3.9.0)
51
+ rspec-mocks (3.9.1)
51
52
  diff-lcs (>= 1.2.0, < 2.0)
52
- rspec-support (~> 3.8.0)
53
- rspec-support (3.8.2)
53
+ rspec-support (~> 3.9.0)
54
+ rspec-support (3.9.2)
54
55
  rspec_junit_formatter (0.4.1)
55
56
  rspec-core (>= 2, < 4, != 2.12.0)
56
57
  rubocop (0.71.0)
@@ -60,37 +61,39 @@ GEM
60
61
  rainbow (>= 2.2.2, < 4.0)
61
62
  ruby-progressbar (~> 1.7)
62
63
  unicode-display_width (>= 1.4.0, < 1.7)
63
- rubocop-performance (1.4.0)
64
+ rubocop-performance (1.5.2)
64
65
  rubocop (>= 0.71.0)
65
66
  ruby-debug-ide (0.7.0)
66
67
  rake (>= 0.8.1)
67
68
  ruby-progressbar (1.10.1)
68
69
  safe_yaml (1.0.5)
69
- simplecov (0.17.0)
70
+ simplecov (0.17.1)
70
71
  docile (~> 1.1)
71
72
  json (>= 1.8, < 3)
72
73
  simplecov-html (~> 0.10.0)
73
74
  simplecov-html (0.10.2)
74
- solargraph (0.34.2)
75
+ solargraph (0.38.6)
75
76
  backport (~> 1.1)
77
+ benchmark
76
78
  bundler (>= 1.17.2)
77
- htmlentities (~> 4.3, >= 4.3.4)
79
+ e2mmap
78
80
  jaro_winkler (~> 1.5)
79
- kramdown (~> 1.16)
81
+ maruku (~> 0.7, >= 0.7.3)
82
+ nokogiri (~> 1.9, >= 1.9.1)
80
83
  parser (~> 2.3)
81
84
  reverse_markdown (~> 1.0, >= 1.0.5)
82
85
  rubocop (~> 0.52)
83
- thor (~> 0.19, >= 0.19.4)
86
+ thor (~> 1.0)
84
87
  tilt (~> 2.0)
85
88
  yard (~> 0.9)
86
- thor (0.20.3)
87
- tilt (2.0.9)
88
- unicode-display_width (1.6.0)
89
- webmock (3.6.0)
89
+ thor (1.0.1)
90
+ tilt (2.0.10)
91
+ unicode-display_width (1.6.1)
92
+ webmock (3.8.3)
90
93
  addressable (>= 2.3.6)
91
94
  crack (>= 0.3.2)
92
95
  hashdiff (>= 0.4.0, < 2.0.0)
93
- yard (0.9.20)
96
+ yard (0.9.24)
94
97
 
95
98
  PLATFORMS
96
99
  ruby
@@ -99,14 +102,15 @@ DEPENDENCIES
99
102
  bundler (~> 1.17)
100
103
  debase
101
104
  nintendo_eshop!
105
+ nokogiri (>= 1.10.8)
102
106
  pry
103
- rake (~> 12.3)
107
+ rake (>= 12.3.3)
104
108
  rspec (~> 3.0)
105
109
  rspec_junit_formatter
106
110
  rubocop (~> 0.71.0)
107
111
  rubocop-performance
108
112
  ruby-debug-ide
109
- simplecov
113
+ simplecov (~> 0.17.0)
110
114
  solargraph
111
115
  webmock
112
116
 
data/README.md CHANGED
@@ -34,20 +34,28 @@ Use the provided `base_url`, `api_key` and `app_id`. These are provided as confi
34
34
  NintendoEshop.base_url = "https://u3b6gr4ua3-dsn.algolia.net"
35
35
  NintendoEshop.api_key = "9a20c93440cf63cf1a7008d75f7438bf"
36
36
  NintendoEshop.app_id = "U3B6GR4UA3"
37
+ ```
37
38
 
38
39
  ### Retrieve a game by ID (nsuid)
39
40
 
41
+ ```ruby
40
42
  game = NintendoEshop::Game.retrieve_by(id: "70010000001130")
41
43
 
42
- game.art # "/content/dam/noa/en_US/games/switch/s/super-mario-odyssey-switch/Switch_SuperMarioOdyssey_box.png"
44
+ game.art # "https://www.nintendo.com/content/dam/noa/en_US/games/switch/s/su..."
45
+ game.categories # [ "Action", "Platformer" ]
43
46
  game.current_price # 59.99
47
+ game.description # "Use amazing new abilities\u2014like the power to capture..."
48
+ game.esrb # "Everyone 10+"
44
49
  game.id # "70010000001130"
45
50
  game.msrp # 59.99
46
- game.object_id # 3ce3fb54-5f95-3a24-9101-7faa694c4b6f
51
+ game.object_id # "3ce3fb54-5f95-3a24-9101-7faa694c4b6f"
47
52
  game.platform # "Nintendo Switch"
53
+ game.release_date # #<Date: 2017-10-26 ...>
54
+ game.release_date_pretty # "Oct 26, 2017"
55
+ game.sale_percent # nil
48
56
  game.sale_price # nil
49
- game.title # Super Mario Odyssey"
50
- game.url # "/games/detail/super-mario-odyssey-switch"
57
+ game.title # "Super Mario Odyssey"
58
+ game.url # "https://www.nintendo.com/games/detail/super-mario-odyssey-switch">
51
59
  ```
52
60
 
53
61
  Or a game on sale
@@ -55,30 +63,27 @@ Or a game on sale
55
63
  ```ruby
56
64
  game = NintendoEshop::Game.retrieve_by(id: "70010000001539")
57
65
 
58
- game.art # "/content/dam/noa/en_US/games/switch/s/sonic-forces-switch/Switch_SonicForces_box.png"
59
- game.current_price # 14.99
66
+ game.art # "https://www.nintendo.com/content/dam/.../Switch_SonicForces_box.png"
67
+ game.categories # [ "Action" ]
68
+ game.current_price # 9.99
69
+ game.description # "From the team that brought you Sonic Colors and Generati..."
70
+ game.esrb # "Everyone 10+"
60
71
  game.id # "70010000001539"
61
- game.msrp # 29.99
62
- game.object_id # 26322c64-9268-3a24-822e-5e10f9e5cfc9
72
+ game.msrp # 19.99
73
+ game.object_id # "26322c64-9268-3a24-822e-5e10f9e5cfc9"
63
74
  game.platform # "Nintendo Switch"
64
- game.sale_price # 14.99
75
+ game.release_date # #<Date: 2017-11-07 ...>
76
+ game.release_date_pretty # "Nov 07, 2017"
77
+ game.sale_percent # 50%
78
+ game.sale_price # 9.99
65
79
  game.title # "Sonic Forces"
66
- game.url # "/games/detail/sonic-forces-switch"
80
+ game.url # "https://www.nintendo.com/games/detail/sonic-forces-switch">
67
81
  ```
68
82
 
69
83
  Or by object_id
70
84
 
71
85
  ```ruby
72
86
  game = NintendoEshop::Game.retrieve_by(object_id: "26851cb3-4f10-333a-8d7c-f9cae4a9bc03")
73
-
74
- game.id # "70010000001023"
75
- game.object_id # "26851cb3-4f10-333a-8d7c-f9cae4a9bc03"
76
- game.art # "/content/dam/noa/en_US/games/switch/b/bridge-constructor-portal-switch/Switch_BridgeConstructorPortal_box_eShop.png"
77
- game.msrp # 14.99
78
- game.platform # "Nintendo Switch"
79
- game.sale_price # 7.49
80
- game.title # "Bridge Constructor Portal"
81
- game.url # "/games/detail/bridge-constructor-portal-switch"
82
87
  ```
83
88
 
84
89
  ### Search by Title
@@ -127,6 +132,6 @@ To release
127
132
  Example
128
133
 
129
134
  ```
130
- git tag -a 0.1.0
135
+ git tag -m "Release 0.1.0" 0.1.0
131
136
  git push origin 0.1.0
132
137
  ```
@@ -1,10 +1,14 @@
1
1
  module NintendoEshop
2
2
  class Game < APIRequest
3
3
  attr_accessor :art
4
+ attr_accessor :categories
5
+ attr_accessor :description
6
+ attr_accessor :esrb
4
7
  attr_accessor :id
5
8
  attr_accessor :msrp
6
9
  attr_accessor :object_id
7
10
  attr_accessor :platform
11
+ attr_accessor :release_date
8
12
  attr_accessor :sale_price
9
13
  attr_accessor :title
10
14
  attr_accessor :url
@@ -32,6 +36,14 @@ module NintendoEshop
32
36
  sale_price || msrp
33
37
  end
34
38
 
39
+ def release_date_pretty
40
+ release_date.strftime("%b %d, %Y")
41
+ end
42
+
43
+ def sale_percent
44
+ ((1 - (sale_price / msrp)).round(2) * 100).to_i.to_s + "%" if sale_price
45
+ end
46
+
35
47
  class << self
36
48
  def retrieve_by(id_type = {})
37
49
  validate_argument(id_type)
@@ -72,7 +84,7 @@ module NintendoEshop
72
84
  {
73
85
  "indexName": "noa_aem_game_en_us",
74
86
  "objectID": object_id.to_s,
75
- "attributesToRetrieve": "url,objectID,title,nsuid,salePrice,msrp,boxArt,platform"
87
+ "attributesToRetrieve": "boxArt,categories,description,esrb,msrp,nsuid,objectID,platform,releaseDateMask,salePrice,title,url" # rubocop:disable Metrics/LineLength
76
88
  }
77
89
  ]
78
90
  }
@@ -86,15 +98,19 @@ module NintendoEshop
86
98
  end
87
99
  end
88
100
 
89
- def refresh_object(result)
90
- self.art = result.dig(:boxArt)
101
+ def refresh_object(result) # rubocop:disable Metrics/AbcSize, Metrics/MethodLength
102
+ self.art = "https://www.nintendo.com#{result.dig(:boxArt)}"
103
+ self.categories = result.dig(:categories)
104
+ self.description = result.dig(:description).tr("\n", " ").squeeze
105
+ self.esrb = result.dig(:esrb)
91
106
  self.id = result.dig(:nsuid)
92
107
  self.msrp = result.dig(:msrp)
93
108
  self.object_id = result.dig(:objectID)
94
109
  self.platform = result.dig(:platform)
110
+ self.release_date = Date.parse(result.dig(:releaseDateMask))
95
111
  self.sale_price = result.dig(:salePrice)
96
112
  self.title = result.dig(:title)
97
- self.url = result.dig(:url)
113
+ self.url = "https://www.nintendo.com#{result.dig(:url)}"
98
114
  end
99
115
  end
100
116
  end
@@ -42,16 +42,10 @@ module NintendoEshop
42
42
  "/1/indexes/noa_aem_game_en_us/query".freeze
43
43
  end
44
44
 
45
- def refresh_list_objects(objects) # rubocop:disable Metrics/MethodLength
45
+ def refresh_list_objects(objects)
46
46
  objects.map do |object|
47
47
  game = Game.new(id: object.dig(:nsuid))
48
- game.art = object.dig(:boxArt)
49
- game.msrp = object.dig(:msrp)
50
- game.object_id = object.dig(:objectID)
51
- game.platform = object.dig(:platform)
52
- game.sale_price = object.dig(:salePrice)
53
- game.title = object.dig(:title)
54
- game.url = object.dig(:url)
48
+ game.send(:refresh_object, object)
55
49
  game
56
50
  end
57
51
  end
@@ -1,3 +1,3 @@
1
1
  module NintendoEshop
2
- VERSION = "0.1.0".freeze
2
+ VERSION = "0.2.1".freeze
3
3
  end
@@ -1,6 +1,7 @@
1
1
  begin
2
2
  require "pry"
3
- rescue StandardError; end # rubocop:disable Lint/HandleExceptions
3
+ rescue Exception; end # rubocop:disable Lint/HandleExceptions, Lint/RescueException
4
+ require "date"
4
5
  require "json"
5
6
  require "net/http"
6
7
 
@@ -33,14 +33,15 @@ Gem::Specification.new do |spec|
33
33
 
34
34
  spec.add_development_dependency "bundler", "~> 1.17"
35
35
  spec.add_development_dependency "debase"
36
+ spec.add_development_dependency "nokogiri", ">= 1.10.8"
36
37
  spec.add_development_dependency "pry"
37
- spec.add_development_dependency "rake", "~> 12.3"
38
+ spec.add_development_dependency "rake", ">= 12.3.3"
38
39
  spec.add_development_dependency "rspec", "~> 3.0"
39
40
  spec.add_development_dependency "rspec_junit_formatter"
40
41
  spec.add_development_dependency "rubocop", "~> 0.71.0"
41
42
  spec.add_development_dependency "rubocop-performance"
42
43
  spec.add_development_dependency "ruby-debug-ide"
43
- spec.add_development_dependency "simplecov"
44
+ spec.add_development_dependency "simplecov", "~> 0.17.0"
44
45
  spec.add_development_dependency "solargraph"
45
46
  spec.add_development_dependency "webmock"
46
47
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: nintendo_eshop
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.2.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Rick Peyton
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2019-07-04 00:00:00.000000000 Z
11
+ date: 2020-04-04 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -38,6 +38,20 @@ dependencies:
38
38
  - - ">="
39
39
  - !ruby/object:Gem::Version
40
40
  version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: nokogiri
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: 1.10.8
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: 1.10.8
41
55
  - !ruby/object:Gem::Dependency
42
56
  name: pry
43
57
  requirement: !ruby/object:Gem::Requirement
@@ -56,16 +70,16 @@ dependencies:
56
70
  name: rake
57
71
  requirement: !ruby/object:Gem::Requirement
58
72
  requirements:
59
- - - "~>"
73
+ - - ">="
60
74
  - !ruby/object:Gem::Version
61
- version: '12.3'
75
+ version: 12.3.3
62
76
  type: :development
63
77
  prerelease: false
64
78
  version_requirements: !ruby/object:Gem::Requirement
65
79
  requirements:
66
- - - "~>"
80
+ - - ">="
67
81
  - !ruby/object:Gem::Version
68
- version: '12.3'
82
+ version: 12.3.3
69
83
  - !ruby/object:Gem::Dependency
70
84
  name: rspec
71
85
  requirement: !ruby/object:Gem::Requirement
@@ -140,16 +154,16 @@ dependencies:
140
154
  name: simplecov
141
155
  requirement: !ruby/object:Gem::Requirement
142
156
  requirements:
143
- - - ">="
157
+ - - "~>"
144
158
  - !ruby/object:Gem::Version
145
- version: '0'
159
+ version: 0.17.0
146
160
  type: :development
147
161
  prerelease: false
148
162
  version_requirements: !ruby/object:Gem::Requirement
149
163
  requirements:
150
- - - ">="
164
+ - - "~>"
151
165
  - !ruby/object:Gem::Version
152
- version: '0'
166
+ version: 0.17.0
153
167
  - !ruby/object:Gem::Dependency
154
168
  name: solargraph
155
169
  requirement: !ruby/object:Gem::Requirement