nintendo_eshop 0.1.1 → 0.2.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.rspec_status +9 -9
- data/Gemfile.lock +1 -1
- data/README.md +24 -19
- data/lib/nintendo_eshop.rb +1 -0
- data/lib/nintendo_eshop/game.rb +20 -4
- data/lib/nintendo_eshop/games_list.rb +2 -8
- data/lib/nintendo_eshop/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 0d874bca76474ca9bc0faafb383b2b516f732cf9cd76ebf0685ac63ed5da5b06
|
4
|
+
data.tar.gz: a2beeed00c829013a7c8427ace76c88079a36c9df84d31e87ebdb5ff34566a10
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ec4eee7216a52d4232762570de13e73a804c2870afbe2d29ed557c549d25338ba78f658208eeecc65d1c8498f3a05eeef634b68b6ba32485be75238d2ef50911
|
7
|
+
data.tar.gz: e3f0f5b3d293aa387050abbdb5fef4f890c78eecf25fcbb1ae7c3d386db2fcc198db4f3d805bb2e45c4d8b740aa29e762689b889c08b15e3a829e1a0d4307e76
|
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.
|
4
|
-
./spec/nintendo_eshop/game_spec.rb[1:1:1] | passed | 0.
|
5
|
-
./spec/nintendo_eshop/game_spec.rb[1:1:2] | passed | 0.
|
6
|
-
./spec/nintendo_eshop/game_spec.rb[1:1:3] | passed | 0.
|
7
|
-
./spec/nintendo_eshop/game_spec.rb[1:1:4] | passed | 0.
|
8
|
-
./spec/nintendo_eshop/game_spec.rb[1:1:5] | passed | 0.
|
9
|
-
./spec/nintendo_eshop/games_list_spec.rb[1:1] | passed | 0.
|
10
|
-
./spec/nintendo_eshop/games_list_spec.rb[1:2:1] | passed | 0.
|
11
|
-
./spec/nintendo_eshop_spec.rb[1:1] | passed | 0.
|
3
|
+
./spec/acceptance/retrieve_a_valid_record_spec.rb[1:1] | passed | 0.13332 seconds |
|
4
|
+
./spec/nintendo_eshop/game_spec.rb[1:1:1] | passed | 0.00681 seconds |
|
5
|
+
./spec/nintendo_eshop/game_spec.rb[1:1:2] | passed | 0.00613 seconds |
|
6
|
+
./spec/nintendo_eshop/game_spec.rb[1:1:3] | passed | 0.0054 seconds |
|
7
|
+
./spec/nintendo_eshop/game_spec.rb[1:1:4] | passed | 0.00744 seconds |
|
8
|
+
./spec/nintendo_eshop/game_spec.rb[1:1:5] | passed | 0.00035 seconds |
|
9
|
+
./spec/nintendo_eshop/games_list_spec.rb[1:1] | passed | 0.00204 seconds |
|
10
|
+
./spec/nintendo_eshop/games_list_spec.rb[1:2:1] | passed | 0.00552 seconds |
|
11
|
+
./spec/nintendo_eshop_spec.rb[1:1] | passed | 0.0042 seconds |
|
data/Gemfile.lock
CHANGED
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/
|
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
|
59
|
-
game.
|
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 #
|
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.
|
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
|
data/lib/nintendo_eshop.rb
CHANGED
data/lib/nintendo_eshop/game.rb
CHANGED
@@ -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": "
|
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)
|
45
|
+
def refresh_list_objects(objects)
|
46
46
|
objects.map do |object|
|
47
47
|
game = Game.new(id: object.dig(:nsuid))
|
48
|
-
game.
|
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
|
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.
|
4
|
+
version: 0.2.0
|
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-
|
11
|
+
date: 2019-07-06 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|