giant_bomb 0.1.1 → 0.2.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/VERSION CHANGED
@@ -1 +1 @@
1
- 0.1.1
1
+ 0.2.0
data/giant_bomb.gemspec CHANGED
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{giant_bomb}
8
- s.version = "0.1.1"
8
+ s.version = "0.2.0"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Jon Maddox"]
12
- s.date = %q{2009-10-21}
12
+ s.date = %q{2009-10-27}
13
13
  s.description = %q{Simple library to talkto the awesome GiantBomb data}
14
14
  s.email = %q{jon@fanzter.com}
15
15
  s.extra_rdoc_files = [
@@ -25,9 +25,15 @@ Gem::Specification.new do |s|
25
25
  "VERSION",
26
26
  "giant_bomb.gemspec",
27
27
  "lib/giant_bomb.rb",
28
+ "lib/giant_bomb/attributes.rb",
29
+ "lib/giant_bomb/core_extensions.rb",
30
+ "lib/giant_bomb/developer.rb",
28
31
  "lib/giant_bomb/game.rb",
32
+ "lib/giant_bomb/genre.rb",
29
33
  "lib/giant_bomb/httparty_icebox.rb",
34
+ "lib/giant_bomb/publisher.rb",
30
35
  "lib/giant_bomb/search.rb",
36
+ "test/fixtures/get_info.json",
31
37
  "test/fixtures/search.json",
32
38
  "test/fixtures/sketchy_results.json",
33
39
  "test/giant_bomb_test.rb",
@@ -0,0 +1,52 @@
1
+ module GiantBomb
2
+ module Attributes
3
+ # based on http://github.com/nullstyle/ruby-satisfaction
4
+
5
+ def self.included(base)
6
+ base.class_eval do
7
+ extend ClassMethods
8
+ include InstanceMethods
9
+ attr_reader :attributes
10
+ end
11
+ end
12
+
13
+ module ClassMethods
14
+ def attributes(*names)
15
+ options = names.extract_options!
16
+
17
+ names.each do |name|
18
+ attribute name, options unless name.blank?
19
+ end
20
+ end
21
+
22
+ def attribute(name, options)
23
+ options.replace({:type => 'nil', :lazy=>false}.merge(options))
24
+ raise "Name can't be empty" if name.blank?
25
+ lazy_load = "self.#{options[:lazy]} unless self.loaded?" if options[:lazy]
26
+ class_eval <<-EOS
27
+ def #{name}
28
+ #{lazy_load}
29
+ @#{name} ||= decode_raw_attribute(@attributes['#{name}'], #{options[:type]}) if @attributes
30
+ end
31
+ EOS
32
+ end
33
+
34
+ end
35
+
36
+ module InstanceMethods
37
+ def attributes=(value)
38
+ @attributes = value
39
+ end
40
+
41
+ def loaded?
42
+ @loaded
43
+ end
44
+
45
+ private
46
+ def decode_raw_attribute(value, type)
47
+ return nil unless value
48
+ type.respond_to?(:parse) ? type.parse(value) : value
49
+ end
50
+ end
51
+ end
52
+ end
@@ -0,0 +1,18 @@
1
+ class Array
2
+ def extract_options!
3
+ last.is_a?(::Hash) ? pop : {}
4
+ end
5
+
6
+ end
7
+
8
+ class Float
9
+ def self.parse(val)
10
+ Float(val)
11
+ end
12
+ end
13
+
14
+ class Integer
15
+ def self.parse(val)
16
+ Integer(val)
17
+ end
18
+ end
@@ -0,0 +1,21 @@
1
+ module GiantBomb
2
+ class Developer
3
+ include Attributes
4
+ attributes :name, :id
5
+
6
+ def initialize(values)
7
+ self.attributes = values
8
+ end
9
+
10
+ def self.parse(data)
11
+ return unless data
12
+ if data.is_a?(Array)
13
+ data.collect do |g|
14
+ Developer.new(g)
15
+ end
16
+ else
17
+ [Developer.new(data)]
18
+ end
19
+ end
20
+ end
21
+ end
@@ -1,26 +1,34 @@
1
1
  module GiantBomb
2
2
  class Game
3
- attr_accessor :id, :name, :deck, :description, :date_last_updated, :original_release_date, :site_detail_url,
4
- :number_of_user_reviews, :date_added, :original_game_rating, :image
3
+ include Attributes
4
+ attr_reader :client
5
5
 
6
- def initialize(options={})
7
- @image = {}
6
+ attributes :id, :name, :deck, :description, :original_game_rating, :image
8
7
 
9
- @id = options["id"]
10
- @name = options["name"]
11
- @deck = options["deck"]
12
- @description = options["description"]
13
- @site_detail_url = options["site_detail_url"]
14
- @number_of_user_reviews = options["number_of_user_reviews"]
15
- @original_game_rating = options["original_game_rating"]
8
+ attributes :number_of_user_reviews, :type => Integer
9
+ attributes :date_last_updated, :original_release_date, :date_added, :type => Date
16
10
 
17
- @date_last_updated = DateTime.parse(options["date_last_updated"]) if options["date_last_updated"]
18
- @original_release_date = DateTime.parse(options["original_release_date"]) if options["original_release_date"]
19
- @date_added = DateTime.parse(options["date_added"]) if options["date_added"]
11
+ attributes :genres, :lazy => :get_info!, :type => Genre
12
+ attributes :publishers, :lazy => :get_info!, :type => Publisher
13
+ attributes :developers, :lazy => :get_info!, :type => Developer
20
14
 
21
- options["image"].each{|key,value| @image[key.gsub('_url', '').to_sym] = value } if options["image"]
15
+ attributes :images, :lazy => :get_info!
16
+
17
+ alias_method :cover, :image
18
+
19
+ def initialize(values, client)
20
+ @client = client
21
+ self.attributes = values
22
+ end
23
+
24
+ def get_info!
25
+ game = client.get_game_info(self.id)
26
+ @attributes.merge!(game.attributes) if game
27
+ @loaded = true
22
28
  end
23
29
 
30
+
31
+
24
32
  end
25
33
 
26
34
  end
@@ -0,0 +1,21 @@
1
+ module GiantBomb
2
+ class Genre
3
+ include Attributes
4
+ attributes :name, :id
5
+
6
+ def initialize(values)
7
+ self.attributes = values
8
+ end
9
+
10
+ def self.parse(data)
11
+ return unless data
12
+ if data.is_a?(Array)
13
+ data.collect do |g|
14
+ Genre.new(g)
15
+ end
16
+ else
17
+ [Genre.new(data)]
18
+ end
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,21 @@
1
+ module GiantBomb
2
+ class Publisher
3
+ include Attributes
4
+ attributes :name, :id
5
+
6
+ def initialize(values)
7
+ self.attributes = values
8
+ end
9
+
10
+ def self.parse(data)
11
+ return unless data
12
+ if data.is_a?(Array)
13
+ data.collect do |g|
14
+ Publisher.new(g)
15
+ end
16
+ else
17
+ [Publisher.new(data)]
18
+ end
19
+ end
20
+ end
21
+ end
@@ -2,8 +2,8 @@ module GiantBomb
2
2
  class Search
3
3
  include HTTParty
4
4
  format :json
5
- include HTTParty::Icebox
6
- cache :store => 'file', :timeout => 120, :location => Dir.tmpdir
5
+ # include HTTParty::Icebox
6
+ # cache :store => 'file', :timeout => 120, :location => Dir.tmpdir
7
7
 
8
8
  base_uri 'api.giantbomb.com'
9
9
 
@@ -21,7 +21,15 @@ module GiantBomb
21
21
  options = {"query" => keywords, "resources" => "game"}
22
22
  options.merge!(default_query_options)
23
23
  response = self.class.get("/search", :query => options)
24
- response["results"].collect{|r| Game.new(r)}
24
+ response["results"].collect{|r| Game.new(r, self)}
25
+ end
26
+
27
+ def get_game_info(game_id)
28
+ field_list = %w{developers genres images publishers}
29
+ options = {"field_list" => field_list.join(',')}
30
+ options.merge!(default_query_options)
31
+ response = self.class.get("/game/#{game_id}/", :query => options)
32
+ Game.new(response["results"], self)
25
33
  end
26
34
 
27
35
  end
data/lib/giant_bomb.rb CHANGED
@@ -2,5 +2,10 @@ require 'httparty'
2
2
 
3
3
  directory = File.expand_path(File.dirname(__FILE__))
4
4
  require File.join(directory, 'giant_bomb', 'httparty_icebox')
5
+ require File.join(directory, 'giant_bomb', 'core_extensions')
6
+ require File.join(directory, 'giant_bomb', 'attributes')
5
7
  require File.join(directory, 'giant_bomb', 'search')
8
+ require File.join(directory, 'giant_bomb', 'genre')
9
+ require File.join(directory, 'giant_bomb', 'developer')
10
+ require File.join(directory, 'giant_bomb', 'publisher')
6
11
  require File.join(directory, 'giant_bomb', 'game')
@@ -0,0 +1,117 @@
1
+ {
2
+ "number_of_page_results": 1,
3
+ "status_code": 1,
4
+ "error": "OK",
5
+ "results": {
6
+ "images": [{
7
+ "screen_url": "http://media.giantbomb.com/uploads/0/26/1141522-odst_campaign_onialphasite_screen.jpg",
8
+ "small_url": "http://media.giantbomb.com/uploads/0/26/1141522-odst_campaign_onialphasite_small.jpg",
9
+ "thumb_url": "http://media.giantbomb.com/uploads/0/26/1141522-odst_campaign_onialphasite_thumb.jpg",
10
+ "tiny_url": "http://media.giantbomb.com/uploads/0/26/1141522-odst_campaign_onialphasite_tiny.jpg",
11
+ "super_url": "http://media.giantbomb.com/uploads/0/26/1141522-odst_campaign_onialphasite_super.jpg"
12
+ },
13
+ {
14
+ "screen_url": "http://media.giantbomb.com/uploads/0/26/1141521-odst_campaign_kizingo04_screen.jpg",
15
+ "small_url": "http://media.giantbomb.com/uploads/0/26/1141521-odst_campaign_kizingo04_small.jpg",
16
+ "thumb_url": "http://media.giantbomb.com/uploads/0/26/1141521-odst_campaign_kizingo04_thumb.jpg",
17
+ "tiny_url": "http://media.giantbomb.com/uploads/0/26/1141521-odst_campaign_kizingo04_tiny.jpg",
18
+ "super_url": "http://media.giantbomb.com/uploads/0/26/1141521-odst_campaign_kizingo04_super.jpg"
19
+ },
20
+ {
21
+ "screen_url": "http://media.giantbomb.com/uploads/0/26/1141520-odst_campaign_kizingo03_screen.jpg",
22
+ "small_url": "http://media.giantbomb.com/uploads/0/26/1141520-odst_campaign_kizingo03_small.jpg",
23
+ "thumb_url": "http://media.giantbomb.com/uploads/0/26/1141520-odst_campaign_kizingo03_thumb.jpg",
24
+ "tiny_url": "http://media.giantbomb.com/uploads/0/26/1141520-odst_campaign_kizingo03_tiny.jpg",
25
+ "super_url": "http://media.giantbomb.com/uploads/0/26/1141520-odst_campaign_kizingo03_super.jpg"
26
+ },
27
+ {
28
+ "screen_url": "http://media.giantbomb.com/uploads/0/26/1141518-odst_campaign_kizingo02_screen.jpg",
29
+ "small_url": "http://media.giantbomb.com/uploads/0/26/1141518-odst_campaign_kizingo02_small.jpg",
30
+ "thumb_url": "http://media.giantbomb.com/uploads/0/26/1141518-odst_campaign_kizingo02_thumb.jpg",
31
+ "tiny_url": "http://media.giantbomb.com/uploads/0/26/1141518-odst_campaign_kizingo02_tiny.jpg",
32
+ "super_url": "http://media.giantbomb.com/uploads/0/26/1141518-odst_campaign_kizingo02_super.jpg"
33
+ },
34
+ {
35
+ "screen_url": "http://media.giantbomb.com/uploads/0/26/1141517-odst_campaign_kizingo01_screen.jpg",
36
+ "small_url": "http://media.giantbomb.com/uploads/0/26/1141517-odst_campaign_kizingo01_small.jpg",
37
+ "thumb_url": "http://media.giantbomb.com/uploads/0/26/1141517-odst_campaign_kizingo01_thumb.jpg",
38
+ "tiny_url": "http://media.giantbomb.com/uploads/0/26/1141517-odst_campaign_kizingo01_tiny.jpg",
39
+ "super_url": "http://media.giantbomb.com/uploads/0/26/1141517-odst_campaign_kizingo01_super.jpg"
40
+ },
41
+ {
42
+ "screen_url": "http://media.giantbomb.com/uploads/0/26/1141516-odst_campaign_kikowani03_screen.jpg",
43
+ "small_url": "http://media.giantbomb.com/uploads/0/26/1141516-odst_campaign_kikowani03_small.jpg",
44
+ "thumb_url": "http://media.giantbomb.com/uploads/0/26/1141516-odst_campaign_kikowani03_thumb.jpg",
45
+ "tiny_url": "http://media.giantbomb.com/uploads/0/26/1141516-odst_campaign_kikowani03_tiny.jpg",
46
+ "super_url": "http://media.giantbomb.com/uploads/0/26/1141516-odst_campaign_kikowani03_super.jpg"
47
+ },
48
+ {
49
+ "screen_url": "http://media.giantbomb.com/uploads/0/26/1141515-odst_campaign_kikowani02_screen.jpg",
50
+ "small_url": "http://media.giantbomb.com/uploads/0/26/1141515-odst_campaign_kikowani02_small.jpg",
51
+ "thumb_url": "http://media.giantbomb.com/uploads/0/26/1141515-odst_campaign_kikowani02_thumb.jpg",
52
+ "tiny_url": "http://media.giantbomb.com/uploads/0/26/1141515-odst_campaign_kikowani02_tiny.jpg",
53
+ "super_url": "http://media.giantbomb.com/uploads/0/26/1141515-odst_campaign_kikowani02_super.jpg"
54
+ },
55
+ {
56
+ "screen_url": "http://media.giantbomb.com/uploads/0/26/1141514-odst_campaign_kikowani01_screen.jpg",
57
+ "small_url": "http://media.giantbomb.com/uploads/0/26/1141514-odst_campaign_kikowani01_small.jpg",
58
+ "thumb_url": "http://media.giantbomb.com/uploads/0/26/1141514-odst_campaign_kikowani01_thumb.jpg",
59
+ "tiny_url": "http://media.giantbomb.com/uploads/0/26/1141514-odst_campaign_kikowani01_tiny.jpg",
60
+ "super_url": "http://media.giantbomb.com/uploads/0/26/1141514-odst_campaign_kikowani01_super.jpg"
61
+ },
62
+ {
63
+ "screen_url": "http://media.giantbomb.com/uploads/0/26/1141511-odst_firefight_lostplatoon08_screen.jpg",
64
+ "small_url": "http://media.giantbomb.com/uploads/0/26/1141511-odst_firefight_lostplatoon08_small.jpg",
65
+ "thumb_url": "http://media.giantbomb.com/uploads/0/26/1141511-odst_firefight_lostplatoon08_thumb.jpg",
66
+ "tiny_url": "http://media.giantbomb.com/uploads/0/26/1141511-odst_firefight_lostplatoon08_tiny.jpg",
67
+ "super_url": "http://media.giantbomb.com/uploads/0/26/1141511-odst_firefight_lostplatoon08_super.jpg"
68
+ },
69
+ {
70
+ "screen_url": "http://media.giantbomb.com/uploads/0/26/1141504-odst_firefight_lostplatoon06_screen.jpg",
71
+ "small_url": "http://media.giantbomb.com/uploads/0/26/1141504-odst_firefight_lostplatoon06_small.jpg",
72
+ "thumb_url": "http://media.giantbomb.com/uploads/0/26/1141504-odst_firefight_lostplatoon06_thumb.jpg",
73
+ "tiny_url": "http://media.giantbomb.com/uploads/0/26/1141504-odst_firefight_lostplatoon06_tiny.jpg",
74
+ "super_url": "http://media.giantbomb.com/uploads/0/26/1141504-odst_firefight_lostplatoon06_super.jpg"
75
+ }],
76
+ "publishers": [{
77
+ "api_detail_url": "http://api.giantbomb.com/company/6753/",
78
+ "id": 6753,
79
+ "name": "343 Industries"
80
+ },
81
+ {
82
+ "api_detail_url": "http://api.giantbomb.com/company/340/",
83
+ "id": 340,
84
+ "name": "Microsoft Game Studios"
85
+ }],
86
+ "genres": [{
87
+ "api_detail_url": "http://api.giantbomb.com/genre/11/",
88
+ "id": 11,
89
+ "name": "Shooter"
90
+ },
91
+ {
92
+ "api_detail_url": "http://api.giantbomb.com/genre/1/",
93
+ "id": 1,
94
+ "name": "Action"
95
+ },
96
+ {
97
+ "api_detail_url": "http://api.giantbomb.com/genre/32/",
98
+ "id": 32,
99
+ "name": "First-Person Shooter"
100
+ }],
101
+ "developers": [{
102
+ "api_detail_url": "http://api.giantbomb.com/company/476/",
103
+ "id": 476,
104
+ "name": "Bungie Studios"
105
+ }],
106
+ "image": {
107
+ "screen_url": "http://media.giantbomb.com/uploads/1/14735/1101733-20090611232449_halo_3_odst_box_art_screen.png",
108
+ "small_url": "http://media.giantbomb.com/uploads/1/14735/1101733-20090611232449_halo_3_odst_box_art_small.png",
109
+ "thumb_url": "http://media.giantbomb.com/uploads/1/14735/1101733-20090611232449_halo_3_odst_box_art_thumb.png",
110
+ "tiny_url": "http://media.giantbomb.com/uploads/1/14735/1101733-20090611232449_halo_3_odst_box_art_tiny.png",
111
+ "super_url": "http://media.giantbomb.com/uploads/1/14735/1101733-20090611232449_halo_3_odst_box_art_super.png"
112
+ }
113
+ },
114
+ "limit": 1,
115
+ "offset": 0,
116
+ "number_of_total_results": 1
117
+ }
@@ -6,104 +6,131 @@ class GiantBombTest < Test::Unit::TestCase
6
6
  setup do
7
7
  @gb = GiantBomb::Search.new("key")
8
8
  end
9
-
9
+
10
10
  context 'searching' do
11
11
  context 'for a game' do
12
12
  setup do
13
- stub_get('/search/?api_key=key&query=halo&resources=game&format=json', 'search.json')
13
+ stub_get('/search?format=json&api_key=key&resources=game&query=halo', 'search.json')
14
14
  @results = @gb.find_game('halo')
15
15
  end
16
16
 
17
17
  should "return an array" do
18
18
  assert_equal Array, @results.class
19
19
  end
20
-
20
+
21
21
  should "return an array of Games" do
22
22
  assert_equal GiantBomb::Game, @results.first.class
23
23
  end
24
24
  end
25
25
  end
26
-
26
+
27
27
  context 'Games' do
28
28
  context 'with good data' do
29
29
  setup do
30
- stub_get('/search/?api_key=key&query=halo&resources=game&format=json', 'search.json')
30
+ stub_get('/search?format=json&api_key=key&resources=game&query=halo', 'search.json')
31
+ stub_get('/game/24035/?format=json&api_key=key&field_list=developers%2Cgenres%2Cimages%2Cpublishers', 'get_info.json')
32
+
31
33
  @game = @gb.find_game('halo').first
32
34
  end
33
-
35
+
34
36
  should "have a name" do
35
37
  assert_equal 'Halo 3: ODST', @game.name
36
38
  end
37
-
39
+
38
40
  should "have a deck" do
39
41
  assert_not_nil @game.deck
40
42
  end
41
-
43
+
42
44
  should "have a description" do
43
45
  assert_not_nil @game.deck
44
46
  end
45
-
47
+
46
48
  should "have parsed date_last_updated to be a real date" do
47
- assert_equal DateTime, @game.date_last_updated.class
49
+ assert_equal Date, @game.date_last_updated.class
48
50
  end
49
-
51
+
50
52
  should "have parsed original_release_date to be a real date" do
51
- assert_equal DateTime, @game.original_release_date.class
53
+ assert_equal Date, @game.original_release_date.class
52
54
  end
53
-
55
+
54
56
  should "have parsed date_added to be a real date" do
55
- assert_equal DateTime, @game.date_added.class
57
+ assert_equal Date, @game.date_added.class
56
58
  end
57
-
59
+
58
60
  context 'with an image' do
61
+
62
+ should 'cover should be an alias to image' do
63
+ assert_equal @game.image, @game.cover
64
+ end
59
65
 
60
66
  should 'have an image hash' do
61
67
  assert_equal Hash, @game.image.class
62
68
  end
63
-
69
+
64
70
  should 'have multiple sizes for the image' do
65
71
  assert_equal 5, @game.image.keys.size
66
72
  end
67
-
73
+
68
74
  should 'have these sizes with symbols for keys' do
69
- assert_not_nil @game.image[:super]
70
- assert_not_nil @game.image[:small]
71
- assert_not_nil @game.image[:thumb]
72
- assert_not_nil @game.image[:tiny]
73
- assert_not_nil @game.image[:screen]
75
+ assert_not_nil @game.image["super_url"]
76
+ assert_not_nil @game.image["small_url"]
77
+ assert_not_nil @game.image["thumb_url"]
78
+ assert_not_nil @game.image["tiny_url"]
79
+ assert_not_nil @game.image["screen_url"]
80
+ end
81
+ end
82
+
83
+ context 'lazy loaded attrs' do
84
+
85
+ should 'have a genres array' do
86
+ assert_equal Array, @game.genres.class
87
+ end
88
+
89
+ should 'have a developers array' do
90
+ assert_equal Array, @game.developers.class
91
+ end
92
+
93
+ should 'have a publishers array' do
94
+ assert_equal Array, @game.publishers.class
95
+ end
96
+
97
+ should 'have an images array' do
98
+ assert_equal Array, @game.images.class
74
99
  end
75
100
 
101
+ should 'have an images array of hashes' do
102
+ assert_equal Hash, @game.images.first.class
103
+ end
104
+
76
105
  end
106
+
77
107
  end
78
108
 
79
109
 
80
110
  context 'with sketchy data' do
81
111
  setup do
82
- stub_get('/search/?api_key=key&query=halo2&resources=game&format=json', 'sketchy_results.json')
112
+ stub_get('/search?format=json&api_key=key&resources=game&query=halo2', 'sketchy_results.json')
83
113
  @game = @gb.find_game('halo2').first
84
- puts @game.name
85
114
  end
86
115
 
87
116
  should 'handle not having date_added' do
88
117
  assert_nil @game.date_added
89
118
  end
90
-
119
+
91
120
  should 'handle not having original_release_date' do
92
121
  assert_nil @game.original_release_date
93
122
  end
94
-
123
+
95
124
  should 'handle not having date_last_updated' do
96
125
  assert_nil @game.date_last_updated
97
126
  end
98
-
127
+
99
128
  should 'handle not having image urls' do
100
- assert_equal Hash, @game.image.class
101
- assert_equal 0, @game.image.keys.size
129
+ assert_nil @game.image
102
130
  end
103
-
104
131
  end
105
-
106
-
132
+
133
+
107
134
  end
108
135
 
109
136
  end
data/test/test_helper.rb CHANGED
@@ -8,6 +8,8 @@ $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
8
8
  $LOAD_PATH.unshift(File.dirname(__FILE__))
9
9
  require 'giant_bomb'
10
10
 
11
+ # FakeWeb.allow_net_connect = false
12
+
11
13
  class Test::Unit::TestCase
12
14
  end
13
15
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: giant_bomb
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jon Maddox
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2009-10-21 00:00:00 -04:00
12
+ date: 2009-10-27 00:00:00 -04:00
13
13
  default_executable:
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
@@ -60,9 +60,15 @@ files:
60
60
  - VERSION
61
61
  - giant_bomb.gemspec
62
62
  - lib/giant_bomb.rb
63
+ - lib/giant_bomb/attributes.rb
64
+ - lib/giant_bomb/core_extensions.rb
65
+ - lib/giant_bomb/developer.rb
63
66
  - lib/giant_bomb/game.rb
67
+ - lib/giant_bomb/genre.rb
64
68
  - lib/giant_bomb/httparty_icebox.rb
69
+ - lib/giant_bomb/publisher.rb
65
70
  - lib/giant_bomb/search.rb
71
+ - test/fixtures/get_info.json
66
72
  - test/fixtures/search.json
67
73
  - test/fixtures/sketchy_results.json
68
74
  - test/giant_bomb_test.rb