luchadeer 0.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.
- checksums.yaml +7 -0
- data/.gitignore +19 -0
- data/.rspec +1 -0
- data/.travis.yml +6 -0
- data/Gemfile +4 -0
- data/Gemfile.lock +60 -0
- data/LICENSE +20 -0
- data/README.md +58 -0
- data/Rakefile +1 -0
- data/lib/luchadeer.rb +32 -0
- data/lib/luchadeer/api.rb +51 -0
- data/lib/luchadeer/api/characters.rb +11 -0
- data/lib/luchadeer/api/companies.rb +11 -0
- data/lib/luchadeer/api/concepts.rb +11 -0
- data/lib/luchadeer/api/franchises.rb +11 -0
- data/lib/luchadeer/api/games.rb +11 -0
- data/lib/luchadeer/api/locations.rb +11 -0
- data/lib/luchadeer/api/objects.rb +11 -0
- data/lib/luchadeer/api/people.rb +11 -0
- data/lib/luchadeer/api/videos.rb +11 -0
- data/lib/luchadeer/character.rb +13 -0
- data/lib/luchadeer/client.rb +73 -0
- data/lib/luchadeer/company.rb +13 -0
- data/lib/luchadeer/concept.rb +13 -0
- data/lib/luchadeer/error.rb +50 -0
- data/lib/luchadeer/franchise.rb +13 -0
- data/lib/luchadeer/game.rb +13 -0
- data/lib/luchadeer/location.rb +13 -0
- data/lib/luchadeer/middleware/follow_redirects.rb +50 -0
- data/lib/luchadeer/middleware/parse_api_error.rb +18 -0
- data/lib/luchadeer/middleware/parse_http_error.rb +18 -0
- data/lib/luchadeer/middleware/parse_json.rb +28 -0
- data/lib/luchadeer/object.rb +13 -0
- data/lib/luchadeer/person.rb +13 -0
- data/lib/luchadeer/resource.rb +37 -0
- data/lib/luchadeer/search.rb +45 -0
- data/lib/luchadeer/version.rb +3 -0
- data/lib/luchadeer/video.rb +13 -0
- data/luchadeer.gemspec +27 -0
- data/spec/luchadeer/api/characters_spec.rb +28 -0
- data/spec/luchadeer/api/companies_spec.rb +28 -0
- data/spec/luchadeer/api/concepts_spec.rb +28 -0
- data/spec/luchadeer/api/franchises_spec.rb +28 -0
- data/spec/luchadeer/api/games_spec.rb +28 -0
- data/spec/luchadeer/api/locations_spec.rb +28 -0
- data/spec/luchadeer/api/objects_spec.rb +28 -0
- data/spec/luchadeer/api/people_spec.rb +28 -0
- data/spec/luchadeer/api/videos_spec.rb +28 -0
- data/spec/luchadeer/api_spec.rb +101 -0
- data/spec/luchadeer/character_spec.rb +27 -0
- data/spec/luchadeer/client_spec.rb +54 -0
- data/spec/luchadeer/company_spec.rb +27 -0
- data/spec/luchadeer/concept_spec.rb +27 -0
- data/spec/luchadeer/error_spec.rb +53 -0
- data/spec/luchadeer/franchise_spec.rb +27 -0
- data/spec/luchadeer/game_spec.rb +27 -0
- data/spec/luchadeer/location_spec.rb +27 -0
- data/spec/luchadeer/object_spec.rb +27 -0
- data/spec/luchadeer/person_spec.rb +27 -0
- data/spec/luchadeer/resource_spec.rb +70 -0
- data/spec/luchadeer/search_spec.rb +69 -0
- data/spec/luchadeer/video_spec.rb +27 -0
- data/spec/luchadeer_spec.rb +24 -0
- data/spec/spec_helper.rb +5 -0
- metadata +216 -0
@@ -0,0 +1,53 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Luchadeer::Error do
|
4
|
+
|
5
|
+
describe '.api_errors' do
|
6
|
+
let(:ok) { Luchadeer::Error::Codes::OK }
|
7
|
+
let(:error_code) { Luchadeer::Error::Codes::INVALID_API_KEY }
|
8
|
+
let(:exception) { Luchadeer::Error::InvalidAPIKey }
|
9
|
+
|
10
|
+
it 'returns a hash' do
|
11
|
+
expect(described_class.api_errors).to respond_to :[]
|
12
|
+
end
|
13
|
+
|
14
|
+
it 'maps API error codes to exceptions' do
|
15
|
+
expect(described_class.api_errors[error_code]).to eq exception
|
16
|
+
end
|
17
|
+
|
18
|
+
it 'does not map "OK" to an exception' do
|
19
|
+
expect(described_class.api_errors[ok]).to be_nil
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
describe '.http_errors' do
|
24
|
+
let(:error_code) { 404 }
|
25
|
+
let(:exception) { Luchadeer::Error::NotFound }
|
26
|
+
|
27
|
+
it 'returns a hash' do
|
28
|
+
expect(described_class.http_errors).to respond_to :[]
|
29
|
+
end
|
30
|
+
|
31
|
+
it 'maps HTTP status codes to exceptions' do
|
32
|
+
expect(described_class.http_errors[error_code]).to eq exception
|
33
|
+
end
|
34
|
+
|
35
|
+
it 'does not map 200' do
|
36
|
+
expect(described_class.http_errors[200]).to be_nil
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
describe '#initialize' do
|
41
|
+
let(:message) { 'testing' }
|
42
|
+
let(:error) { described_class.new(message) }
|
43
|
+
|
44
|
+
it 'is raiseable' do
|
45
|
+
expect(error).to be_a StandardError
|
46
|
+
end
|
47
|
+
|
48
|
+
it 'constructs with message and status' do
|
49
|
+
expect(error.message).to eq message
|
50
|
+
end
|
51
|
+
end
|
52
|
+
|
53
|
+
end
|
@@ -0,0 +1,27 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Luchadeer::Franchise do
|
4
|
+
|
5
|
+
it 'is a resource' do
|
6
|
+
expect(described_class.new).to be_a Luchadeer::Resource
|
7
|
+
end
|
8
|
+
|
9
|
+
describe '.find' do
|
10
|
+
let(:client) { Luchadeer::Client.new }
|
11
|
+
|
12
|
+
before :each do
|
13
|
+
Luchadeer.client = client
|
14
|
+
end
|
15
|
+
|
16
|
+
it 'forwards to Client#franchise with arguments' do
|
17
|
+
expect(client).to receive(:franchise).with(1, true)
|
18
|
+
described_class.find(1, true)
|
19
|
+
end
|
20
|
+
|
21
|
+
it 'forwards to Client#franchise with default refresh' do
|
22
|
+
expect(client).to receive(:franchise).with(1, false)
|
23
|
+
described_class.find(1)
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
end
|
@@ -0,0 +1,27 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Luchadeer::Game do
|
4
|
+
|
5
|
+
it 'is a resource' do
|
6
|
+
expect(described_class.new).to be_a Luchadeer::Resource
|
7
|
+
end
|
8
|
+
|
9
|
+
describe '.find' do
|
10
|
+
let(:client) { Luchadeer::Client.new }
|
11
|
+
|
12
|
+
before :each do
|
13
|
+
Luchadeer.client = client
|
14
|
+
end
|
15
|
+
|
16
|
+
it 'forwards to Client#game with arguments' do
|
17
|
+
expect(client).to receive(:game).with(1, true)
|
18
|
+
described_class.find(1, true)
|
19
|
+
end
|
20
|
+
|
21
|
+
it 'forwards to Client#game with default refresh' do
|
22
|
+
expect(client).to receive(:game).with(1, false)
|
23
|
+
described_class.find(1)
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
end
|
@@ -0,0 +1,27 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Luchadeer::Location do
|
4
|
+
|
5
|
+
it 'is a resource' do
|
6
|
+
expect(described_class.new).to be_a Luchadeer::Resource
|
7
|
+
end
|
8
|
+
|
9
|
+
describe '.find' do
|
10
|
+
let(:client) { Luchadeer::Client.new }
|
11
|
+
|
12
|
+
before :each do
|
13
|
+
Luchadeer.client = client
|
14
|
+
end
|
15
|
+
|
16
|
+
it 'forwards to Client#location with arguments' do
|
17
|
+
expect(client).to receive(:location).with(1, true)
|
18
|
+
described_class.find(1, true)
|
19
|
+
end
|
20
|
+
|
21
|
+
it 'forwards to Client#location with default refresh' do
|
22
|
+
expect(client).to receive(:location).with(1, false)
|
23
|
+
described_class.find(1)
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
end
|
@@ -0,0 +1,27 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Luchadeer::Object do
|
4
|
+
|
5
|
+
it 'is a resource' do
|
6
|
+
expect(described_class.new).to be_a Luchadeer::Resource
|
7
|
+
end
|
8
|
+
|
9
|
+
describe '.find' do
|
10
|
+
let(:client) { Luchadeer::Client.new }
|
11
|
+
|
12
|
+
before :each do
|
13
|
+
Luchadeer.client = client
|
14
|
+
end
|
15
|
+
|
16
|
+
it 'forwards to Client#object with arguments' do
|
17
|
+
expect(client).to receive(:object).with(1, true)
|
18
|
+
described_class.find(1, true)
|
19
|
+
end
|
20
|
+
|
21
|
+
it 'forwards to Client#object with default refresh' do
|
22
|
+
expect(client).to receive(:object).with(1, false)
|
23
|
+
described_class.find(1)
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
end
|
@@ -0,0 +1,27 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Luchadeer::Person do
|
4
|
+
|
5
|
+
it 'is a resource' do
|
6
|
+
expect(described_class.new).to be_a Luchadeer::Resource
|
7
|
+
end
|
8
|
+
|
9
|
+
describe '.find' do
|
10
|
+
let(:client) { Luchadeer::Client.new }
|
11
|
+
|
12
|
+
before :each do
|
13
|
+
Luchadeer.client = client
|
14
|
+
end
|
15
|
+
|
16
|
+
it 'forwards to Client#person with arguments' do
|
17
|
+
expect(client).to receive(:person).with(1, true)
|
18
|
+
described_class.find(1, true)
|
19
|
+
end
|
20
|
+
|
21
|
+
it 'forwards to Client#person with default refresh' do
|
22
|
+
expect(client).to receive(:person).with(1, false)
|
23
|
+
described_class.find(1)
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
end
|
@@ -0,0 +1,70 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Luchadeer::Resource do
|
4
|
+
let(:hash) { { first_name: 'Chie', last_name: 'Satonaka', age: 16 } }
|
5
|
+
let(:resource) { described_class.new(hash) }
|
6
|
+
|
7
|
+
describe '#initialize' do
|
8
|
+
it 'generates ostruct accessors for its keys' do
|
9
|
+
expect(resource.first_name).to eq hash[:first_name]
|
10
|
+
expect(resource.last_name).to eq hash[:last_name]
|
11
|
+
expect(resource.age).to eq hash[:age]
|
12
|
+
end
|
13
|
+
|
14
|
+
it 'returns nil for non-existent keys' do
|
15
|
+
expect(resource.foo).to be_nil
|
16
|
+
end
|
17
|
+
|
18
|
+
context 'with nested hashes as values' do
|
19
|
+
let(:nested) { hash.merge(nested: hash) }
|
20
|
+
let(:nested_resource) { described_class.new(nested) }
|
21
|
+
|
22
|
+
it 'recursively generates resource objects for nested hashes' do
|
23
|
+
expect(nested_resource.nested).to be_a Luchadeer::Resource
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
context 'with arrays as values' do
|
28
|
+
let(:arrayed) { hash.merge(arrayed: [{ test: "array" }]) }
|
29
|
+
let(:arrayed_resource) { described_class.new(arrayed) }
|
30
|
+
|
31
|
+
it 'recursively generates resource objects inside nested arrays' do
|
32
|
+
expect(arrayed_resource.arrayed[0]).to be_a Luchadeer::Resource
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
describe '#to_h' do
|
38
|
+
it 'returns a hash' do
|
39
|
+
expect(described_class.new(hash).to_h).to be_a Hash
|
40
|
+
end
|
41
|
+
|
42
|
+
it 'returns a hash representation of the object' do
|
43
|
+
expect(described_class.new(hash).to_h).to eq hash
|
44
|
+
end
|
45
|
+
end
|
46
|
+
|
47
|
+
describe '#detail' do
|
48
|
+
before :each do
|
49
|
+
Luchadeer.client = Luchadeer::Client.new
|
50
|
+
end
|
51
|
+
|
52
|
+
context 'when api_detail_url is present' do
|
53
|
+
let(:url) { 'http://www.giantbomb.com/api/game-3030/1' }
|
54
|
+
let(:resource) { described_class.new(api_detail_url: url) }
|
55
|
+
|
56
|
+
it 'fetches details and returns the new object' do
|
57
|
+
stub_request(:get, %r(#{url})).to_return(body: '{ "results": { "detailed?": true } }')
|
58
|
+
expect(resource.detail.detailed?).to be_true
|
59
|
+
end
|
60
|
+
end
|
61
|
+
|
62
|
+
context 'when api_detail_url is not present' do
|
63
|
+
let(:resource) { described_class.new }
|
64
|
+
|
65
|
+
it 'returns the original object' do
|
66
|
+
expect(resource.detail).to eq resource
|
67
|
+
end
|
68
|
+
end
|
69
|
+
end
|
70
|
+
end
|
@@ -0,0 +1,69 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Luchadeer::Search do
|
4
|
+
let(:query) { 'Chie Satonaka' }
|
5
|
+
let(:search_path) { %r(#{Luchadeer::Client::GIANT_BOMB}/search) }
|
6
|
+
|
7
|
+
describe '#initialize' do
|
8
|
+
it 'instantiates with a search query' do
|
9
|
+
expect(described_class.new(query).query).to eq query
|
10
|
+
end
|
11
|
+
end
|
12
|
+
|
13
|
+
describe '#fetch' do
|
14
|
+
before :each do
|
15
|
+
Luchadeer.client = Luchadeer::Client.new
|
16
|
+
end
|
17
|
+
|
18
|
+
it 'queries the Giant Bomb search API' do
|
19
|
+
stub = stub_request(:get, search_path).to_return(body: '{ "results": [] }')
|
20
|
+
|
21
|
+
described_class.new(query).fetch
|
22
|
+
expect(stub).to have_been_requested
|
23
|
+
end
|
24
|
+
|
25
|
+
describe 'generates the proper class based on the result type' do
|
26
|
+
subject do
|
27
|
+
stub_request(:get, search_path).to_return(body:
|
28
|
+
'{ "results": [
|
29
|
+
{"resource_type": "character"},
|
30
|
+
{"resource_type": "company"},
|
31
|
+
{"resource_type": "concept"},
|
32
|
+
{"resource_type": "franchise"},
|
33
|
+
{"resource_type": "game"},
|
34
|
+
{"resource_type": "location"},
|
35
|
+
{"resource_type": "object"},
|
36
|
+
{"resource_type": "person"},
|
37
|
+
{"resource_type": "video"}
|
38
|
+
] }')
|
39
|
+
described_class.new(query).fetch
|
40
|
+
end
|
41
|
+
|
42
|
+
its([0]) { should be_instance_of Luchadeer::Character }
|
43
|
+
its([1]) { should be_instance_of Luchadeer::Company }
|
44
|
+
its([2]) { should be_instance_of Luchadeer::Concept }
|
45
|
+
its([3]) { should be_instance_of Luchadeer::Franchise }
|
46
|
+
its([4]) { should be_instance_of Luchadeer::Game }
|
47
|
+
its([5]) { should be_instance_of Luchadeer::Location }
|
48
|
+
its([6]) { should be_instance_of Luchadeer::Object }
|
49
|
+
its([7]) { should be_instance_of Luchadeer::Person }
|
50
|
+
its([8]) { should be_instance_of Luchadeer::Video }
|
51
|
+
end
|
52
|
+
|
53
|
+
context 'when there are no results' do
|
54
|
+
it 'returns an empty array' do
|
55
|
+
stub_request(:get, search_path).to_return(body:
|
56
|
+
'{ "results": [{ "resource_type": "banana"}] }')
|
57
|
+
expect(described_class.new(query).fetch).to eq []
|
58
|
+
end
|
59
|
+
end
|
60
|
+
|
61
|
+
context 'when the resource type isn\'t mapped' do
|
62
|
+
it 'skips modeling the resource' do
|
63
|
+
stub_request(:get, search_path).to_return(body: '{ "results": [] }')
|
64
|
+
expect(described_class.new(query).fetch).to eq []
|
65
|
+
end
|
66
|
+
end
|
67
|
+
end
|
68
|
+
|
69
|
+
end
|
@@ -0,0 +1,27 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Luchadeer::Video do
|
4
|
+
|
5
|
+
it 'is a resource' do
|
6
|
+
expect(described_class.new).to be_a Luchadeer::Resource
|
7
|
+
end
|
8
|
+
|
9
|
+
describe '.find' do
|
10
|
+
let(:client) { Luchadeer::Client.new }
|
11
|
+
|
12
|
+
before :each do
|
13
|
+
Luchadeer.client = client
|
14
|
+
end
|
15
|
+
|
16
|
+
it 'forwards to Client#video with arguments' do
|
17
|
+
expect(client).to receive(:video).with(1, true)
|
18
|
+
described_class.find(1, true)
|
19
|
+
end
|
20
|
+
|
21
|
+
it 'forwards to Client#video with default refresh' do
|
22
|
+
expect(client).to receive(:video).with(1, false)
|
23
|
+
described_class.find(1)
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
end
|
@@ -0,0 +1,24 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Luchadeer do
|
4
|
+
let(:api_key) { 'VinnCo' }
|
5
|
+
|
6
|
+
describe '.configure' do
|
7
|
+
it 'returns a Luchadeer::Client' do
|
8
|
+
expect(described_class.configure).to be_instance_of Luchadeer::Client
|
9
|
+
end
|
10
|
+
|
11
|
+
it 'passes opts hash to the new client' do
|
12
|
+
hash = { api_key: api_key }
|
13
|
+
|
14
|
+
expect(described_class.configure(hash).api_key).to eq api_key
|
15
|
+
end
|
16
|
+
|
17
|
+
it 'passes the given block to the new client' do
|
18
|
+
proc = Proc.new { |c| c.api_key = api_key }
|
19
|
+
|
20
|
+
expect(described_class.configure(&proc).api_key).to eq api_key
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
end
|
data/spec/spec_helper.rb
ADDED
metadata
ADDED
@@ -0,0 +1,216 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: luchadeer
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Paul Friedman
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2014-02-09 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: faraday
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - "~>"
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: 0.9.0
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - "~>"
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: 0.9.0
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: bundler
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - "~>"
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '1.5'
|
34
|
+
type: :development
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - "~>"
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '1.5'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: rake
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - ">="
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '0'
|
48
|
+
type: :development
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - ">="
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: rspec
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - ">="
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0'
|
62
|
+
type: :development
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - ">="
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '0'
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: webmock
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - ">="
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '0'
|
76
|
+
type: :development
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - ">="
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '0'
|
83
|
+
- !ruby/object:Gem::Dependency
|
84
|
+
name: coveralls
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - ">="
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: '0'
|
90
|
+
type: :development
|
91
|
+
prerelease: false
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
93
|
+
requirements:
|
94
|
+
- - ">="
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: '0'
|
97
|
+
description:
|
98
|
+
email:
|
99
|
+
- paulrfri@gmail.com
|
100
|
+
executables: []
|
101
|
+
extensions: []
|
102
|
+
extra_rdoc_files: []
|
103
|
+
files:
|
104
|
+
- ".gitignore"
|
105
|
+
- ".rspec"
|
106
|
+
- ".travis.yml"
|
107
|
+
- Gemfile
|
108
|
+
- Gemfile.lock
|
109
|
+
- LICENSE
|
110
|
+
- README.md
|
111
|
+
- Rakefile
|
112
|
+
- lib/luchadeer.rb
|
113
|
+
- lib/luchadeer/api.rb
|
114
|
+
- lib/luchadeer/api/characters.rb
|
115
|
+
- lib/luchadeer/api/companies.rb
|
116
|
+
- lib/luchadeer/api/concepts.rb
|
117
|
+
- lib/luchadeer/api/franchises.rb
|
118
|
+
- lib/luchadeer/api/games.rb
|
119
|
+
- lib/luchadeer/api/locations.rb
|
120
|
+
- lib/luchadeer/api/objects.rb
|
121
|
+
- lib/luchadeer/api/people.rb
|
122
|
+
- lib/luchadeer/api/videos.rb
|
123
|
+
- lib/luchadeer/character.rb
|
124
|
+
- lib/luchadeer/client.rb
|
125
|
+
- lib/luchadeer/company.rb
|
126
|
+
- lib/luchadeer/concept.rb
|
127
|
+
- lib/luchadeer/error.rb
|
128
|
+
- lib/luchadeer/franchise.rb
|
129
|
+
- lib/luchadeer/game.rb
|
130
|
+
- lib/luchadeer/location.rb
|
131
|
+
- lib/luchadeer/middleware/follow_redirects.rb
|
132
|
+
- lib/luchadeer/middleware/parse_api_error.rb
|
133
|
+
- lib/luchadeer/middleware/parse_http_error.rb
|
134
|
+
- lib/luchadeer/middleware/parse_json.rb
|
135
|
+
- lib/luchadeer/object.rb
|
136
|
+
- lib/luchadeer/person.rb
|
137
|
+
- lib/luchadeer/resource.rb
|
138
|
+
- lib/luchadeer/search.rb
|
139
|
+
- lib/luchadeer/version.rb
|
140
|
+
- lib/luchadeer/video.rb
|
141
|
+
- luchadeer.gemspec
|
142
|
+
- spec/luchadeer/api/characters_spec.rb
|
143
|
+
- spec/luchadeer/api/companies_spec.rb
|
144
|
+
- spec/luchadeer/api/concepts_spec.rb
|
145
|
+
- spec/luchadeer/api/franchises_spec.rb
|
146
|
+
- spec/luchadeer/api/games_spec.rb
|
147
|
+
- spec/luchadeer/api/locations_spec.rb
|
148
|
+
- spec/luchadeer/api/objects_spec.rb
|
149
|
+
- spec/luchadeer/api/people_spec.rb
|
150
|
+
- spec/luchadeer/api/videos_spec.rb
|
151
|
+
- spec/luchadeer/api_spec.rb
|
152
|
+
- spec/luchadeer/character_spec.rb
|
153
|
+
- spec/luchadeer/client_spec.rb
|
154
|
+
- spec/luchadeer/company_spec.rb
|
155
|
+
- spec/luchadeer/concept_spec.rb
|
156
|
+
- spec/luchadeer/error_spec.rb
|
157
|
+
- spec/luchadeer/franchise_spec.rb
|
158
|
+
- spec/luchadeer/game_spec.rb
|
159
|
+
- spec/luchadeer/location_spec.rb
|
160
|
+
- spec/luchadeer/object_spec.rb
|
161
|
+
- spec/luchadeer/person_spec.rb
|
162
|
+
- spec/luchadeer/resource_spec.rb
|
163
|
+
- spec/luchadeer/search_spec.rb
|
164
|
+
- spec/luchadeer/video_spec.rb
|
165
|
+
- spec/luchadeer_spec.rb
|
166
|
+
- spec/spec_helper.rb
|
167
|
+
homepage: https://github.com/paulfri/luchadeer
|
168
|
+
licenses:
|
169
|
+
- MIT
|
170
|
+
metadata: {}
|
171
|
+
post_install_message:
|
172
|
+
rdoc_options: []
|
173
|
+
require_paths:
|
174
|
+
- lib
|
175
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
176
|
+
requirements:
|
177
|
+
- - ">="
|
178
|
+
- !ruby/object:Gem::Version
|
179
|
+
version: '0'
|
180
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
181
|
+
requirements:
|
182
|
+
- - ">="
|
183
|
+
- !ruby/object:Gem::Version
|
184
|
+
version: '0'
|
185
|
+
requirements: []
|
186
|
+
rubyforge_project:
|
187
|
+
rubygems_version: 2.2.1
|
188
|
+
signing_key:
|
189
|
+
specification_version: 4
|
190
|
+
summary: The bombingest Giant Bomb API client library for Ruby.
|
191
|
+
test_files:
|
192
|
+
- spec/luchadeer/api/characters_spec.rb
|
193
|
+
- spec/luchadeer/api/companies_spec.rb
|
194
|
+
- spec/luchadeer/api/concepts_spec.rb
|
195
|
+
- spec/luchadeer/api/franchises_spec.rb
|
196
|
+
- spec/luchadeer/api/games_spec.rb
|
197
|
+
- spec/luchadeer/api/locations_spec.rb
|
198
|
+
- spec/luchadeer/api/objects_spec.rb
|
199
|
+
- spec/luchadeer/api/people_spec.rb
|
200
|
+
- spec/luchadeer/api/videos_spec.rb
|
201
|
+
- spec/luchadeer/api_spec.rb
|
202
|
+
- spec/luchadeer/character_spec.rb
|
203
|
+
- spec/luchadeer/client_spec.rb
|
204
|
+
- spec/luchadeer/company_spec.rb
|
205
|
+
- spec/luchadeer/concept_spec.rb
|
206
|
+
- spec/luchadeer/error_spec.rb
|
207
|
+
- spec/luchadeer/franchise_spec.rb
|
208
|
+
- spec/luchadeer/game_spec.rb
|
209
|
+
- spec/luchadeer/location_spec.rb
|
210
|
+
- spec/luchadeer/object_spec.rb
|
211
|
+
- spec/luchadeer/person_spec.rb
|
212
|
+
- spec/luchadeer/resource_spec.rb
|
213
|
+
- spec/luchadeer/search_spec.rb
|
214
|
+
- spec/luchadeer/video_spec.rb
|
215
|
+
- spec/luchadeer_spec.rb
|
216
|
+
- spec/spec_helper.rb
|