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 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