marver 0.0.4 → 0.0.5
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 +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
|