gamesdb 0.0.1 → 1.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.
- data/Gemfile.lock +4 -2
- data/gamesdb.gemspec +1 -0
- data/lib/gamesdb.rb +3 -0
- data/lib/gamesdb/client.rb +8 -1
- data/lib/gamesdb/models/game.rb +16 -1
- data/lib/gamesdb/models/games.rb +6 -0
- data/lib/gamesdb/models/platform.rb +29 -0
- data/lib/gamesdb/models/platforms.rb +16 -0
- data/lib/gamesdb/requests/get_game.rb +16 -0
- data/lib/gamesdb/requests/get_platform.rb +16 -0
- data/lib/gamesdb/requests/get_platform_games.rb +16 -0
- data/lib/gamesdb/requests/list_platforms.rb +15 -0
- data/lib/gamesdb/saxdocument.rb +1 -3
- data/lib/gamesdb/seeds/platforms.yaml +146 -0
- data/lib/gamesdb/version.rb +1 -1
- data/spec/games_spec.rb +6 -0
- data/spec/platforms_spec.rb +22 -0
- metadata +25 -1
data/Gemfile.lock
CHANGED
|
@@ -2,6 +2,7 @@ PATH
|
|
|
2
2
|
remote: .
|
|
3
3
|
specs:
|
|
4
4
|
gamesdb (0.0.1)
|
|
5
|
+
awesome_print
|
|
5
6
|
cistern
|
|
6
7
|
excon
|
|
7
8
|
nokogiri
|
|
@@ -10,7 +11,8 @@ PATH
|
|
|
10
11
|
GEM
|
|
11
12
|
remote: https://rubygems.org/
|
|
12
13
|
specs:
|
|
13
|
-
|
|
14
|
+
awesome_print (1.1.0)
|
|
15
|
+
cistern (0.2.1)
|
|
14
16
|
coderay (1.0.8)
|
|
15
17
|
diff-lcs (1.1.3)
|
|
16
18
|
excon (0.16.10)
|
|
@@ -26,7 +28,7 @@ GEM
|
|
|
26
28
|
lumberjack (1.0.2)
|
|
27
29
|
method_source (0.8.1)
|
|
28
30
|
mime-types (1.21)
|
|
29
|
-
nokogiri (1.5.
|
|
31
|
+
nokogiri (1.5.6)
|
|
30
32
|
pry (0.9.10)
|
|
31
33
|
coderay (~> 1.0.5)
|
|
32
34
|
method_source (~> 0.8)
|
data/gamesdb.gemspec
CHANGED
data/lib/gamesdb.rb
CHANGED
data/lib/gamesdb/client.rb
CHANGED
|
@@ -6,6 +6,13 @@ class Gamesdb::Client < Cistern::Service
|
|
|
6
6
|
model :game
|
|
7
7
|
collection :games
|
|
8
8
|
request :list_games
|
|
9
|
+
request :get_game
|
|
10
|
+
|
|
11
|
+
model :platform
|
|
12
|
+
collection :platforms
|
|
13
|
+
request :list_platforms
|
|
14
|
+
request :get_platform
|
|
15
|
+
request :get_platform_games
|
|
9
16
|
|
|
10
17
|
class Real
|
|
11
18
|
attr_reader :connection
|
|
@@ -23,7 +30,7 @@ class Gamesdb::Client < Cistern::Service
|
|
|
23
30
|
headers = options[:headers] || {}
|
|
24
31
|
body = options[:body] || nil
|
|
25
32
|
expects = options[:expects] || 200
|
|
26
|
-
query = options[:query] ||
|
|
33
|
+
query = options[:query] || {}
|
|
27
34
|
|
|
28
35
|
connect_hash = {
|
|
29
36
|
:method => method,
|
data/lib/gamesdb/models/game.rb
CHANGED
|
@@ -2,6 +2,21 @@ class Gamesdb::Client::Game < Cistern::Model
|
|
|
2
2
|
identity :id
|
|
3
3
|
|
|
4
4
|
attribute :game_title, aliases: "GameTitle"
|
|
5
|
-
attribute :
|
|
5
|
+
attribute :release_date, aliases: "ReleaseDate"
|
|
6
6
|
attribute :platform, aliases: "Platform"
|
|
7
|
+
attribute :overview, aliases: "Overview"
|
|
8
|
+
attribute :esrb, aliases: "ESRB"
|
|
9
|
+
attribute :genres, aliases: "Genres", squash: "genre"
|
|
10
|
+
attribute :players, aliases: "Players"
|
|
11
|
+
attribute :coop, aliases: "Co-op"
|
|
12
|
+
attribute :youtube, aliases: "Youtube"
|
|
13
|
+
attribute :publisher, aliases: "Publisher"
|
|
14
|
+
attribute :developer, aliases: "Developer"
|
|
15
|
+
attribute :rating, aliases: "Rating"
|
|
16
|
+
attribute :fanart, squash: "Images", type: Array
|
|
17
|
+
attribute :boxart, squash: "Images", type: Array
|
|
18
|
+
attribute :banner, squash: "Images", type: Array
|
|
19
|
+
attribute :screenshot, squash: "Images", type: Array
|
|
20
|
+
attribute :thumb, squash: "Images", type: Array
|
|
21
|
+
attribute :clearlogo, squash: "Images", type: Array
|
|
7
22
|
end
|
data/lib/gamesdb/models/games.rb
CHANGED
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
class Gamesdb::Client::Platform < Cistern::Model
|
|
2
|
+
identity :id
|
|
3
|
+
|
|
4
|
+
attribute :name
|
|
5
|
+
attribute :alias
|
|
6
|
+
attribute :console
|
|
7
|
+
attribute :controller
|
|
8
|
+
attribute :overview
|
|
9
|
+
attribute :developer
|
|
10
|
+
attribute :manufacturer
|
|
11
|
+
attribute :cpu
|
|
12
|
+
attribute :memory
|
|
13
|
+
attribute :graphics
|
|
14
|
+
attribute :sound
|
|
15
|
+
attribute :display
|
|
16
|
+
attribute :media
|
|
17
|
+
attribute :maxcontrollers
|
|
18
|
+
attribute :rating, aliases: "Rating"
|
|
19
|
+
attribute :fanart, squash: "Images", type: Array
|
|
20
|
+
attribute :boxart, squash: "Images", type: Array
|
|
21
|
+
attribute :banner, squash: "Images", type: Array
|
|
22
|
+
attribute :consoleart, squash: "Images", type: Array
|
|
23
|
+
attribute :controllerart, squash: "Images", type: Array
|
|
24
|
+
|
|
25
|
+
def games
|
|
26
|
+
data = connection.get_platform_games(identity)["Game"]
|
|
27
|
+
connection.games.load(data)
|
|
28
|
+
end
|
|
29
|
+
end
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
class Gamesdb::Client::Platforms < Cistern::Collection
|
|
2
|
+
|
|
3
|
+
model Gamesdb::Client::Platform
|
|
4
|
+
|
|
5
|
+
def all
|
|
6
|
+
if data = self.connection.list_platforms["Platforms"]["Platform"]
|
|
7
|
+
self.clone.load(data)
|
|
8
|
+
end
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
def get(id)
|
|
12
|
+
if data = self.connection.get_platform(id)["Platform"]
|
|
13
|
+
self.clone.new(data)
|
|
14
|
+
end
|
|
15
|
+
end
|
|
16
|
+
end
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
class Gamesdb::Client
|
|
2
|
+
class Real
|
|
3
|
+
def get_game(id)
|
|
4
|
+
request(
|
|
5
|
+
:path => "/GetGame.php",
|
|
6
|
+
:query => {"id" => id}
|
|
7
|
+
)
|
|
8
|
+
end
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
class Mock
|
|
12
|
+
def get_game(id)
|
|
13
|
+
YAML.load_file(File.expand_path("../../seeds/games.yaml", __FILE__))
|
|
14
|
+
end
|
|
15
|
+
end
|
|
16
|
+
end
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
class Gamesdb::Client
|
|
2
|
+
class Real
|
|
3
|
+
def get_platform(id)
|
|
4
|
+
request(
|
|
5
|
+
:path => "/GetPlatform.php",
|
|
6
|
+
:query => {"id" => id}
|
|
7
|
+
)
|
|
8
|
+
end
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
class Mock
|
|
12
|
+
def get_platform
|
|
13
|
+
YAML.load_file(File.expand_path("../../seeds/platforms.yaml", __FILE__))
|
|
14
|
+
end
|
|
15
|
+
end
|
|
16
|
+
end
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
class Gamesdb::Client
|
|
2
|
+
class Real
|
|
3
|
+
def get_platform_games(id)
|
|
4
|
+
request(
|
|
5
|
+
:path => "/GetPlatformGames.php",
|
|
6
|
+
:query => {"platform" => id}
|
|
7
|
+
)
|
|
8
|
+
end
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
class Mock
|
|
12
|
+
def get_platform_games(id)
|
|
13
|
+
games = YAML.load_file(File.expand_path("../../seeds/games.yaml", __FILE__))["Game"]
|
|
14
|
+
end
|
|
15
|
+
end
|
|
16
|
+
end
|
data/lib/gamesdb/saxdocument.rb
CHANGED
|
@@ -0,0 +1,146 @@
|
|
|
1
|
+
---
|
|
2
|
+
basePlatformUrl: http://thegamesdb.net/platform/
|
|
3
|
+
Platforms:
|
|
4
|
+
- Platform:
|
|
5
|
+
- id: '25'
|
|
6
|
+
name: 3DO
|
|
7
|
+
alias: 3do
|
|
8
|
+
- id: '4911'
|
|
9
|
+
name: Amiga
|
|
10
|
+
alias: amiga
|
|
11
|
+
- id: '4914'
|
|
12
|
+
name: Amstrad CPC
|
|
13
|
+
alias: amstrad-cpc
|
|
14
|
+
- id: '4916'
|
|
15
|
+
name: Android
|
|
16
|
+
- id: '23'
|
|
17
|
+
name: Arcade
|
|
18
|
+
alias: arcade
|
|
19
|
+
- id: '22'
|
|
20
|
+
name: Atari 2600
|
|
21
|
+
alias: atari-2600
|
|
22
|
+
- id: '26'
|
|
23
|
+
name: Atari 5200
|
|
24
|
+
alias: atari-5200
|
|
25
|
+
- id: '27'
|
|
26
|
+
name: Atari 7800
|
|
27
|
+
alias: atari-7800
|
|
28
|
+
- id: '28'
|
|
29
|
+
name: Atari Jaguar
|
|
30
|
+
alias: atari-jaguar
|
|
31
|
+
- id: '29'
|
|
32
|
+
name: Atari Jaguar CD
|
|
33
|
+
alias: atari-jaguar-cd
|
|
34
|
+
- id: '30'
|
|
35
|
+
name: Atari XE
|
|
36
|
+
alias: atari-xe
|
|
37
|
+
- id: '31'
|
|
38
|
+
name: Colecovision
|
|
39
|
+
alias: colecovision
|
|
40
|
+
- id: '40'
|
|
41
|
+
name: Commodore 64
|
|
42
|
+
alias: commodore-64
|
|
43
|
+
- id: '32'
|
|
44
|
+
name: Intellivision
|
|
45
|
+
alias: intellivision
|
|
46
|
+
- id: '4915'
|
|
47
|
+
name: IOS
|
|
48
|
+
- id: '37'
|
|
49
|
+
name: Mac OS
|
|
50
|
+
alias: mac-os
|
|
51
|
+
- id: '14'
|
|
52
|
+
name: Microsoft Xbox
|
|
53
|
+
alias: microsoft-xbox
|
|
54
|
+
- id: '15'
|
|
55
|
+
name: Microsoft Xbox 360
|
|
56
|
+
alias: microsoft-xbox-360
|
|
57
|
+
- id: '24'
|
|
58
|
+
name: NeoGeo
|
|
59
|
+
alias: neogeo
|
|
60
|
+
- id: '4912'
|
|
61
|
+
name: Nintendo 3DS
|
|
62
|
+
alias: nintendo-3ds
|
|
63
|
+
- id: '3'
|
|
64
|
+
name: Nintendo 64
|
|
65
|
+
alias: nintendo-64
|
|
66
|
+
- id: '8'
|
|
67
|
+
name: Nintendo DS
|
|
68
|
+
alias: nintendo-ds
|
|
69
|
+
- id: '7'
|
|
70
|
+
name: Nintendo Entertainment System (NES)
|
|
71
|
+
alias: nintendo-entertainment-system-nes
|
|
72
|
+
- id: '4'
|
|
73
|
+
name: Nintendo Game Boy
|
|
74
|
+
alias: nintendo-gameboy
|
|
75
|
+
- id: '5'
|
|
76
|
+
name: Nintendo Game Boy Advance
|
|
77
|
+
alias: nintendo-gameboy-advance
|
|
78
|
+
- id: '41'
|
|
79
|
+
name: Nintendo Game Boy Color
|
|
80
|
+
alias: nintendo-gameboy-color
|
|
81
|
+
- id: '2'
|
|
82
|
+
name: Nintendo GameCube
|
|
83
|
+
alias: nintendo-gamecube
|
|
84
|
+
- id: '4918'
|
|
85
|
+
name: Nintendo Virtual Boy
|
|
86
|
+
alias: nintendo-virtual-boy
|
|
87
|
+
- id: '9'
|
|
88
|
+
name: Nintendo Wii
|
|
89
|
+
alias: nintendo-wii
|
|
90
|
+
- id: '38'
|
|
91
|
+
name: Nintendo Wii U
|
|
92
|
+
alias: nintendo-wii-u
|
|
93
|
+
- id: '1'
|
|
94
|
+
name: PC
|
|
95
|
+
alias: pc
|
|
96
|
+
- id: '4917'
|
|
97
|
+
name: Philips CD-i
|
|
98
|
+
alias: philips-cd-i
|
|
99
|
+
- id: '33'
|
|
100
|
+
name: Sega 32X
|
|
101
|
+
alias: sega-32x
|
|
102
|
+
- id: '21'
|
|
103
|
+
name: Sega CD
|
|
104
|
+
alias: sega-cd
|
|
105
|
+
- id: '16'
|
|
106
|
+
name: Sega Dreamcast
|
|
107
|
+
alias: sega-dreamcast
|
|
108
|
+
- id: '20'
|
|
109
|
+
name: Sega Game Gear
|
|
110
|
+
alias: sega-game-gear
|
|
111
|
+
- id: '18'
|
|
112
|
+
name: Sega Genesis
|
|
113
|
+
alias: sega-genesis
|
|
114
|
+
- id: '35'
|
|
115
|
+
name: Sega Master System
|
|
116
|
+
alias: sega-master-system
|
|
117
|
+
- id: '36'
|
|
118
|
+
name: Sega Mega Drive
|
|
119
|
+
alias: sega-mega-drive
|
|
120
|
+
- id: '17'
|
|
121
|
+
name: Sega Saturn
|
|
122
|
+
alias: sega-saturn
|
|
123
|
+
- id: '4913'
|
|
124
|
+
name: Sinclair ZX Spectrum
|
|
125
|
+
alias: sinclair-zx-spectrum
|
|
126
|
+
- id: '10'
|
|
127
|
+
name: Sony Playstation
|
|
128
|
+
alias: sony-playstation
|
|
129
|
+
- id: '11'
|
|
130
|
+
name: Sony Playstation 2
|
|
131
|
+
alias: sony-playstation-2
|
|
132
|
+
- id: '12'
|
|
133
|
+
name: Sony Playstation 3
|
|
134
|
+
alias: sony-playstation-3
|
|
135
|
+
- id: '39'
|
|
136
|
+
name: Sony Playstation Vita
|
|
137
|
+
alias: sony-playstation-vita
|
|
138
|
+
- id: '13'
|
|
139
|
+
name: Sony PSP
|
|
140
|
+
alias: sony-psp
|
|
141
|
+
- id: '6'
|
|
142
|
+
name: Super Nintendo (SNES)
|
|
143
|
+
alias: super-nintendo-snes
|
|
144
|
+
- id: '34'
|
|
145
|
+
name: TurboGrafx 16
|
|
146
|
+
alias: turbografx-16
|
data/lib/gamesdb/version.rb
CHANGED
data/spec/games_spec.rb
CHANGED
|
@@ -7,4 +7,10 @@ describe "Gamesdb::Games" do
|
|
|
7
7
|
games.should_not be_empty
|
|
8
8
|
games.first.should be_a_kind_of(Gamesdb::Client::Game)
|
|
9
9
|
end
|
|
10
|
+
|
|
11
|
+
it "should get a game" do
|
|
12
|
+
game = client.games.get(15)
|
|
13
|
+
game.should_not be_nil
|
|
14
|
+
game.should be_a_kind_of(Gamesdb::Client::Game)
|
|
15
|
+
end
|
|
10
16
|
end
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
|
|
3
|
+
describe "Gamesdb::Platforms" do
|
|
4
|
+
let(:client) { create_client }
|
|
5
|
+
it "should have platforms" do
|
|
6
|
+
platforms = client.platforms.all
|
|
7
|
+
platforms.should_not be_empty
|
|
8
|
+
platforms.first.should be_a_kind_of(Gamesdb::Client::Platform)
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
it "should get a platform" do
|
|
12
|
+
platform = client.platforms.get(15)
|
|
13
|
+
platform.should_not be_nil
|
|
14
|
+
platform.should be_a_kind_of(Gamesdb::Client::Platform)
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
it "should have platform games" do
|
|
18
|
+
platform = client.platforms.get(15)
|
|
19
|
+
platform.games.should_not be_nil
|
|
20
|
+
platform.games.first.should be_a_kind_of(Gamesdb::Client::Game)
|
|
21
|
+
end
|
|
22
|
+
end
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: gamesdb
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version:
|
|
4
|
+
version: '1.0'
|
|
5
5
|
prerelease:
|
|
6
6
|
platform: ruby
|
|
7
7
|
authors:
|
|
@@ -75,6 +75,22 @@ dependencies:
|
|
|
75
75
|
- - ! '>='
|
|
76
76
|
- !ruby/object:Gem::Version
|
|
77
77
|
version: '0'
|
|
78
|
+
- !ruby/object:Gem::Dependency
|
|
79
|
+
name: awesome_print
|
|
80
|
+
requirement: !ruby/object:Gem::Requirement
|
|
81
|
+
none: false
|
|
82
|
+
requirements:
|
|
83
|
+
- - ! '>='
|
|
84
|
+
- !ruby/object:Gem::Version
|
|
85
|
+
version: '0'
|
|
86
|
+
type: :runtime
|
|
87
|
+
prerelease: false
|
|
88
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
89
|
+
none: false
|
|
90
|
+
requirements:
|
|
91
|
+
- - ! '>='
|
|
92
|
+
- !ruby/object:Gem::Version
|
|
93
|
+
version: '0'
|
|
78
94
|
description:
|
|
79
95
|
email: eugene@xtreme-computers.net
|
|
80
96
|
executables: []
|
|
@@ -89,11 +105,19 @@ files:
|
|
|
89
105
|
- lib/gamesdb/client.rb
|
|
90
106
|
- lib/gamesdb/models/game.rb
|
|
91
107
|
- lib/gamesdb/models/games.rb
|
|
108
|
+
- lib/gamesdb/models/platform.rb
|
|
109
|
+
- lib/gamesdb/models/platforms.rb
|
|
110
|
+
- lib/gamesdb/requests/get_game.rb
|
|
111
|
+
- lib/gamesdb/requests/get_platform.rb
|
|
112
|
+
- lib/gamesdb/requests/get_platform_games.rb
|
|
92
113
|
- lib/gamesdb/requests/list_games.rb
|
|
114
|
+
- lib/gamesdb/requests/list_platforms.rb
|
|
93
115
|
- lib/gamesdb/saxdocument.rb
|
|
94
116
|
- lib/gamesdb/seeds/games.yaml
|
|
117
|
+
- lib/gamesdb/seeds/platforms.yaml
|
|
95
118
|
- lib/gamesdb/version.rb
|
|
96
119
|
- spec/games_spec.rb
|
|
120
|
+
- spec/platforms_spec.rb
|
|
97
121
|
- spec/spec_helper.rb
|
|
98
122
|
- spec/support/client_helper.rb
|
|
99
123
|
homepage: https://github.com/ehowe/gamesdb.git
|