comic_vine 0.0.5 → 0.0.6
Sign up to get free protection for your applications and to get access to all the features.
- data/.rspec +2 -0
- data/README.md +7 -2
- data/Rakefile +6 -0
- data/changelog +2 -0
- data/comic_vine.gemspec +1 -0
- data/lib/comic_vine/cv_object.rb +6 -5
- data/lib/comic_vine/version.rb +1 -1
- data/lib/comic_vine.rb +68 -60
- data/spec/comic_vine_spec.rb +11 -0
- data/spec/cv_object_spec.rb +10 -0
- data/spec/spec_helper.rb +14 -0
- metadata +23 -5
data/.rspec
ADDED
data/README.md
CHANGED
@@ -61,9 +61,13 @@ video_types
|
|
61
61
|
volumes
|
62
62
|
|
63
63
|
|
64
|
-
Calls to plurals return a CVObjectList
|
64
|
+
Calls to plurals return a CVObjectList, which contains the result array as well as the values from the return (total_count, offset, limit, resource).
|
65
65
|
|
66
66
|
chars = ComicVine::API.characters
|
67
|
+
|
68
|
+
CVObjectLists include enumerable, so they can be looped.
|
69
|
+
|
70
|
+
chars.each do |c|
|
67
71
|
|
68
72
|
Pagination will return nil if you are at either end of the list, otherwise it will update the object allowing for looping
|
69
73
|
|
@@ -86,10 +90,11 @@ Pass in options as a hash
|
|
86
90
|
|
87
91
|
ComicVine::API.characters {:limit=>5, :offset=>10}
|
88
92
|
|
89
|
-
There are
|
93
|
+
There are associations. Call the association by the key name, prefaced by get_ and the gem will return either a CVList or a CVObject from the API.
|
90
94
|
|
91
95
|
volume = ComicVine::API.volume 766
|
92
96
|
issues = volume.get_issues
|
97
|
+
chars = volume.get_character_credits
|
93
98
|
|
94
99
|
Error responses from the API will raise a CVError with the error message
|
95
100
|
|
data/Rakefile
CHANGED
data/changelog
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
0.0.6 - Expose the helper methods, add get_details_by_url, allow get_* for ANY of the resource items returned in the body
|
2
|
+
|
1
3
|
0.0.5 - Behind the scenes cleanup. Change gem to work as a pure ruby implementation. API.key is now manually set as opposed to reading from a config file. Removed generator and railties.
|
2
4
|
|
3
5
|
0.0.4 - Add CVObjectList to carry count vars from result. Add simple pagination. Include enumerable in the list classes
|
data/comic_vine.gemspec
CHANGED
data/lib/comic_vine/cv_object.rb
CHANGED
@@ -11,15 +11,16 @@ module ComicVine
|
|
11
11
|
if method_sym.to_s =~ /^get_(.*)$/
|
12
12
|
key = method_sym.to_s.sub "get_", ""
|
13
13
|
if instance_variable_defined?("@#{key}")
|
14
|
-
|
14
|
+
item = instance_variable_get("@#{key}")
|
15
|
+
if item.kind_of?(Array) && item.first.key?("api_detail_url")
|
15
16
|
res = []
|
16
|
-
|
17
|
-
res << ComicVine::API.
|
17
|
+
item.each do |i|
|
18
|
+
res << ComicVine::API.get_details_by_url(i["api_detail_url"])
|
18
19
|
end
|
19
20
|
return res
|
20
21
|
end
|
21
|
-
if
|
22
|
-
return ComicVine::API.
|
22
|
+
if item.kind_of?(Hash) && item.key?("api_detail_url")
|
23
|
+
return ComicVine::API.get_details_by_url(item["api_detail_url"])
|
23
24
|
end
|
24
25
|
else
|
25
26
|
super
|
data/lib/comic_vine/version.rb
CHANGED
data/lib/comic_vine.rb
CHANGED
@@ -15,78 +15,86 @@ module ComicVine
|
|
15
15
|
|
16
16
|
@@API_BASE_URL = "http://api.comicvine.com/"
|
17
17
|
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
18
|
+
class << self
|
19
|
+
def search res, query, opts={}
|
20
|
+
resp = hit_api(build_url("search", opts)+"&resources=#{res}&query=#{query}")
|
21
|
+
ComicVine::CVSearchList.new(resp, res, query)
|
22
|
+
end
|
22
23
|
|
23
|
-
|
24
|
-
|
25
|
-
|
24
|
+
def find_list type
|
25
|
+
types.find { |t| t['list_resource_name'] == type }
|
26
|
+
end
|
26
27
|
|
27
|
-
|
28
|
-
|
29
|
-
|
28
|
+
def find_detail type
|
29
|
+
types.find { |t| t['detail_resource_name'] == type }
|
30
|
+
end
|
30
31
|
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
32
|
+
def method_missing(method_sym, *arguments, &block)
|
33
|
+
if find_list(method_sym.to_s)
|
34
|
+
get_list method_sym.to_s, arguments.first
|
35
|
+
elsif find_detail(method_sym.to_s)
|
36
|
+
get_details method_sym.to_s, *arguments
|
37
|
+
elsif
|
38
|
+
super
|
39
|
+
end
|
38
40
|
end
|
39
|
-
end
|
40
41
|
|
41
|
-
|
42
|
-
|
43
|
-
|
42
|
+
def key
|
43
|
+
@@key
|
44
|
+
end
|
44
45
|
|
45
|
-
|
46
|
-
|
47
|
-
|
46
|
+
def key= key
|
47
|
+
@@key = key
|
48
|
+
end
|
48
49
|
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
50
|
+
def types
|
51
|
+
if @@types.nil? || (@@last_type_check + (4 *60 *60)) > Time.now
|
52
|
+
@@last_type_check = Time.now
|
53
|
+
@@types = hit_api(build_base_url('types'))['results']
|
54
|
+
end
|
55
|
+
@@types
|
56
|
+
end
|
57
|
+
|
58
|
+
def get_list list_type, opts=nil
|
59
|
+
resp = hit_api(build_base_url(list_type), build_query(opts))
|
60
|
+
ComicVine::CVObjectList.new(resp, list_type)
|
53
61
|
end
|
54
|
-
@@types
|
55
|
-
end
|
56
62
|
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
def self.hit_api url
|
68
|
-
uri = URI.parse(url)
|
69
|
-
resp = Net::HTTP.get(uri)
|
70
|
-
presp = JSON.parse(resp)
|
71
|
-
raise CVError, presp['error'] unless presp['status_code'] == 1
|
72
|
-
presp
|
73
|
-
end
|
63
|
+
def get_details item_type, id, opts=nil
|
64
|
+
resp = hit_api(build_base_url("#{item_type}/#{id}"), build_query(opts))
|
65
|
+
ComicVine::CVObject.new(resp['results'])
|
66
|
+
end
|
67
|
+
|
68
|
+
def get_details_by_url url
|
69
|
+
resp = hit_api(url)
|
70
|
+
ComicVine::CVObject.new(resp['results'])
|
71
|
+
end
|
74
72
|
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
73
|
+
private
|
74
|
+
def hit_api base_url, query=""
|
75
|
+
url = base_url<<"?format=json&api_key=#{@@key}"<<query
|
76
|
+
uri = URI.parse(url)
|
77
|
+
resp = Net::HTTP.get(uri)
|
78
|
+
presp = JSON.parse(resp)
|
79
|
+
raise CVError, presp['error'] unless presp['status_code'] == 1
|
80
|
+
presp
|
81
|
+
end
|
82
|
+
|
83
|
+
def build_base_url action
|
84
|
+
@@API_BASE_URL+action+"/"
|
85
|
+
end
|
86
|
+
|
87
|
+
def build_query opts=nil
|
88
|
+
query = ''
|
89
|
+
if !opts.nil? && !opts.empty?
|
90
|
+
opts.each do |k,v|
|
91
|
+
query << "&#{k.to_s}=#{v}"
|
92
|
+
end
|
93
|
+
end
|
94
|
+
query
|
80
95
|
end
|
81
|
-
end
|
82
|
-
@@API_BASE_URL+action+"/?format=json&api_key=#{@@key}#{query}"
|
83
|
-
end
|
84
96
|
|
85
|
-
|
86
|
-
private_class_method :get_list
|
87
|
-
private_class_method :get_details
|
88
|
-
private_class_method :hit_api
|
89
|
-
private_class_method :build_url
|
97
|
+
end
|
90
98
|
end
|
91
99
|
end
|
92
100
|
|
@@ -0,0 +1,11 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
describe ComicVine do
|
3
|
+
it "should allow the user to set the API key" do
|
4
|
+
ComicVine::API.key = "some_api_key"
|
5
|
+
ComicVine::API.key.should == "some_api_key"
|
6
|
+
end
|
7
|
+
|
8
|
+
it "should raise a ComicVine::CVError on an API call without the key set" do
|
9
|
+
expect{ ComicVine::API.issues }.to raise_error(ComicVine::CVError)
|
10
|
+
end
|
11
|
+
end
|
@@ -0,0 +1,10 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
describe ComicVine::CVObject do
|
3
|
+
it "should inialize instance variables from a hash" do
|
4
|
+
h = {'something' => 'something', 'blah' => 'blah', 'number' => 100}
|
5
|
+
cvo = ComicVine::CVObject.new h
|
6
|
+
cvo.something.should == 'something'
|
7
|
+
cvo.blah.should == 'blah'
|
8
|
+
cvo.number.should == 100
|
9
|
+
end
|
10
|
+
end
|
data/spec/spec_helper.rb
ADDED
@@ -0,0 +1,14 @@
|
|
1
|
+
# This file was generated by the `rspec --init` command. Conventionally, all
|
2
|
+
# specs live under a `spec` directory, which RSpec adds to the `$LOAD_PATH`.
|
3
|
+
# Require this file using `require "spec_helper.rb"` to ensure that it is only
|
4
|
+
# loaded once.
|
5
|
+
#
|
6
|
+
# See http://rubydoc.info/gems/rspec-core/RSpec/Core/Configuration
|
7
|
+
|
8
|
+
require 'comic_vine'
|
9
|
+
|
10
|
+
RSpec.configure do |config|
|
11
|
+
config.treat_symbols_as_metadata_keys_with_true_values = true
|
12
|
+
config.run_all_when_everything_filtered = true
|
13
|
+
config.filter_run :focus
|
14
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: comic_vine
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.6
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,11 +9,11 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-04-
|
12
|
+
date: 2012-04-18 00:00:00.000000000Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: json
|
16
|
-
requirement: &
|
16
|
+
requirement: &70331646007340 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ! '>='
|
@@ -21,7 +21,18 @@ dependencies:
|
|
21
21
|
version: '0'
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *70331646007340
|
25
|
+
- !ruby/object:Gem::Dependency
|
26
|
+
name: rspec
|
27
|
+
requirement: &70331646006800 !ruby/object:Gem::Requirement
|
28
|
+
none: false
|
29
|
+
requirements:
|
30
|
+
- - ! '>='
|
31
|
+
- !ruby/object:Gem::Version
|
32
|
+
version: 2.0.0
|
33
|
+
type: :development
|
34
|
+
prerelease: false
|
35
|
+
version_requirements: *70331646006800
|
25
36
|
description: Simple api interface to Comic Vine. Allows for searches and returning
|
26
37
|
specific information on resources.
|
27
38
|
email: jakanapes@gmail.com
|
@@ -30,6 +41,7 @@ extensions: []
|
|
30
41
|
extra_rdoc_files: []
|
31
42
|
files:
|
32
43
|
- .gitignore
|
44
|
+
- .rspec
|
33
45
|
- Gemfile
|
34
46
|
- LICENSE
|
35
47
|
- README.md
|
@@ -40,6 +52,9 @@ files:
|
|
40
52
|
- lib/comic_vine/cv_list.rb
|
41
53
|
- lib/comic_vine/cv_object.rb
|
42
54
|
- lib/comic_vine/version.rb
|
55
|
+
- spec/comic_vine_spec.rb
|
56
|
+
- spec/cv_object_spec.rb
|
57
|
+
- spec/spec_helper.rb
|
43
58
|
homepage: https://github.com/Jakanapes/ComicVine
|
44
59
|
licenses: []
|
45
60
|
post_install_message:
|
@@ -64,4 +79,7 @@ rubygems_version: 1.8.10
|
|
64
79
|
signing_key:
|
65
80
|
specification_version: 3
|
66
81
|
summary: Interface to ComicVine API
|
67
|
-
test_files:
|
82
|
+
test_files:
|
83
|
+
- spec/comic_vine_spec.rb
|
84
|
+
- spec/cv_object_spec.rb
|
85
|
+
- spec/spec_helper.rb
|