giantbomb 0.0.2 → 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- data/lib/giantbomb.rb +2 -2
- data/lib/giantbomb/api.rb +6 -2
- data/lib/giantbomb/character.rb +39 -0
- data/lib/giantbomb/company.rb +3 -34
- data/lib/giantbomb/game.rb +3 -34
- data/lib/giantbomb/resource.rb +52 -0
- data/lib/giantbomb/search.rb +5 -3
- metadata +5 -3
data/lib/giantbomb.rb
CHANGED
@@ -1,10 +1,10 @@
|
|
1
1
|
require 'rubygems'
|
2
2
|
require 'httparty'
|
3
3
|
|
4
|
-
["api", "search", "game", "company"].each do |inc|
|
4
|
+
["api", "search", "resource", "game", "company", "character"].each do |inc|
|
5
5
|
require File.join(File.dirname(__FILE__), "giantbomb", inc)
|
6
6
|
end
|
7
7
|
|
8
8
|
module GiantBomb
|
9
|
-
VERSION = "0.0
|
9
|
+
VERSION = "0.1.0"
|
10
10
|
end
|
data/lib/giantbomb/api.rb
CHANGED
@@ -0,0 +1,39 @@
|
|
1
|
+
module GiantBomb
|
2
|
+
class Character < Resource
|
3
|
+
has_resource 'character', :plural => 'characters'
|
4
|
+
|
5
|
+
# http://api.giantbomb.com/documentation/#character
|
6
|
+
@@fields = [
|
7
|
+
:aliases, # List of aliases that the character is known by. A \n (newline) separates each alias.
|
8
|
+
:api_detail_url, # URL pointing to the character detail resource
|
9
|
+
:birthday, # Birthday of the character
|
10
|
+
:companies, # Companies that have used the character in a game
|
11
|
+
:concepts, # Concepts related to the character
|
12
|
+
:date_added, # Date the character was added to Giant Bomb
|
13
|
+
:date_last_updated, # Date the character was last updated on Giant Bomb
|
14
|
+
:deck, # Brief summary of the character
|
15
|
+
:description, # Description of the character
|
16
|
+
:enemies, # Enemies of the character
|
17
|
+
:first_appeared_in_game, # Game that the character first appeared in
|
18
|
+
:franchises, # Franchises the character has appeared in
|
19
|
+
:friends, # Friends of the character
|
20
|
+
:games, # Games the character has appeared in
|
21
|
+
:gender, # Gender of the character. Available options are: Male, Female, Other
|
22
|
+
:id, # Unique ID of the character
|
23
|
+
:image, # Main Image of the character
|
24
|
+
:last_name, # Last name of the character
|
25
|
+
:locations, # Locations related to the character
|
26
|
+
:name, # Name of the character
|
27
|
+
:objects, # Objects related to the character
|
28
|
+
:people, # People who have worked with the character
|
29
|
+
:platforms, # Platforms having a game the character has appeared in
|
30
|
+
:real_name, # Real name of the character
|
31
|
+
:site_detail_url # URL pointing to the character on Giant Bomb
|
32
|
+
]
|
33
|
+
|
34
|
+
@@fields.each do |field|
|
35
|
+
attr_accessor field
|
36
|
+
end
|
37
|
+
|
38
|
+
end
|
39
|
+
end
|
data/lib/giantbomb/company.rb
CHANGED
@@ -1,5 +1,7 @@
|
|
1
1
|
module GiantBomb
|
2
|
-
class Company <
|
2
|
+
class Company < Resource
|
3
|
+
has_resource 'company', :plural => 'companies'
|
4
|
+
|
3
5
|
# http://api.giantbomb.com/documentation/#company
|
4
6
|
@@fields = [
|
5
7
|
:abbreviation, # Abbreviation of the company
|
@@ -35,39 +37,6 @@ module GiantBomb
|
|
35
37
|
@@fields.each do |field|
|
36
38
|
attr_accessor field
|
37
39
|
end
|
38
|
-
|
39
|
-
def initialize(attributes={})
|
40
|
-
attributes.each do |key, value|
|
41
|
-
if self.respond_to?(key.to_sym)
|
42
|
-
self.instance_variable_set("@#{key}", value)
|
43
|
-
end
|
44
|
-
end
|
45
|
-
end
|
46
|
-
|
47
|
-
def self.detail(id, conditions={})
|
48
|
-
search = GiantBomb::Search.new("/company/#{id}/")
|
49
|
-
search.filter(conditions)
|
50
|
-
Company.new(search.fetch)
|
51
|
-
end
|
52
|
-
|
53
|
-
def self.list(conditions={})
|
54
|
-
search = GiantBomb::Search.new("/companies")
|
55
|
-
search.filter(conditions)
|
56
|
-
search.fetch.collect do |result|
|
57
|
-
Company.new(result)
|
58
|
-
end
|
59
|
-
end
|
60
|
-
|
61
|
-
def self.search(query)
|
62
|
-
search = GiantBomb::Search.new
|
63
|
-
search.resources('company')
|
64
|
-
search.query(query)
|
65
|
-
search.fetch
|
66
|
-
end
|
67
|
-
|
68
|
-
class << self
|
69
|
-
alias_method :find, :search
|
70
|
-
end
|
71
40
|
|
72
41
|
end
|
73
42
|
end
|
data/lib/giantbomb/game.rb
CHANGED
@@ -1,5 +1,7 @@
|
|
1
1
|
module GiantBomb
|
2
|
-
class Game <
|
2
|
+
class Game < Resource
|
3
|
+
has_resource 'game', :plural => 'games'
|
4
|
+
|
3
5
|
# http://api.giantbomb.com/documentation/#game
|
4
6
|
@@fields = [
|
5
7
|
:aliases, # List of aliases the game is known by. A \n (newline) separates each alias.
|
@@ -45,39 +47,6 @@ module GiantBomb
|
|
45
47
|
@@fields.each do |field|
|
46
48
|
attr_accessor field
|
47
49
|
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
|
-
def self.detail(id, conditions={})
|
58
|
-
search = GiantBomb::Search.new("/game/#{id}/")
|
59
|
-
search.filter(conditions)
|
60
|
-
Game.new(search.fetch)
|
61
|
-
end
|
62
|
-
|
63
|
-
def self.list(conditions={})
|
64
|
-
search = GiantBomb::Search.new("/games")
|
65
|
-
search.filter(conditions)
|
66
|
-
search.fetch.collect do |result|
|
67
|
-
Game.new(result)
|
68
|
-
end
|
69
|
-
end
|
70
|
-
|
71
|
-
def self.search(query)
|
72
|
-
search = GiantBomb::Search.new
|
73
|
-
search.resources('game')
|
74
|
-
search.query(query)
|
75
|
-
search.fetch
|
76
|
-
end
|
77
|
-
|
78
|
-
class << self
|
79
|
-
alias_method :find, :search
|
80
|
-
end
|
81
50
|
|
82
51
|
end
|
83
52
|
end
|
@@ -0,0 +1,52 @@
|
|
1
|
+
module GiantBomb
|
2
|
+
class Resource
|
3
|
+
@@resource = {}
|
4
|
+
|
5
|
+
def self.has_resource(singular=nil, opts={})
|
6
|
+
@@resource[self.name.downcase] = {
|
7
|
+
:singular => singular.nil? ? "#{self.name.downcase}" : singular,
|
8
|
+
:plural => opts[:plural].nil? ? "#{self.name.downcase}s" : opts[:plural]
|
9
|
+
}
|
10
|
+
end
|
11
|
+
|
12
|
+
def self.resources
|
13
|
+
@@resource[self.name.downcase]
|
14
|
+
end
|
15
|
+
|
16
|
+
def self.detail(id, conditions={})
|
17
|
+
search = GiantBomb::Search.new("/#{self.resources[:singular]}/#{id}/")
|
18
|
+
search.filter(conditions)
|
19
|
+
self.new(search.fetch)
|
20
|
+
end
|
21
|
+
|
22
|
+
def self.list(conditions={})
|
23
|
+
search = GiantBomb::Search.new("/#{self.resources[:plural]}")
|
24
|
+
search.filter(conditions)
|
25
|
+
search.fetch.collect do |result|
|
26
|
+
self.new(result)
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
def self.search(query)
|
31
|
+
search = GiantBomb::Search.new
|
32
|
+
search.resources("#{self.resources[:singular]}")
|
33
|
+
search.query(query)
|
34
|
+
search.fetch.collect do |result|
|
35
|
+
self.new(result)
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
class << self
|
40
|
+
alias_method :find, :search
|
41
|
+
end
|
42
|
+
|
43
|
+
def initialize(attributes={})
|
44
|
+
attributes.each do |key, value|
|
45
|
+
if self.respond_to?(key.to_sym)
|
46
|
+
self.instance_variable_set("@#{key}", value)
|
47
|
+
end
|
48
|
+
end
|
49
|
+
end
|
50
|
+
|
51
|
+
end
|
52
|
+
end
|
data/lib/giantbomb/search.rb
CHANGED
@@ -1,5 +1,7 @@
|
|
1
1
|
module GiantBomb
|
2
|
-
class Search
|
2
|
+
class Search
|
3
|
+
include GiantBomb::Api
|
4
|
+
|
3
5
|
attr_reader :query, :resource
|
4
6
|
|
5
7
|
def initialize(resource=nil)
|
@@ -53,8 +55,8 @@ module GiantBomb
|
|
53
55
|
|
54
56
|
# GiantBomb::Search.new.query('duke nukem').fetch
|
55
57
|
def fetch
|
56
|
-
options = @params.merge(
|
57
|
-
response =
|
58
|
+
options = @params.merge(Api.config)
|
59
|
+
response = Api.get(@resource, :query => options)
|
58
60
|
response['results']
|
59
61
|
end
|
60
62
|
|
metadata
CHANGED
@@ -5,9 +5,9 @@ version: !ruby/object:Gem::Version
|
|
5
5
|
prerelease:
|
6
6
|
segments:
|
7
7
|
- 0
|
8
|
+
- 1
|
8
9
|
- 0
|
9
|
-
|
10
|
-
version: 0.0.2
|
10
|
+
version: 0.1.0
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Robert Coker
|
@@ -15,7 +15,7 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date: 2011-01-
|
18
|
+
date: 2011-01-11 00:00:00 -05:00
|
19
19
|
default_executable:
|
20
20
|
dependencies: []
|
21
21
|
|
@@ -36,8 +36,10 @@ files:
|
|
36
36
|
- giantbomb.gemspec
|
37
37
|
- lib/giantbomb.rb
|
38
38
|
- lib/giantbomb/api.rb
|
39
|
+
- lib/giantbomb/character.rb
|
39
40
|
- lib/giantbomb/company.rb
|
40
41
|
- lib/giantbomb/game.rb
|
42
|
+
- lib/giantbomb/resource.rb
|
41
43
|
- lib/giantbomb/search.rb
|
42
44
|
has_rdoc: true
|
43
45
|
homepage: http://rubygems.org/gems/giantbomb
|