giantbomb-api 1.5.7
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 +7 -0
- data/.gitignore +9 -0
- data/.rspec +2 -0
- data/.travis.yml +5 -0
- data/Gemfile +4 -0
- data/LICENSE.txt +21 -0
- data/README.md +93 -0
- data/Rakefile +6 -0
- data/bin/console +14 -0
- data/bin/setup +7 -0
- data/giantbomb.gemspec +23 -0
- data/lib/giantbomb.rb +25 -0
- data/lib/giantbomb/api.rb +18 -0
- data/lib/giantbomb/character.rb +40 -0
- data/lib/giantbomb/company.rb +44 -0
- data/lib/giantbomb/concept.rb +38 -0
- data/lib/giantbomb/franchise.rb +32 -0
- data/lib/giantbomb/game.rb +55 -0
- data/lib/giantbomb/location.rb +27 -0
- data/lib/giantbomb/object.rb +36 -0
- data/lib/giantbomb/person.rb +41 -0
- data/lib/giantbomb/platform.rb +30 -0
- data/lib/giantbomb/resource.rb +58 -0
- data/lib/giantbomb/review.rb +27 -0
- data/lib/giantbomb/search.rb +112 -0
- data/lib/giantbomb/user_review.rb +24 -0
- data/lib/giantbomb/version.rb +12 -0
- data/lib/giantbomb/video.rb +24 -0
- data/spec/giantbomb_spec.rb +11 -0
- data/spec/spec_helper.rb +2 -0
- metadata +94 -0
checksums.yaml
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
---
|
|
2
|
+
SHA1:
|
|
3
|
+
metadata.gz: 032b2d2f6dabd3c02d3816ffba774a88d3d3a7e2
|
|
4
|
+
data.tar.gz: 6beefb52f5e58d0aff73c087c147f1b394f35ccf
|
|
5
|
+
SHA512:
|
|
6
|
+
metadata.gz: c2fd4be30245fac477442acda251ca472f60501e8d0e6d4f27167b187e5124b8319d6c8e7f20ffaaa3ad082d196278d9a12d3e76423e1b3f79ba8fbb3e539057
|
|
7
|
+
data.tar.gz: a6d899ca0572a4ed456a978c13a3e8843a5373cb1e1dee7b6a6073098950a7288a7517491e9494b69fe43199f41ca94d3d4eca1eafba298dcbf6e38a6a88a573
|
data/.gitignore
ADDED
data/.rspec
ADDED
data/.travis.yml
ADDED
data/Gemfile
ADDED
data/LICENSE.txt
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
The MIT License (MIT)
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2015 Vlad Radulescu
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in
|
|
13
|
+
all copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
|
21
|
+
THE SOFTWARE.
|
data/README.md
ADDED
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
## A Ruby wrapper for the GiantBomb API
|
|
2
|
+
|
|
3
|
+
All credits goes to [intelekshual](https://github.com/intelekshual) for creating
|
|
4
|
+
mostly everything :)
|
|
5
|
+
|
|
6
|
+
## Installation
|
|
7
|
+
|
|
8
|
+
Add this line to your application's Gemfile:
|
|
9
|
+
|
|
10
|
+
```ruby
|
|
11
|
+
gem 'giantbomb'
|
|
12
|
+
```
|
|
13
|
+
|
|
14
|
+
And then execute:
|
|
15
|
+
|
|
16
|
+
$ bundle
|
|
17
|
+
|
|
18
|
+
Or install it yourself as:
|
|
19
|
+
|
|
20
|
+
$ gem install giantbomb
|
|
21
|
+
|
|
22
|
+
In your Rails application, add your API key to:
|
|
23
|
+
`config/initializers/giantbomb.rb`
|
|
24
|
+
|
|
25
|
+
``` ruby
|
|
26
|
+
GiantBomb::Api.key('API_KEY_HERE')
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
### Resources
|
|
30
|
+
|
|
31
|
+
Current available resources:
|
|
32
|
+
* Character
|
|
33
|
+
* Company
|
|
34
|
+
* Concept
|
|
35
|
+
* Franchise
|
|
36
|
+
* Game
|
|
37
|
+
* Location
|
|
38
|
+
* Person
|
|
39
|
+
* Platform
|
|
40
|
+
* Video
|
|
41
|
+
|
|
42
|
+
All resources have access to `Resource#list` `Resource#detail` and `Resource#search`
|
|
43
|
+
|
|
44
|
+
### Usage
|
|
45
|
+
|
|
46
|
+
###### Finding a Game
|
|
47
|
+
|
|
48
|
+
``` ruby
|
|
49
|
+
game = GiantBomb::Game.detail(1)
|
|
50
|
+
|
|
51
|
+
games = GiantBomb::Game.find('gta')
|
|
52
|
+
games = GiantBomb::Game.list
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
###### Searching for Games
|
|
56
|
+
|
|
57
|
+
``` ruby
|
|
58
|
+
search = GiantBomb::Search.new
|
|
59
|
+
search.query('gta')
|
|
60
|
+
search.fetch
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
``` ruby
|
|
64
|
+
# Available filter methods
|
|
65
|
+
|
|
66
|
+
.limit(10) # limits the number of returned resources
|
|
67
|
+
.resources('game') # determines the type of resource
|
|
68
|
+
.fields('name,deck') # returns only the requested resources
|
|
69
|
+
.offset(100) # sets the offset
|
|
70
|
+
|
|
71
|
+
# All filters are chainable!
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
### Development
|
|
75
|
+
|
|
76
|
+
After checking out the repo, run `bin/setup` to install dependencies. Then, run
|
|
77
|
+
`rake spec` to run the tests. You can also run `bin/console` for an interactive
|
|
78
|
+
prompt that will allow you to experiment.
|
|
79
|
+
|
|
80
|
+
###### TODO
|
|
81
|
+
|
|
82
|
+
* Add all resources available from: http://www.giantbomb.com/api/documentation
|
|
83
|
+
* Create a proper documentation showcasing all available resources and how to use them
|
|
84
|
+
* Tests
|
|
85
|
+
|
|
86
|
+
### Examples
|
|
87
|
+
|
|
88
|
+
For more examples see [mygames.io](https://github.com/pacMakaveli/mygames.io)
|
|
89
|
+
for a live application
|
|
90
|
+
|
|
91
|
+
## License
|
|
92
|
+
|
|
93
|
+
The gem is available as open source under the terms of the [MIT License](http://opensource.org/licenses/MIT).
|
data/Rakefile
ADDED
data/bin/console
ADDED
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
#!/usr/bin/env ruby
|
|
2
|
+
|
|
3
|
+
require "bundler/setup"
|
|
4
|
+
require "giantbomb"
|
|
5
|
+
|
|
6
|
+
# You can add fixtures and/or initialization code here to make experimenting
|
|
7
|
+
# with your gem easier. You can also use a different console, if you like.
|
|
8
|
+
|
|
9
|
+
# (If you use this, don't forget to add pry to your Gemfile!)
|
|
10
|
+
# require "pry"
|
|
11
|
+
# Pry.start
|
|
12
|
+
|
|
13
|
+
require "irb"
|
|
14
|
+
IRB.start
|
data/bin/setup
ADDED
data/giantbomb.gemspec
ADDED
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
# coding: utf-8
|
|
2
|
+
require './lib/giantbomb/version'
|
|
3
|
+
|
|
4
|
+
Gem::Specification.new do |g|
|
|
5
|
+
g.name = "giantbomb-api"
|
|
6
|
+
g.version = GiantBomb::VERSION
|
|
7
|
+
g.platform = Gem::Platform::RUBY
|
|
8
|
+
g.date = Date.today.to_s
|
|
9
|
+
|
|
10
|
+
g.authors = ["Robert Coker", "Vlad Radulescu"]
|
|
11
|
+
g.email = ["rob@robertsays.com", "pacMakaveli90@gmail.com"]
|
|
12
|
+
|
|
13
|
+
g.homepage = "http://rubygems.org/gems/giantbomb-api"
|
|
14
|
+
g.summary = %q{A Ruby wrapper for the GiantBomb video game wiki API.}
|
|
15
|
+
g.description = %q{Provides a simple, easy to use interface for the Giant Bomb video game wiki API.}
|
|
16
|
+
|
|
17
|
+
g.add_dependency("httparty")
|
|
18
|
+
|
|
19
|
+
g.files = `git ls-files`.split("\n")
|
|
20
|
+
g.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
|
21
|
+
g.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
|
|
22
|
+
g.require_paths = ["lib"]
|
|
23
|
+
end
|
data/lib/giantbomb.rb
ADDED
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
require 'rubygems'
|
|
2
|
+
require 'httparty'
|
|
3
|
+
|
|
4
|
+
require 'giantbomb/version'
|
|
5
|
+
|
|
6
|
+
module GiantBomb
|
|
7
|
+
|
|
8
|
+
['api', 'search', 'resource'].each do |inc|
|
|
9
|
+
require File.join(File.dirname(__FILE__), 'giantbomb', inc)
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
c = ['character', 'company', 'concept']
|
|
13
|
+
f = ['franchise']
|
|
14
|
+
g = ['game']
|
|
15
|
+
l = ['location']
|
|
16
|
+
o = ['object']
|
|
17
|
+
p = ['person', 'platform']
|
|
18
|
+
r = ['review']
|
|
19
|
+
u = ['user_review']
|
|
20
|
+
v = ['video']
|
|
21
|
+
|
|
22
|
+
[c, f, g, l, o, p, r, u, v].flatten.each do |inc|
|
|
23
|
+
require File.join(File.dirname(__FILE__), 'giantbomb', inc)
|
|
24
|
+
end
|
|
25
|
+
end
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
module GiantBomb
|
|
2
|
+
class Character < Resource
|
|
3
|
+
has_resource 'character', plural: 'characters', id: '3005'
|
|
4
|
+
|
|
5
|
+
# http://www.giantbomb.com/api/documentation#toc-0-4
|
|
6
|
+
# http://www.giantbomb.com/api/documentation#toc-0-5
|
|
7
|
+
#
|
|
8
|
+
@@fields = [
|
|
9
|
+
:aliases, # List of aliases that the character is known by. A \n (newline) separates each alias.
|
|
10
|
+
:api_detail_url, # URL pointing to the character detail resource
|
|
11
|
+
:birthday, # Birthday of the character
|
|
12
|
+
:companies, # Companies that have used the character in a game
|
|
13
|
+
:concepts, # Concepts related to the character
|
|
14
|
+
:date_added, # Date the character was added to Giant Bomb
|
|
15
|
+
:date_last_updated, # Date the character was last updated on Giant Bomb
|
|
16
|
+
:deck, # Brief summary of the character
|
|
17
|
+
:description, # Description of the character
|
|
18
|
+
:enemies, # Enemies of the character
|
|
19
|
+
:first_appeared_in_game, # Game that the character first appeared in
|
|
20
|
+
:franchises, # Franchises the character has appeared in
|
|
21
|
+
:friends, # Friends of the character
|
|
22
|
+
:games, # Games the character has appeared in
|
|
23
|
+
:gender, # Gender of the character. Available options are: Male, Female, Other
|
|
24
|
+
:id, # Unique ID of the character
|
|
25
|
+
:image, # Main Image of the character
|
|
26
|
+
:last_name, # Last name of the character
|
|
27
|
+
:locations, # Locations related to the character
|
|
28
|
+
:name, # Name of the character
|
|
29
|
+
:objects, # Objects related to the character
|
|
30
|
+
:people, # People who have worked with the character
|
|
31
|
+
:platforms, # Platforms having a game the character has appeared in
|
|
32
|
+
:real_name, # Real name of the character
|
|
33
|
+
:site_detail_url # URL pointing to the character on Giant Bomb
|
|
34
|
+
]
|
|
35
|
+
|
|
36
|
+
@@fields.each do |field|
|
|
37
|
+
attr_accessor field
|
|
38
|
+
end
|
|
39
|
+
end
|
|
40
|
+
end
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
module GiantBomb
|
|
2
|
+
class Company < Resource
|
|
3
|
+
has_resource 'company', plural: 'companies', id: '3010'
|
|
4
|
+
|
|
5
|
+
# http://www.giantbomb.com/api/documentation#toc-0-8
|
|
6
|
+
# http://www.giantbomb.com/api/documentation#toc-0-9
|
|
7
|
+
#
|
|
8
|
+
@@fields = [
|
|
9
|
+
:abbreviation, # Abbreviation of the company
|
|
10
|
+
:aliases, # List of aliases the company is known by. A \n (newline) separates each alias.
|
|
11
|
+
:api_detail_url, # URL pointing to the company detail resource
|
|
12
|
+
:characters, # Characters the company has used in a game
|
|
13
|
+
:concepts, # Concepts related to the company
|
|
14
|
+
:date_added, # Date the company was added to Giant Bomb
|
|
15
|
+
:date_founded, # Date the company was founded
|
|
16
|
+
:date_last_updated, # Date the company was last updated on Giant Bomb
|
|
17
|
+
:deck, # Brief summary of the company
|
|
18
|
+
:description, # Description of the company
|
|
19
|
+
:developed_games, # Games the company has developed
|
|
20
|
+
:developer_releases, # Releases the company has developed
|
|
21
|
+
:distributor_releases, # Releases the company has distributed
|
|
22
|
+
:id, # Unique ID of the company
|
|
23
|
+
:image, # Main Image of the company
|
|
24
|
+
:location_address, # Street address of the company
|
|
25
|
+
:location_city, # City the company resides in
|
|
26
|
+
:location_country, # Country the company resides in
|
|
27
|
+
:location_state, # State the company resides in
|
|
28
|
+
:locations, # Locations related to the company
|
|
29
|
+
:name, # Name of the company
|
|
30
|
+
:objects, # Objects related to the company
|
|
31
|
+
:people, # People who have worked for the company
|
|
32
|
+
:phone, # Phone number of the company
|
|
33
|
+
:published_games, # Games published by the company
|
|
34
|
+
:publisher_releases, # Releases the company has published
|
|
35
|
+
:site_detail_url, # URL pointing to the company on Giant Bomb
|
|
36
|
+
:website # URL to the company website
|
|
37
|
+
]
|
|
38
|
+
|
|
39
|
+
@@fields.each do |field|
|
|
40
|
+
attr_accessor field
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
end
|
|
44
|
+
end
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
module GiantBomb
|
|
2
|
+
class Concept < Resource
|
|
3
|
+
has_resource 'concept', plural: 'concepts', id: '3015'
|
|
4
|
+
|
|
5
|
+
# http://www.giantbomb.com/api/documentation#toc-0-10
|
|
6
|
+
# http://www.giantbomb.com/api/documentation#toc-0-11
|
|
7
|
+
#
|
|
8
|
+
@@fields = [
|
|
9
|
+
:aliases, # List of aliases the concept is known by. A \n (newline) separates each alias.
|
|
10
|
+
:api_detail_url, # URL pointing to the concept detail resource
|
|
11
|
+
:characters, # Characters related to the concept
|
|
12
|
+
:companies, # Companies related to the concept
|
|
13
|
+
:concepts, # Other concepts related to the concept
|
|
14
|
+
:date_added, # Date the concept was added to Giant Bomb
|
|
15
|
+
:date_last_updated, # Date the concept was last updated on Giant Bomb
|
|
16
|
+
:deck, # Brief summary of the concept
|
|
17
|
+
:description, # Description of the concept
|
|
18
|
+
:first_appeared_in_franchise, # Franchise that the concept first appeared in
|
|
19
|
+
:first_appeared_in_game, # Game that the concept first appeared in
|
|
20
|
+
:franchises, # Franchises related to the concept
|
|
21
|
+
:games, # Games related to the concept
|
|
22
|
+
:id, # Unique ID of the concept
|
|
23
|
+
:image, # Main Image of the concept
|
|
24
|
+
:locations, # Locations related to the concept
|
|
25
|
+
:name, # Name of the concept
|
|
26
|
+
:objects, # Objects related to the concept
|
|
27
|
+
:people, # People related to the concept
|
|
28
|
+
:platforms, # Platforms related to the concept
|
|
29
|
+
:related_concepts, # Other concepts related to the concept
|
|
30
|
+
:site_detail_url # URL pointing to the concept on Giant Bomb
|
|
31
|
+
]
|
|
32
|
+
|
|
33
|
+
@@fields.each do |field|
|
|
34
|
+
attr_accessor field
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
end
|
|
38
|
+
end
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
module GiantBomb
|
|
2
|
+
class Franchise < Resource
|
|
3
|
+
has_resource 'franchise', plural: 'franchises', id: '3025'
|
|
4
|
+
|
|
5
|
+
# http://www.giantbomb.com/api/documentation#toc-0-12
|
|
6
|
+
# http://www.giantbomb.com/api/documentation#toc-0-13
|
|
7
|
+
#
|
|
8
|
+
@@fields = [
|
|
9
|
+
:aliases, # List of aliases the franchise is known by. A \n (newline) separates each alias.
|
|
10
|
+
:api_detail_url, # URL pointing to the franchise detail resource
|
|
11
|
+
:characters, # Characters related to the franchise
|
|
12
|
+
:concepts, # Concepts related to the franchise
|
|
13
|
+
:date_added, # Date the franchise was added to Giant Bomb
|
|
14
|
+
:date_last_updated, # Date the franchise was last updated on Giant Bomb
|
|
15
|
+
:deck, # Brief summary of the franchise
|
|
16
|
+
:description, # Description of the franchise
|
|
17
|
+
:games, # Games related to the franchise
|
|
18
|
+
:id, # Unique ID of the franchise
|
|
19
|
+
:image, # Main Image of the franchise
|
|
20
|
+
:locations, # Locations related to the franchise
|
|
21
|
+
:name, # Name of the franchise
|
|
22
|
+
:objects, # Objects related to the franchise
|
|
23
|
+
:people, # People related to the franchise
|
|
24
|
+
:site_detail_url # URL pointing to the franchise on Giant Bomb
|
|
25
|
+
]
|
|
26
|
+
|
|
27
|
+
@@fields.each do |field|
|
|
28
|
+
attr_accessor field
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
end
|
|
32
|
+
end
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
module GiantBomb
|
|
2
|
+
class Game < Resource
|
|
3
|
+
has_resource 'game', plural: 'games', id: '3030'
|
|
4
|
+
|
|
5
|
+
# http://www.giantbomb.com/api/documentation#toc-0-14
|
|
6
|
+
# http://www.giantbomb.com/api/documentation#toc-0-15
|
|
7
|
+
#
|
|
8
|
+
@@fields = [
|
|
9
|
+
:aliases, # List of aliases the game is known by. A \n (newline) separates each alias.
|
|
10
|
+
:api_detail_url, # URL pointing to the game detail resource
|
|
11
|
+
:characters, # Characters related to the game
|
|
12
|
+
:concepts, # Concepts related to the game
|
|
13
|
+
:date_added, # Date the game was added to Giant Bomb
|
|
14
|
+
:date_last_updated, # Date the game was last updated on Giant Bomb
|
|
15
|
+
:deck, # Brief summary of the game
|
|
16
|
+
:description, # Description of the game
|
|
17
|
+
:developers, # Companies that developed the game
|
|
18
|
+
:expected_release_day, # Expected day the game will be released in. The day is represented numerically.
|
|
19
|
+
:expected_release_month, # Expected month the game will be released in. The month is represented numerically.
|
|
20
|
+
:expected_release_quarter, # Expected quarter game will be released in. The quarter is represented numerically, where 1 = Q1, 2 = Q2, 3 = Q3, and 4 = Q4.
|
|
21
|
+
:expected_release_year, # Expected year the game will be released in.
|
|
22
|
+
:first_appearance_characters, # Characters that first appeared in the game
|
|
23
|
+
:first_appearance_concepts, # Concepts that first appeared in the game
|
|
24
|
+
:first_appearance_locations, # Locations that first appeared in the game
|
|
25
|
+
:first_appearance_objects, # Objects that first appeared in the game
|
|
26
|
+
:first_appearance_people, # People that were first credited in the game
|
|
27
|
+
:franchises, # Franchises the game is a part of
|
|
28
|
+
:genres, # Genres that encompass the game
|
|
29
|
+
:id, # Unique ID of the game
|
|
30
|
+
:image, # Main Image of the game
|
|
31
|
+
:images, # List of images associated to the game
|
|
32
|
+
:killed_characters, # Characters killed in the game
|
|
33
|
+
:locations, # Locations related to the game
|
|
34
|
+
:name, # Name of the game
|
|
35
|
+
:number_of_user_reviews, # Number of user reviews of the game on Giant Bomb
|
|
36
|
+
:objects, # Objects related to the game
|
|
37
|
+
:original_game_rating, # Rating of the first release of the game
|
|
38
|
+
:original_release_date, # Date the game was first released
|
|
39
|
+
:people, # People related to the game
|
|
40
|
+
:platforms, # Platforms the game can be played on
|
|
41
|
+
:publishers, # Companies that published the game
|
|
42
|
+
:releases, # Releases of the game
|
|
43
|
+
:reviews, # Staff reviews of the game
|
|
44
|
+
:similar_games, # Other games that are similar to the game
|
|
45
|
+
:site_detail_url, # URL pointing to the game on Giant Bomb
|
|
46
|
+
:themes, # Themes that encompass the game
|
|
47
|
+
:videos # Videos associated to the game
|
|
48
|
+
]
|
|
49
|
+
|
|
50
|
+
@@fields.each do |field|
|
|
51
|
+
attr_accessor field
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
end
|
|
55
|
+
end
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
module GiantBomb
|
|
2
|
+
class Location < Resource
|
|
3
|
+
has_resource 'location', plural: 'locations', id: '3035'
|
|
4
|
+
|
|
5
|
+
# http://www.giantbomb.com/api/documentation#toc-0-20
|
|
6
|
+
# http://www.giantbomb.com/api/documentation#toc-0-21
|
|
7
|
+
#
|
|
8
|
+
@@fields = [
|
|
9
|
+
:aliases, # List of aliases the location is known by. A \n (newline) separates each alias.
|
|
10
|
+
:api_detail_url, # URL pointing to the location detail resource
|
|
11
|
+
:date_added, # Date the location was added to Giant Bomb
|
|
12
|
+
:date_last_updated, # Date the location was last updated on Giant Bomb
|
|
13
|
+
:deck, # Brief summary of the location
|
|
14
|
+
:description, # Description of the location
|
|
15
|
+
:first_appeared_in_game, # Game the location first appeared in
|
|
16
|
+
:id, # Unique ID of the location
|
|
17
|
+
:image, # Main Image of the location
|
|
18
|
+
:name, # Name of the location
|
|
19
|
+
:site_detail_url # URL pointing to the location on Giant Bomb
|
|
20
|
+
]
|
|
21
|
+
|
|
22
|
+
@@fields.each do |field|
|
|
23
|
+
attr_accessor field
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
end
|
|
27
|
+
end
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
module GiantBomb
|
|
2
|
+
class GameObject < Resource
|
|
3
|
+
has_resource 'object', plural: 'objects', id: '3055'
|
|
4
|
+
|
|
5
|
+
# http://www.giantbomb.com/api/documentation#toc-0-22
|
|
6
|
+
# http://www.giantbomb.com/api/documentation#toc-0-23
|
|
7
|
+
#
|
|
8
|
+
@@fields = [
|
|
9
|
+
:aliases, # List of aliases the object is known by. A \n (newline) separates each alias.
|
|
10
|
+
:api_detail_url, # URL pointing to the object detail resource
|
|
11
|
+
:characters, # Characters related to the object
|
|
12
|
+
:companies, # Companies related to the object
|
|
13
|
+
:concepts, # Concepts related to the object
|
|
14
|
+
:date_added, # Date the object was added to Giant Bomb
|
|
15
|
+
:date_last_updated, # Date the object was last updated on Giant Bomb
|
|
16
|
+
:deck, # Brief summary of the object
|
|
17
|
+
:description, # Description of the object
|
|
18
|
+
:first_appeared_in_game, # Game the object first appeared in
|
|
19
|
+
:franchises, # Franchises related to the object
|
|
20
|
+
:games, # Games related to the object
|
|
21
|
+
:id, # Unique ID of the object
|
|
22
|
+
:image, # Main Image of the object
|
|
23
|
+
:locations, # Locations related to the object
|
|
24
|
+
:name, # Name of the object
|
|
25
|
+
:objects, # Other objects related to the object
|
|
26
|
+
:people, # People related to the object
|
|
27
|
+
:platforms, # Platforms related to the object
|
|
28
|
+
:site_detail_url # URL pointing to the object on Giant Bomb
|
|
29
|
+
]
|
|
30
|
+
|
|
31
|
+
@@fields.each do |field|
|
|
32
|
+
attr_accessor field
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
end
|
|
36
|
+
end
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
module GiantBomb
|
|
2
|
+
class Person < Resource
|
|
3
|
+
has_resource 'person', plural: 'people', id: '3040'
|
|
4
|
+
|
|
5
|
+
# http://www.giantbomb.com/api/documentation#toc-0-24
|
|
6
|
+
# http://www.giantbomb.com/api/documentation#toc-0-25
|
|
7
|
+
#
|
|
8
|
+
@@fields = [
|
|
9
|
+
:aliases, # List of aliases the person is known by. A \n (newline) separates each alias.
|
|
10
|
+
:api_detail_url, # URL pointing to the person detail resource
|
|
11
|
+
:birth_date, # Date the person was born
|
|
12
|
+
:characters, # Characters related to the person
|
|
13
|
+
:companies, # Companies the person has worked with
|
|
14
|
+
:concepts, # Concepts related to the person
|
|
15
|
+
:country, # Country the person resides in
|
|
16
|
+
:date_added, # Date the person was added to Giant Bomb
|
|
17
|
+
:date_last_updated, # Date the person was last updated on Giant Bomb
|
|
18
|
+
:death_date, # Date the person died
|
|
19
|
+
:deck, # Brief summary of the person
|
|
20
|
+
:description, # Description of the person
|
|
21
|
+
:first_credited_game, # Game the person was first credited in
|
|
22
|
+
:franchises, # Franchises the person has worked on
|
|
23
|
+
:games, # Games the person has worked on
|
|
24
|
+
:gender, # Gender of the person. Available options are: Male, Female, Other
|
|
25
|
+
:hometown, # City or town the person resides in
|
|
26
|
+
:id, # Unique ID of the person
|
|
27
|
+
:image, # Main Image of the person
|
|
28
|
+
:locations, # Locations related to the person
|
|
29
|
+
:name, # Name of the person
|
|
30
|
+
:objects, # Objects related to the person
|
|
31
|
+
:people, # Other people related to the person
|
|
32
|
+
:platforms, # Platforms related to the person
|
|
33
|
+
:site_detail_url # URL pointing to the person on Giant Bomb
|
|
34
|
+
]
|
|
35
|
+
|
|
36
|
+
@@fields.each do |field|
|
|
37
|
+
attr_accessor field
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
end
|
|
41
|
+
end
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
module GiantBomb
|
|
2
|
+
class Platform < Resource
|
|
3
|
+
has_resource 'platform', plural: 'platforms', id: '3045'
|
|
4
|
+
|
|
5
|
+
# http://www.giantbomb.com/api/documentation#toc-0-26
|
|
6
|
+
# http://www.giantbomb.com/api/documentation#toc-0-27
|
|
7
|
+
#
|
|
8
|
+
@@fields = [
|
|
9
|
+
:abbreviation, # Abbreviation of the platform.
|
|
10
|
+
:api_detail_url, # URL pointing to the platform detail resource
|
|
11
|
+
:company, # Company that created the platform.
|
|
12
|
+
:date_added, # Date the platform was added to Giant Bomb
|
|
13
|
+
:date_last_updated, # Date the platform was last updated on Giant Bomb
|
|
14
|
+
:deck, # Brief summary of the platform
|
|
15
|
+
:description, # Description of the platform
|
|
16
|
+
:id, # Unique ID of the platform
|
|
17
|
+
:image, # Main Image of the platform
|
|
18
|
+
:install_base, # Approximate number of sold hardware units.
|
|
19
|
+
:name, # Name of the platform
|
|
20
|
+
:online_support, # Flag indicating whether the platform has online capabilities.
|
|
21
|
+
:original_price, # Initial price point of the platform.
|
|
22
|
+
:release_date, # Date of the platform
|
|
23
|
+
:site_detail_url, # URL pointing to the platform on Giant Bomb.
|
|
24
|
+
]
|
|
25
|
+
|
|
26
|
+
@@fields.each do |field|
|
|
27
|
+
attr_accessor field
|
|
28
|
+
end
|
|
29
|
+
end
|
|
30
|
+
end
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
module GiantBomb
|
|
2
|
+
class Resource
|
|
3
|
+
@@endpoints = {}
|
|
4
|
+
@@endpoint_id = {}
|
|
5
|
+
|
|
6
|
+
def self.has_resource(singular=nil, opts={})
|
|
7
|
+
@@endpoints[self.name.downcase] = {
|
|
8
|
+
singular: singular.nil? ? "#{self.name.downcase}" : singular,
|
|
9
|
+
plural: opts[:plural].nil? ? "#{self.name.downcase}s" : opts[:plural]
|
|
10
|
+
}
|
|
11
|
+
@@endpoint_id[self.name.downcase] = opts[:id].nil? ? "" : "#{opts[:id]}-"
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
def self.endpoints
|
|
15
|
+
@@endpoints[self.name.downcase]
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
def self.endpoint_id
|
|
19
|
+
@@endpoint_id[self.name.downcase]
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
def self.detail(id, conditions={})
|
|
23
|
+
search = GiantBomb::Search.new("/#{self.endpoints[:singular]}/#{self.endpoint_id + id.to_s}/")
|
|
24
|
+
search.filter(conditions)
|
|
25
|
+
self.new(search.fetch)
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
def self.list(conditions={})
|
|
29
|
+
search = GiantBomb::Search.new("/#{self.endpoints[:plural]}")
|
|
30
|
+
search.filter(conditions)
|
|
31
|
+
search.fetch.collect do |result|
|
|
32
|
+
self.new(result)
|
|
33
|
+
end
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
def self.search(query)
|
|
37
|
+
search = GiantBomb::Search.new
|
|
38
|
+
search.resources("#{self.endpoints[:singular]}")
|
|
39
|
+
search.query(query)
|
|
40
|
+
search.fetch.collect do |result|
|
|
41
|
+
self.new(result)
|
|
42
|
+
end
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
class << self
|
|
46
|
+
alias_method :find, :search
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
def initialize(attributes={})
|
|
50
|
+
attributes.each do |key, value|
|
|
51
|
+
if self.respond_to?(key.to_sym)
|
|
52
|
+
self.instance_variable_set("@#{key}", value)
|
|
53
|
+
end
|
|
54
|
+
end
|
|
55
|
+
end
|
|
56
|
+
|
|
57
|
+
end
|
|
58
|
+
end
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
module GiantBomb
|
|
2
|
+
class Review < Resource
|
|
3
|
+
has_resource 'review', plural: 'reviews', id: '1900'
|
|
4
|
+
|
|
5
|
+
# http://www.giantbomb.com/api/documentation#toc-0-36
|
|
6
|
+
# http://www.giantbomb.com/api/documentation#toc-0-37
|
|
7
|
+
#
|
|
8
|
+
@@fields = [
|
|
9
|
+
:api_detail_url, # URL pointing to the review detail resource
|
|
10
|
+
:deck, # Brief summary of the review
|
|
11
|
+
:description, # Description of the review
|
|
12
|
+
:dlc, # Date the franchise was added to Giant Bomb
|
|
13
|
+
:dlc_name, # Name of the Downloadable Content package
|
|
14
|
+
:game, # Game the review is for
|
|
15
|
+
:publish_date, # Date the review was published on Giant Bomb
|
|
16
|
+
:release, # Release of game for review
|
|
17
|
+
:reviewer, # Name of the review's author
|
|
18
|
+
:score, # The score given to the game on a scale of 1 to 5
|
|
19
|
+
:site_detail_url, # URL pointing to the review on Giant Bomb
|
|
20
|
+
:platforms, # Platforms the review appeared in.
|
|
21
|
+
]
|
|
22
|
+
|
|
23
|
+
@@fields.each do |field|
|
|
24
|
+
attr_accessor field
|
|
25
|
+
end
|
|
26
|
+
end
|
|
27
|
+
end
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
module GiantBomb
|
|
2
|
+
# Wrapper for the Giant Bomb Search resource
|
|
3
|
+
#
|
|
4
|
+
# @see http://api.giantbomb.com/documentation/#search
|
|
5
|
+
class Search
|
|
6
|
+
include GiantBomb::Api
|
|
7
|
+
|
|
8
|
+
# @private
|
|
9
|
+
attr_reader :query, :resource
|
|
10
|
+
|
|
11
|
+
# Creates a new search
|
|
12
|
+
#
|
|
13
|
+
# @example Initialize a Giant Bomb search
|
|
14
|
+
# search = GiantBomb::Search.new
|
|
15
|
+
# search = GiantBomb::Search.new('game')
|
|
16
|
+
def initialize(resource=nil)
|
|
17
|
+
@params = {}
|
|
18
|
+
@resource = resource.nil? ? '/search' : resource
|
|
19
|
+
self
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
# @group Generic filters
|
|
23
|
+
|
|
24
|
+
# Only return the specified fields for the given resource
|
|
25
|
+
#
|
|
26
|
+
# @param fields [String] A comma delimited list of fields to return.
|
|
27
|
+
# @return [GiantBomb::Search] self
|
|
28
|
+
def fields(fields)
|
|
29
|
+
@params[:field_list] = "#{fields}"
|
|
30
|
+
self
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
# Only return a limited number of resources
|
|
34
|
+
#
|
|
35
|
+
# @param limit [Integer] Nmber of items to limit by.
|
|
36
|
+
# @return [GiantBomb::Search] self
|
|
37
|
+
def limit(limit)
|
|
38
|
+
@params[:limit] = "#{limit}"
|
|
39
|
+
self
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
# Only include resources starting from a given offset
|
|
43
|
+
#
|
|
44
|
+
# @param limit [Integer] Number of items to skip.
|
|
45
|
+
# @return [GiantBomb::Search] self
|
|
46
|
+
def offset(offset)
|
|
47
|
+
@params[:offset] = "#{offset}"
|
|
48
|
+
self
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
# Search query
|
|
52
|
+
#
|
|
53
|
+
# @param query [String] The search query.
|
|
54
|
+
# @return [GiantBomb::Search] self
|
|
55
|
+
def query(query)
|
|
56
|
+
@params[:query] = "#{query}"
|
|
57
|
+
self
|
|
58
|
+
end
|
|
59
|
+
|
|
60
|
+
# Only include items of the specified resources
|
|
61
|
+
#
|
|
62
|
+
# @param resources [String] A comma delimited list of resources to search.
|
|
63
|
+
# @return [GiantBomb::Search] self
|
|
64
|
+
def resources(resources)
|
|
65
|
+
@params[:resources] = "#{resources}"
|
|
66
|
+
self
|
|
67
|
+
end
|
|
68
|
+
|
|
69
|
+
# A convenience method that takes a hash where each key is
|
|
70
|
+
# the symbol of a method, and each value is the parameters
|
|
71
|
+
# passed to that method.
|
|
72
|
+
def filter(conditions)
|
|
73
|
+
if conditions
|
|
74
|
+
conditions.each do |key, value|
|
|
75
|
+
if self.respond_to?(key)
|
|
76
|
+
self.send(key, value)
|
|
77
|
+
end
|
|
78
|
+
end
|
|
79
|
+
end
|
|
80
|
+
end
|
|
81
|
+
|
|
82
|
+
# Fetch the results of the query
|
|
83
|
+
#
|
|
84
|
+
# @return [Array] Items that match the specified query.
|
|
85
|
+
# @example
|
|
86
|
+
# search = GiantBomb::Search.new.query("Duke Nukem").fetch
|
|
87
|
+
def fetch
|
|
88
|
+
fetch_response['results']
|
|
89
|
+
end
|
|
90
|
+
|
|
91
|
+
# Fetch the full response of the query, including metadata
|
|
92
|
+
# Keys returned:
|
|
93
|
+
# status_code
|
|
94
|
+
# error
|
|
95
|
+
# number_of_total_results
|
|
96
|
+
# number_of_page_results
|
|
97
|
+
# limit
|
|
98
|
+
# offset
|
|
99
|
+
# results
|
|
100
|
+
#
|
|
101
|
+
# @return [Hash] Hash of the api response
|
|
102
|
+
# @example
|
|
103
|
+
# search = GiantBomb::Search.new.query("Duke Nukem").fetch_response
|
|
104
|
+
# @see http://api.giantbomb.com/documentation/#handling_responses
|
|
105
|
+
def fetch_response
|
|
106
|
+
options = @params.merge(Api.config)
|
|
107
|
+
response = Api.get(@resource, query: options)
|
|
108
|
+
response.to_hash
|
|
109
|
+
end
|
|
110
|
+
|
|
111
|
+
end
|
|
112
|
+
end
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
module GiantBomb
|
|
2
|
+
class UserReview < Resource
|
|
3
|
+
has_resource 'user_review', plural: 'user_reviews', id: '2200'
|
|
4
|
+
|
|
5
|
+
# http://www.giantbomb.com/api/documentation#toc-0-42
|
|
6
|
+
# http://www.giantbomb.com/api/documentation#toc-0-43
|
|
7
|
+
#
|
|
8
|
+
@@fields = [
|
|
9
|
+
:api_detail_url, # URL pointing to the review detail resource
|
|
10
|
+
:date_added, # Date the user_review was added to Giant Bomb
|
|
11
|
+
:date_last_updated, # Date the user_review was last updated on Giant Bomb
|
|
12
|
+
:deck, # Brief summary of the user_review
|
|
13
|
+
:description, # Description of the user_review
|
|
14
|
+
:game, # Game the user_review is for
|
|
15
|
+
:reviewer, # Name of the review's author
|
|
16
|
+
:score, # The score given to the game on a scale of 1 to 5
|
|
17
|
+
:site_detail_url, # URL pointing to the user_review on Giant Bomb
|
|
18
|
+
]
|
|
19
|
+
|
|
20
|
+
@@fields.each do |field|
|
|
21
|
+
attr_accessor field
|
|
22
|
+
end
|
|
23
|
+
end
|
|
24
|
+
end
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
module GiantBomb
|
|
2
|
+
class Video < Resource
|
|
3
|
+
has_resource 'video', plural: 'videos', id: '2300'
|
|
4
|
+
|
|
5
|
+
# http://www.giantbomb.com/api/documentation#toc-0-44
|
|
6
|
+
#
|
|
7
|
+
@@fields = [
|
|
8
|
+
:api_detail_url, # URL pointing to the video detail resource
|
|
9
|
+
:deck, # Brief summary of the video
|
|
10
|
+
:id, # Unique ID of the video
|
|
11
|
+
:image, # Image associated with the video
|
|
12
|
+
:name, # Title of the video
|
|
13
|
+
:publish_date, # Date the video was published on Giant Bomb
|
|
14
|
+
:site_detail_url, # URL pointing to the video on Giant Bomb
|
|
15
|
+
:url, # The video's filename
|
|
16
|
+
:user # Author of the video
|
|
17
|
+
]
|
|
18
|
+
|
|
19
|
+
@@fields.each do |field|
|
|
20
|
+
attr_accessor field
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
end
|
|
24
|
+
end
|
data/spec/spec_helper.rb
ADDED
metadata
ADDED
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
|
2
|
+
name: giantbomb-api
|
|
3
|
+
version: !ruby/object:Gem::Version
|
|
4
|
+
version: 1.5.7
|
|
5
|
+
platform: ruby
|
|
6
|
+
authors:
|
|
7
|
+
- Robert Coker
|
|
8
|
+
- Vlad Radulescu
|
|
9
|
+
autorequire:
|
|
10
|
+
bindir: bin
|
|
11
|
+
cert_chain: []
|
|
12
|
+
date: 2016-01-14 00:00:00.000000000 Z
|
|
13
|
+
dependencies:
|
|
14
|
+
- !ruby/object:Gem::Dependency
|
|
15
|
+
name: httparty
|
|
16
|
+
requirement: !ruby/object:Gem::Requirement
|
|
17
|
+
requirements:
|
|
18
|
+
- - ">="
|
|
19
|
+
- !ruby/object:Gem::Version
|
|
20
|
+
version: '0'
|
|
21
|
+
type: :runtime
|
|
22
|
+
prerelease: false
|
|
23
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
24
|
+
requirements:
|
|
25
|
+
- - ">="
|
|
26
|
+
- !ruby/object:Gem::Version
|
|
27
|
+
version: '0'
|
|
28
|
+
description: Provides a simple, easy to use interface for the Giant Bomb video game
|
|
29
|
+
wiki API.
|
|
30
|
+
email:
|
|
31
|
+
- rob@robertsays.com
|
|
32
|
+
- pacMakaveli90@gmail.com
|
|
33
|
+
executables:
|
|
34
|
+
- console
|
|
35
|
+
- setup
|
|
36
|
+
extensions: []
|
|
37
|
+
extra_rdoc_files: []
|
|
38
|
+
files:
|
|
39
|
+
- ".gitignore"
|
|
40
|
+
- ".rspec"
|
|
41
|
+
- ".travis.yml"
|
|
42
|
+
- Gemfile
|
|
43
|
+
- Gemfile.lock
|
|
44
|
+
- LICENSE.txt
|
|
45
|
+
- README.md
|
|
46
|
+
- Rakefile
|
|
47
|
+
- bin/console
|
|
48
|
+
- bin/setup
|
|
49
|
+
- giantbomb.gemspec
|
|
50
|
+
- lib/giantbomb.rb
|
|
51
|
+
- lib/giantbomb/api.rb
|
|
52
|
+
- lib/giantbomb/character.rb
|
|
53
|
+
- lib/giantbomb/company.rb
|
|
54
|
+
- lib/giantbomb/concept.rb
|
|
55
|
+
- lib/giantbomb/franchise.rb
|
|
56
|
+
- lib/giantbomb/game.rb
|
|
57
|
+
- lib/giantbomb/location.rb
|
|
58
|
+
- lib/giantbomb/object.rb
|
|
59
|
+
- lib/giantbomb/person.rb
|
|
60
|
+
- lib/giantbomb/platform.rb
|
|
61
|
+
- lib/giantbomb/resource.rb
|
|
62
|
+
- lib/giantbomb/review.rb
|
|
63
|
+
- lib/giantbomb/search.rb
|
|
64
|
+
- lib/giantbomb/user_review.rb
|
|
65
|
+
- lib/giantbomb/version.rb
|
|
66
|
+
- lib/giantbomb/video.rb
|
|
67
|
+
- spec/giantbomb_spec.rb
|
|
68
|
+
- spec/spec_helper.rb
|
|
69
|
+
homepage: http://rubygems.org/gems/giantbomb-api
|
|
70
|
+
licenses: []
|
|
71
|
+
metadata: {}
|
|
72
|
+
post_install_message:
|
|
73
|
+
rdoc_options: []
|
|
74
|
+
require_paths:
|
|
75
|
+
- lib
|
|
76
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
|
77
|
+
requirements:
|
|
78
|
+
- - ">="
|
|
79
|
+
- !ruby/object:Gem::Version
|
|
80
|
+
version: '0'
|
|
81
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
82
|
+
requirements:
|
|
83
|
+
- - ">="
|
|
84
|
+
- !ruby/object:Gem::Version
|
|
85
|
+
version: '0'
|
|
86
|
+
requirements: []
|
|
87
|
+
rubyforge_project:
|
|
88
|
+
rubygems_version: 2.4.8
|
|
89
|
+
signing_key:
|
|
90
|
+
specification_version: 4
|
|
91
|
+
summary: A Ruby wrapper for the GiantBomb video game wiki API.
|
|
92
|
+
test_files:
|
|
93
|
+
- spec/giantbomb_spec.rb
|
|
94
|
+
- spec/spec_helper.rb
|