marver 0.0.4 → 0.0.5
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.travis.yml +4 -0
- data/Gemfile +5 -0
- data/Guardfile +9 -0
- data/README.md +12 -12
- data/lib/marver.rb +5 -0
- data/lib/marver/client.rb +4 -1
- data/lib/marver/entities/comic.rb +5 -5
- data/lib/marver/entities/event.rb +2 -2
- data/lib/marver/entities/summary/comic.rb +1 -1
- data/lib/marver/finders/comic_finder.rb +13 -0
- data/lib/marver/finders/event_finder.rb +13 -0
- data/lib/marver/finders/serie_finder.rb +15 -0
- data/lib/marver/finders/story_finder.rb +15 -0
- data/lib/marver/version.rb +1 -1
- data/marver.gemspec +3 -3
- data/spec/marver/client_spec.rb +11 -0
- data/spec/marver/entities/comic_spec.rb +5 -2
- data/spec/marver/entities/event_spec.rb +2 -2
- data/spec/marver/finders/comic_finder_spec.rb +19 -0
- data/spec/marver/finders/event_finder_spec.rb +19 -0
- data/spec/marver/finders/serie_finder_spec.rb +20 -0
- data/spec/marver/finders/story_finder_spec.rb +20 -0
- metadata +19 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 6999bcd56389247095ef5f3f194a5cc5ce02ad46
|
4
|
+
data.tar.gz: 93ae15fd9d34643f56fafc7b5aadea0ae07e2634
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 053b0c99bcc8510b4ceb2d995d9253e5da63efd09c08afd12024d600d918087845deff7ffc7c50685dcbcb87e61128a9e47f181855ed5de660e6d713130f6325
|
7
|
+
data.tar.gz: a4bef621f42b2ca56fbae472ca167c586c7434cd929710443fc477d663256d3cf064bbae05eadddee8d59fac114e8ec7cf42eea7a88abb87e39ce692db1d80a4
|
data/.travis.yml
ADDED
data/Gemfile
CHANGED
data/Guardfile
ADDED
data/README.md
CHANGED
@@ -1,8 +1,8 @@
|
|
1
1
|
Marver
|
2
2
|
======
|
3
3
|
|
4
|
-
Marver is
|
5
|
-
It is
|
4
|
+
Marver is an easy to use Ruby gem for [Marvel's API](http://developer.marvel.com/).
|
5
|
+
It is still very much work in progress. Has lots of rough edges that you might cut yourself on. You've been warned.
|
6
6
|
|
7
7
|
## Installation
|
8
8
|
|
@@ -27,8 +27,11 @@ Marver.configure do |config|
|
|
27
27
|
end
|
28
28
|
|
29
29
|
client = Marver::Client.new
|
30
|
-
client.characters.find({ name: 'Hulk' })
|
31
|
-
client.
|
30
|
+
client.characters.find({ name: 'Hulk' })
|
31
|
+
client.series.find({ title: 'The Avengers' })
|
32
|
+
client.events.find({ title: 'Fall of the mutants' })
|
33
|
+
client.stories.find({ title: 'Name of a story' })
|
34
|
+
client.comics.find({ title: 'Spiderman' })
|
32
35
|
```
|
33
36
|
|
34
37
|
Also, you can inspect summary (trimmed) objects of the associated entities to one entity.
|
@@ -48,8 +51,8 @@ hulk.stories # Returns an array of stories where Hulk appears
|
|
48
51
|
A summary object can also morph into a "full view" object.
|
49
52
|
|
50
53
|
```ruby
|
51
|
-
comic = hulk.comics.first # Take first comic where Hulk appears
|
52
|
-
comic.full # This will issue an API call and grab the full object with all data for that comic
|
54
|
+
comic = hulk.comics.first # Take first comic where Hulk appears.
|
55
|
+
comic.full # This will issue an API call and grab the full object with all data for that comic.
|
53
56
|
```
|
54
57
|
|
55
58
|
### TO DO:
|
@@ -57,13 +60,10 @@ comic.full # This will issue an API call and grab the full object with all data
|
|
57
60
|
##### Entity Finder classes
|
58
61
|
Should be implemented within the Marver::Client class.
|
59
62
|
|
60
|
-
|
61
|
-
* SerieFinder
|
62
|
-
* StoryFinder
|
63
|
-
* ComicFinder
|
64
|
-
* EventFinder
|
65
|
-
* More?
|
63
|
+
CreatorFinder
|
66
64
|
|
67
65
|
#### Author
|
68
66
|
Ile Eftimov <br/>
|
69
67
|
[twitter](http://twitter.com/fteem) [website](http://eftimov.net)
|
68
|
+
|
69
|
+
Any kind of contribution is welcomed & encouraged :)
|
data/lib/marver.rb
CHANGED
@@ -1,4 +1,5 @@
|
|
1
1
|
require 'rest_client'
|
2
|
+
require 'time'
|
2
3
|
require 'marver/version'
|
3
4
|
|
4
5
|
module Marver
|
@@ -10,6 +11,10 @@ module Marver
|
|
10
11
|
|
11
12
|
# Finders
|
12
13
|
autoload :CharacterFinder, 'marver/finders/character_finder'
|
14
|
+
autoload :SerieFinder, 'marver/finders/serie_finder'
|
15
|
+
autoload :ComicFinder, 'marver/finders/comic_finder'
|
16
|
+
autoload :EventFinder, 'marver/finders/event_finder'
|
17
|
+
autoload :StoryFinder, 'marver/finders/story_finder'
|
13
18
|
|
14
19
|
# API
|
15
20
|
autoload :API, 'marver/api'
|
data/lib/marver/client.rb
CHANGED
@@ -2,10 +2,13 @@ require './lib/marver.rb'
|
|
2
2
|
|
3
3
|
module Marver
|
4
4
|
class Client
|
5
|
-
attr_reader :characters
|
5
|
+
attr_reader :characters, :series, :comics, :stories
|
6
6
|
|
7
7
|
def initialize
|
8
8
|
@characters = Marver::CharacterFinder.new
|
9
|
+
@series = Marver::SerieFinder.new
|
10
|
+
@comics = Marver::ComicFinder.new
|
11
|
+
@stories = Marver::StoryFinder.new
|
9
12
|
end
|
10
13
|
|
11
14
|
end
|
@@ -11,13 +11,13 @@ module Marver
|
|
11
11
|
:page_count, :resource_uri
|
12
12
|
|
13
13
|
class << self
|
14
|
-
def build(
|
15
|
-
if
|
16
|
-
|
17
|
-
new(comic)
|
14
|
+
def build(results)
|
15
|
+
if results.kind_of?(Array)
|
16
|
+
results.collect do |comic|
|
17
|
+
Marver::Comic.new(comic)
|
18
18
|
end
|
19
19
|
else
|
20
|
-
new(
|
20
|
+
new(results)
|
21
21
|
end
|
22
22
|
end
|
23
23
|
end
|
@@ -25,8 +25,8 @@ module Marver
|
|
25
25
|
@resource_uri = @json['resourceURI']
|
26
26
|
|
27
27
|
@description = @json['description']
|
28
|
-
@start =
|
29
|
-
@end =
|
28
|
+
@start = DateTime.parse(@json['start'])
|
29
|
+
@end = DateTime.parse(@json['end'])
|
30
30
|
@next = Marver::Summary::Event.new(@json['next'])
|
31
31
|
@previous = Marver::Summary::Event.new(@json['previous'])
|
32
32
|
end
|
@@ -0,0 +1,13 @@
|
|
1
|
+
require './lib/marver.rb'
|
2
|
+
|
3
|
+
module Marver
|
4
|
+
class ComicFinder
|
5
|
+
class << self
|
6
|
+
def find(options = {})
|
7
|
+
response = Marver::API::Client.new.get(:comics, options)
|
8
|
+
results = Marver::DataContainer.new(response).results
|
9
|
+
Marver::Comic.build(results)
|
10
|
+
end
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
@@ -0,0 +1,13 @@
|
|
1
|
+
require './lib/marver.rb'
|
2
|
+
|
3
|
+
module Marver
|
4
|
+
class EventFinder
|
5
|
+
class << self
|
6
|
+
def find(options = {})
|
7
|
+
response = Marver::API::Client.new.get(:events, options)
|
8
|
+
results = Marver::DataContainer.new(response).results
|
9
|
+
Marver::Event.build(results)
|
10
|
+
end
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
@@ -0,0 +1,15 @@
|
|
1
|
+
require './lib/marver.rb'
|
2
|
+
|
3
|
+
module Marver
|
4
|
+
class SerieFinder
|
5
|
+
|
6
|
+
class << self
|
7
|
+
def find(conditions = {})
|
8
|
+
response = Marver::API::Client.new.get(:series, conditions)
|
9
|
+
results = Marver::DataContainer.new(response).results
|
10
|
+
Marver::Serie.build(results)
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
end
|
15
|
+
end
|
@@ -0,0 +1,15 @@
|
|
1
|
+
require './lib/marver.rb'
|
2
|
+
|
3
|
+
module Marver
|
4
|
+
class StoryFinder
|
5
|
+
|
6
|
+
class << self
|
7
|
+
def find(conditions = {})
|
8
|
+
response = Marver::API::Client.new.get(:stories, conditions)
|
9
|
+
results = Marver::DataContainer.new(response).results
|
10
|
+
Marver::Story.build(results)
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
end
|
15
|
+
end
|
data/lib/marver/version.rb
CHANGED
data/marver.gemspec
CHANGED
@@ -8,9 +8,9 @@ Gem::Specification.new do |spec|
|
|
8
8
|
spec.version = Marver::VERSION
|
9
9
|
spec.authors = ["Ile Eftimov"]
|
10
10
|
spec.email = ["ileeftimov@gmail.com"]
|
11
|
-
spec.summary = %q{Marver, Marvel's API
|
12
|
-
spec.description = %q{Marver
|
13
|
-
spec.homepage = ""
|
11
|
+
spec.summary = %q{Marver, gem for Marvel's API}
|
12
|
+
spec.description = %q{Marver is a gem that provides a wrapper to Marvel's API}
|
13
|
+
spec.homepage = "http://github.com/fteem/marver"
|
14
14
|
spec.license = "MIT"
|
15
15
|
|
16
16
|
spec.files = `git ls-files -z`.split("\x0")
|
data/spec/marver/client_spec.rb
CHANGED
@@ -14,4 +14,15 @@ describe Marver::Client do
|
|
14
14
|
expect(@client.characters.class).to eq Marver::CharacterFinder
|
15
15
|
end
|
16
16
|
|
17
|
+
it 'has a serie finder' do
|
18
|
+
expect(@client.series.class).to eq Marver::SerieFinder
|
19
|
+
end
|
20
|
+
|
21
|
+
it 'has a comic finder' do
|
22
|
+
expect(@client.comics.class).to eq Marver::ComicFinder
|
23
|
+
end
|
24
|
+
|
25
|
+
it 'has a story finder' do
|
26
|
+
expect(@client.stories.class).to eq Marver::StoryFinder
|
27
|
+
end
|
17
28
|
end
|
@@ -1,8 +1,11 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
3
|
describe Marver::Comic do
|
4
|
-
|
5
|
-
let(:
|
4
|
+
|
5
|
+
let(:json) { fixture('comic.json').read }
|
6
|
+
let(:response) { Marver::API::Response.new(json) }
|
7
|
+
let(:data_container) { Marver::DataContainer.new(response) }
|
8
|
+
let(:comic) { Marver::Comic.new(data_container.results) }
|
6
9
|
|
7
10
|
it '#id - The unique ID of the comic resource' do
|
8
11
|
expect(comic.id).to eq 38524
|
@@ -28,14 +28,14 @@ describe Marver::Event do
|
|
28
28
|
end
|
29
29
|
|
30
30
|
it '#start - The date of publication of the first issue in this event.' do
|
31
|
-
expect(event.start.class).to eq
|
31
|
+
expect(event.start.class).to eq DateTime
|
32
32
|
expect(event.start.year).to eq 1988
|
33
33
|
expect(event.start.month).to eq 01
|
34
34
|
expect(event.start.day).to eq 10
|
35
35
|
end
|
36
36
|
|
37
37
|
it '#end - The date of publication of the last issue in this event.' do
|
38
|
-
expect(event.end.class).to eq
|
38
|
+
expect(event.end.class).to eq DateTime
|
39
39
|
expect(event.end.year).to eq 2007
|
40
40
|
expect(event.end.month).to eq 01
|
41
41
|
expect(event.end.day).to eq 17
|
@@ -0,0 +1,19 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Marver::ComicFinder do
|
4
|
+
describe '#find' do
|
5
|
+
before :each do
|
6
|
+
Time.stub_chain(:now, :to_i, :to_s).and_return "1"
|
7
|
+
stub_get("http://gateway.marvel.com/v1/public/comics?apikey=pub_key&hash=3d4ce88a477c7e4a5accbf6cd2c8b819&name=The%20Avengers&ts=1").to_return(:body => fixture('comic.json'), :headers => {:content_type => 'application/json; charset=utf-8'})
|
8
|
+
|
9
|
+
Marver.configure do |config|
|
10
|
+
config.public_key = 'pub_key'
|
11
|
+
config.private_key = 'priv_key'
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
it 'builds a Comic out of the received json' do
|
16
|
+
expect(Marver::ComicFinder.find({ name: 'The Avengers' })).to be_kind_of(Marver::Comic)
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Marver::EventFinder do
|
4
|
+
describe '#find' do
|
5
|
+
before :each do
|
6
|
+
Time.stub_chain(:now, :to_i, :to_s).and_return "1"
|
7
|
+
stub_get("http://gateway.marvel.com/v1/public/events?apikey=pub_key&hash=3d4ce88a477c7e4a5accbf6cd2c8b819&title=Fall%20of%20the%20Mutants&ts=1").to_return(:body => fixture('event.json'), :headers => {:content_type => 'application/json; charset=utf-8'})
|
8
|
+
|
9
|
+
Marver.configure do |config|
|
10
|
+
config.public_key = 'pub_key'
|
11
|
+
config.private_key = 'priv_key'
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
it 'builds an Event out of the received json' do
|
16
|
+
expect(Marver::EventFinder.find({ title: 'Fall of the Mutants' })).to be_kind_of(Marver::Event)
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Marver::SerieFinder do
|
4
|
+
describe '#find' do
|
5
|
+
|
6
|
+
before :each do
|
7
|
+
Time.stub_chain(:now, :to_i, :to_s).and_return "1"
|
8
|
+
stub_get("http://gateway.marvel.com/v1/public/series?apikey=pub_key&hash=3d4ce88a477c7e4a5accbf6cd2c8b819&name=The%20Avengers&ts=1").to_return(:body => fixture('serie.json'), :headers => {:content_type => 'application/json; charset=utf-8'})
|
9
|
+
|
10
|
+
Marver.configure do |config|
|
11
|
+
config.public_key = 'pub_key'
|
12
|
+
config.private_key = 'priv_key'
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
it 'builds a Serie out of the received json' do
|
17
|
+
expect(Marver::SerieFinder.find({ name: 'The Avengers' })).to be_kind_of(Marver::Serie)
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Marver::StoryFinder do
|
4
|
+
describe '#find' do
|
5
|
+
|
6
|
+
before :each do
|
7
|
+
Time.stub_chain(:now, :to_i, :to_s).and_return "1"
|
8
|
+
stub_get("http://gateway.marvel.com/v1/public/stories?apikey=pub_key&hash=3d4ce88a477c7e4a5accbf6cd2c8b819&name=Cover%20%23892&ts=1").to_return(:body => fixture('story.json'), :headers => {:content_type => 'application/json; charset=utf-8'})
|
9
|
+
|
10
|
+
Marver.configure do |config|
|
11
|
+
config.public_key = 'pub_key'
|
12
|
+
config.private_key = 'priv_key'
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
it 'builds a Story out of the received json' do
|
17
|
+
expect(Marver::StoryFinder.find({ name: 'Cover #892' })).to be_kind_of(Marver::Story)
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: marver
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.5
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ile Eftimov
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-
|
11
|
+
date: 2014-07-01 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -94,7 +94,7 @@ dependencies:
|
|
94
94
|
- - '>='
|
95
95
|
- !ruby/object:Gem::Version
|
96
96
|
version: '0'
|
97
|
-
description: Marver
|
97
|
+
description: Marver is a gem that provides a wrapper to Marvel's API
|
98
98
|
email:
|
99
99
|
- ileeftimov@gmail.com
|
100
100
|
executables: []
|
@@ -104,8 +104,10 @@ files:
|
|
104
104
|
- .gitignore
|
105
105
|
- .rspec
|
106
106
|
- .ruby-version
|
107
|
+
- .travis.yml
|
107
108
|
- Gemfile
|
108
109
|
- Gemfile.lock
|
110
|
+
- Guardfile
|
109
111
|
- LICENSE
|
110
112
|
- README.md
|
111
113
|
- Rakefile
|
@@ -141,6 +143,10 @@ files:
|
|
141
143
|
- lib/marver/entities/text_object.rb
|
142
144
|
- lib/marver/entities/url.rb
|
143
145
|
- lib/marver/finders/character_finder.rb
|
146
|
+
- lib/marver/finders/comic_finder.rb
|
147
|
+
- lib/marver/finders/event_finder.rb
|
148
|
+
- lib/marver/finders/serie_finder.rb
|
149
|
+
- lib/marver/finders/story_finder.rb
|
144
150
|
- lib/marver/helpers/string_helper.rb
|
145
151
|
- lib/marver/version.rb
|
146
152
|
- marver.gemspec
|
@@ -176,8 +182,12 @@ files:
|
|
176
182
|
- spec/marver/entities/text_object_spec.rb
|
177
183
|
- spec/marver/entities/url_spec.rb
|
178
184
|
- spec/marver/finders/character_finder_spec.rb
|
185
|
+
- spec/marver/finders/comic_finder_spec.rb
|
186
|
+
- spec/marver/finders/event_finder_spec.rb
|
187
|
+
- spec/marver/finders/serie_finder_spec.rb
|
188
|
+
- spec/marver/finders/story_finder_spec.rb
|
179
189
|
- spec/spec_helper.rb
|
180
|
-
homepage:
|
190
|
+
homepage: http://github.com/fteem/marver
|
181
191
|
licenses:
|
182
192
|
- MIT
|
183
193
|
metadata: {}
|
@@ -200,7 +210,7 @@ rubyforge_project:
|
|
200
210
|
rubygems_version: 2.0.14
|
201
211
|
signing_key:
|
202
212
|
specification_version: 4
|
203
|
-
summary: Marver, Marvel's API
|
213
|
+
summary: Marver, gem for Marvel's API
|
204
214
|
test_files:
|
205
215
|
- spec/fixtures/character.json
|
206
216
|
- spec/fixtures/comic.json
|
@@ -234,4 +244,8 @@ test_files:
|
|
234
244
|
- spec/marver/entities/text_object_spec.rb
|
235
245
|
- spec/marver/entities/url_spec.rb
|
236
246
|
- spec/marver/finders/character_finder_spec.rb
|
247
|
+
- spec/marver/finders/comic_finder_spec.rb
|
248
|
+
- spec/marver/finders/event_finder_spec.rb
|
249
|
+
- spec/marver/finders/serie_finder_spec.rb
|
250
|
+
- spec/marver/finders/story_finder_spec.rb
|
237
251
|
- spec/spec_helper.rb
|