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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: fd4c0d07e5c64d82c439ce0e0dfa39fde695ec10
4
- data.tar.gz: eeccacdfd8ae9c5494d4f9cb5e8d5ff967faa338
3
+ metadata.gz: 6999bcd56389247095ef5f3f194a5cc5ce02ad46
4
+ data.tar.gz: 93ae15fd9d34643f56fafc7b5aadea0ae07e2634
5
5
  SHA512:
6
- metadata.gz: 8ba5b9c60dfc3c054e6e6f1df6456bbd0910341737948e2d3ee158e48e9d65a67274b64588187f00ac407a9946cafd9b2c7c1fab0a460e3b35f1986a100f9fe0
7
- data.tar.gz: ef5b9b289ebb6bd66fd1f4372ad8a1f376d4197eaf3c807b4854a9d475e05e120f5697337d577267094cf2290f9597797225e95758145e26270d2be28393e05f
6
+ metadata.gz: 053b0c99bcc8510b4ceb2d995d9253e5da63efd09c08afd12024d600d918087845deff7ffc7c50685dcbcb87e61128a9e47f181855ed5de660e6d713130f6325
7
+ data.tar.gz: a4bef621f42b2ca56fbae472ca167c586c7434cd929710443fc477d663256d3cf064bbae05eadddee8d59fac114e8ec7cf42eea7a88abb87e39ce692db1d80a4
@@ -0,0 +1,4 @@
1
+ language: ruby
2
+ rvm:
3
+ - 1.9.3
4
+ - 2.0.0
data/Gemfile CHANGED
@@ -2,3 +2,8 @@ source "https://rubygems.org/"
2
2
 
3
3
  # Specify your gem's dependencies in forecastr.gemspec
4
4
  gemspec
5
+
6
+ group :development, :test do
7
+ gem 'guard'
8
+ gem 'guard-rspec'
9
+ end
@@ -0,0 +1,9 @@
1
+ # A sample Guardfile
2
+ # More info at https://github.com/guard/guard#readme
3
+
4
+ guard :rspec do
5
+ watch(%r{^spec/.+_spec\.rb$})
6
+ watch(%r{^lib/(.+)\.rb$}) { |m| "spec/lib/#{m[1]}_spec.rb" }
7
+ watch('spec/spec_helper.rb') { "spec" }
8
+ end
9
+
data/README.md CHANGED
@@ -1,8 +1,8 @@
1
1
  Marver
2
2
  ======
3
3
 
4
- Marver is (going to be an) easy to use Ruby gem for [Marvel's API](http://developer.marvel.com/).
5
- It is **still VERY MUCH in development** and it doesn't really do much right now. Also, any kind of contribution is **welcomed**.
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' }) # Returns Hulk
31
- client.serie.find({ name: 'The Avengers' }) # Returns The Avengers
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
- * CharacterFinder (in progress)
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 :)
@@ -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'
@@ -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(response)
15
- if response.kind_of?(Array)
16
- response.collect do |comic|
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(response.results)
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 = Date.parse(@json['start'])
29
- @end = Date.parse(@json['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
@@ -14,7 +14,7 @@ module Marver
14
14
  def full
15
15
  response = Marver::API::Response.new(RestClient.get(@resource_uri))
16
16
  data = Marver::DataContainer.new(response)
17
- Marver::Comic.build(data)
17
+ Marver::Comic.build(data.results)
18
18
  end
19
19
  end
20
20
  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
@@ -1,3 +1,3 @@
1
1
  module Marver
2
- VERSION = '0.0.4'
2
+ VERSION = '0.0.5'
3
3
  end
@@ -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 gem}
12
- spec.description = %q{Marver, Marvel's API gem}
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")
@@ -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
- let(:json) { JSON.parse(fixture('comic.json').read)['data']['results'].first }
5
- let(:comic) { Marver::Comic.new(json) }
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 Date
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 Date
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
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-05-12 00:00:00.000000000 Z
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, Marvel's API gem
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 gem
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