thegamesdb 1.1.0 → 1.1.1

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: '09c223ffcdbfefc714627f7673aac31836b8d20f76f4aa51f5cdb583ed4aaef6'
4
- data.tar.gz: 692abf6425da4f35d557fb3dba738b14584680822baf0d21dcf0ccd777045e44
3
+ metadata.gz: 477e3d9d2b073a86b77e82e6032a49f7c196e9eb9493ddbe233d5d1a569a4a95
4
+ data.tar.gz: 968a97e6b32aa648e40c443aca798c80eae9bec40275a350a2e762215a78fbcf
5
5
  SHA512:
6
- metadata.gz: a64df3a9904963cac3782dd221eca0e77ece3af43a08fc84e098dd21eb24abc1211dda4b49fec7fe50422117b102c8329df8ed4f8646c7da5bd3292e7ca6bfc3
7
- data.tar.gz: a141723f13ae4fc5fcfc597fd27def6f2a79eaf9a32e0ad6ecab8c9705af14deea7960857443dae3c084e9bafaba27ad2212a8770292febf4cddc0e010f254c6
6
+ metadata.gz: c6a757afd1711766e6de821fd4f7470751ba757e2b001db9ed013619ea106d7ac02ffd29f151324469cb474f58e019e585a983c448fc4165bffbb7fcf1768835
7
+ data.tar.gz: 90a01c2548018e0c3f6366bf13494fe67d9425e3230ec893684fb9ec09ad2ccb32fef56e578dc74a783fe942dc59669670e23f92cbedf9b633e5a783c127a140
@@ -1,11 +1,16 @@
1
1
  # Changelog
2
2
 
3
+ ## 1.1.1
4
+ * Adds `platform_id` parameter to `games_by_name`
5
+ * Adds `page` parameter to `games_by_name`
6
+ * Adds extra fields and boxart to `games_by_name` response
7
+ * Refactors `process_platform_games`
8
+
3
9
  ## 1.1.0
4
10
  * Adds `page` parameter to `games_by_platform_id` and includes `boxart`.
5
11
  * Adds all available fields from Platforms in `platforms`, updates tests. Changes `:slug` to `:alias` in platforms response, to map to same response from API.
6
12
  * Refactored `json_response` to use `includes` and extra data from the API response.
7
13
 
8
-
9
14
  ## 1.0.0
10
15
 
11
16
  * Updated to new API endpoint, API key is now required to use the gem. Request an API Key here: https://forums.thegamesdb.net/viewforum.php?f=10
@@ -9,6 +9,7 @@ module Gamesdb
9
9
  IMAGES_BASE_URL = 'https://legacy.thegamesdb.net/banners/'.freeze
10
10
 
11
11
  # Method for listing platform's games
12
+ # TODO: check (and test) that we support ',' delimited list
12
13
  # https://api.thegamesdb.net/#/operations/Games/GamesByPlatformID
13
14
  #
14
15
  # Parameters: platform id (int), page (int)
@@ -64,7 +65,7 @@ module Gamesdb
64
65
  end
65
66
 
66
67
  # Method for getting game info
67
- # TODO: name and platform parameters (for search)
68
+ # TODO: check (and test) that we support ',' delimited list
68
69
  # https://api.thegamesdb.net/#/operations/Games/GamesByGameID
69
70
  #
70
71
  # Parameters:
@@ -91,15 +92,27 @@ module Gamesdb
91
92
  #
92
93
  # Parameters:
93
94
  # - name (required)
95
+ # - platform (optional - platform id)
96
+ # - page (optional)
94
97
  #
95
98
  # == Returns:
96
99
  # Hash with game info: id, name (not-unique), release_date,
97
- # platform
100
+ # platform, etc.
98
101
  #
99
- def self.games_by_name(name)
102
+ def self.games_by_name(name, platform: nil, page: 1)
100
103
  url = 'Games/ByGameName'
101
- data = json_response(url, name: name)
102
- data['data']['games'].map { |game| symbolize_keys(game) }
104
+ params = {
105
+ fields: 'players,publishers,genres,overview,last_updated,rating,platform,coop,youtube,os,processor,ram,hdd,video,sound,alternates',
106
+ include: 'boxart',
107
+ name: name,
108
+ page: page
109
+ }
110
+ unless platform.nil?
111
+ params.merge!("filter[platform]" => platform)
112
+ end
113
+
114
+ data = json_response(url, params)
115
+ process_platform_games(data)
103
116
  end
104
117
 
105
118
  # This API feature returns a list of available artwork types and
@@ -119,7 +132,7 @@ module Gamesdb
119
132
  def self.game_images(id)
120
133
  url = 'Games/Images'
121
134
  data = json_response(url, games_id: id)
122
- return [] if data['data']['count'] == 0
135
+ return [] if data.dig('data', 'count') == (0 || nil)
123
136
 
124
137
  response = {}
125
138
  response[:base_url] = data['data']['base_url']['original']
@@ -199,15 +212,27 @@ module Gamesdb
199
212
  games = []
200
213
 
201
214
  data['data']['games'].each do |elem|
202
- name = elem['game_title']
203
215
  id = elem['id']
204
- date = elem['release_date']
205
- developers = elem['developers']
206
- if boxart = data.dig('include', 'boxart', 'data', id.to_s)
207
- image = data['include']['boxart']['base_url']['original'] +
208
- boxart.select { |a| a['side'] == 'front' }.first['filename'] || ''
209
- end
210
- games << { name: name, id: id, release_date: date, developers: developers, image: image }
216
+ games << {
217
+ name: elem['game_title'],
218
+ id: id,
219
+ release_date: elem['release_date'],
220
+ platform: elem['platform'],
221
+ developers: elem['developers'],
222
+ players: elem['players'],
223
+ publishers: elem['publishers'],
224
+ genres: elem['genres'],
225
+ overview: elem['overview'],
226
+ last_updated: elem['last_updated'],
227
+ rating: elem['rating'],
228
+ coop: elem['coop'],
229
+ youtube: elem['youtube'],
230
+ alternates: elem['alternates'],
231
+ image: if boxart = data.dig('include', 'boxart', 'data', id.to_s)
232
+ data['include']['boxart']['base_url']['original'] +
233
+ boxart.select { |a| a['side'] == 'front' }.first['filename'] || ''
234
+ end
235
+ }
211
236
  end
212
237
  games
213
238
  end
@@ -1,4 +1,4 @@
1
1
  # Gem version
2
2
  module Gamesdb
3
- VERSION = '1.1.0'.freeze
3
+ VERSION = '1.1.1'.freeze
4
4
  end
@@ -35,12 +35,45 @@ describe 'Gamesdb - games', :vcr do
35
35
  it 'should return a list' do
36
36
  game = @games_list.first
37
37
  game[:id].must_be_kind_of Integer
38
- game[:game_title].must_be_kind_of String
38
+ game[:name].must_be_kind_of String
39
39
  game[:platform].must_be_kind_of Integer
40
40
  game[:release_date].must_be_kind_of String
41
41
  end
42
42
  end
43
43
 
44
+ describe 'games by name pages' do
45
+ before do
46
+ @first_page = Gamesdb.games_by_name('mario', page: 1)
47
+ @second_page = Gamesdb.games_by_name('mario', page: 2)
48
+ end
49
+
50
+ it 'should return games in platform by id' do
51
+ @first_page.count.wont_be :<, 0
52
+ @first_page.count.must_equal 20
53
+ end
54
+
55
+ it 'should return games in the platform for the second page' do
56
+ @second_page.count.wont_be :<, 0
57
+ @second_page.count.must_equal 20
58
+ (@first_page & @second_page).must_equal []
59
+ end
60
+ end
61
+
62
+ describe 'games by name and platform' do
63
+ before do
64
+ @games_list = Gamesdb.games_by_name('mario', platform: 7)
65
+ end
66
+
67
+ it 'should return a list' do
68
+ @games_list.each do |game|
69
+ game[:id].must_be_kind_of Integer
70
+ game[:id].must_be_kind_of Integer
71
+ game[:name].must_be_kind_of String
72
+ game[:platform].must_equal 7
73
+ end
74
+ end
75
+ end
76
+
44
77
  describe 'games art', :vcr do
45
78
  describe 'when most of the art is available' do
46
79
  before do
@@ -39,7 +39,7 @@ describe 'GamesDB - platforms', :vcr do
39
39
  end
40
40
  end
41
41
 
42
- describe 'platform_games' do
42
+ describe 'platform_games pages' do
43
43
  before do
44
44
  platforms = Gamesdb.platforms
45
45
  @first_page = Gamesdb.games_by_platform_id(platforms[0][:id])
@@ -56,7 +56,6 @@ describe 'GamesDB - platforms', :vcr do
56
56
  @second_page.count.must_equal 20
57
57
  (@first_page & @second_page).must_equal []
58
58
  end
59
-
60
59
  end
61
60
 
62
61
  describe 'platform' do
@@ -25,4 +25,11 @@ Gem::Specification.new do |spec|
25
25
  spec.add_development_dependency 'simplecov'
26
26
  spec.add_development_dependency 'vcr', '~> 4'
27
27
  spec.add_development_dependency 'webmock'
28
+ spec.metadata = {
29
+ "bug_tracker_uri" => "https://github.com/picandocodigo/gamesdb/issues",
30
+ "changelog_uri" => "https://github.com/picandocodigo/gamesdb/blob/master/CHANGELOG.md",
31
+ "documentation_uri" => "https://github.com/picandocodigo/gamesdb/blob/master/README.md#gamesdb",
32
+ "homepage_uri" => "https://github.com/picandocodigo/gamesdb",
33
+ "source_code_uri" => "https://github.com/picandocodigo/gamesdb",
34
+ }
28
35
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: thegamesdb
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.0
4
+ version: 1.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Fernando Briano
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-09-07 00:00:00.000000000 Z
11
+ date: 2019-09-11 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -146,7 +146,12 @@ files:
146
146
  homepage: http://github.com/picandocodigo/gamesdb
147
147
  licenses:
148
148
  - MIT
149
- metadata: {}
149
+ metadata:
150
+ bug_tracker_uri: https://github.com/picandocodigo/gamesdb/issues
151
+ changelog_uri: https://github.com/picandocodigo/gamesdb/blob/master/CHANGELOG.md
152
+ documentation_uri: https://github.com/picandocodigo/gamesdb/blob/master/README.md#gamesdb
153
+ homepage_uri: https://github.com/picandocodigo/gamesdb
154
+ source_code_uri: https://github.com/picandocodigo/gamesdb
150
155
  post_install_message:
151
156
  rdoc_options: []
152
157
  require_paths: