comicvine 0.1.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- checksums.yaml.gz.sig +0 -0
- data.tar.gz.sig +0 -0
- data/.gitignore +9 -0
- data/.rspec +2 -0
- data/.travis.yml +5 -0
- data/Gemfile +4 -0
- data/LICENSE.txt +21 -0
- data/README.md +86 -0
- data/Rakefile +27 -0
- data/bin/console +14 -0
- data/bin/setup +8 -0
- data/certs/homans.pem +21 -0
- data/checksum/comicvine-0.1.0.gem.sha512 +1 -0
- data/comicvine.gemspec +36 -0
- data/lib/comicvine.rb +301 -0
- data/lib/comicvine/list.rb +99 -0
- data/lib/comicvine/modules.rb +194 -0
- data/lib/comicvine/resource.rb +53 -0
- data/lib/comicvine/version.rb +4 -0
- metadata +206 -0
- metadata.gz.sig +0 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: e57f06754f14d9c6e34e4c7bb96c9dfd7f3b5a05
|
4
|
+
data.tar.gz: 3b7e8ee97f5e4201482545f1e55746376a24c3c0
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 7ae0274f1a68527ba65c43344de16bb918d392041ea19ef79f678bd24251d9445cddf6408b974959a148fa80bfdc29607ed48738285ea6fde82261c2b178abd8
|
7
|
+
data.tar.gz: 28ba70a48ca692f6d17ad15aeade62684a98f3f713bc1dcf40fc0416d5f8e24e81c5417b59edb6bb19a8e34075e20839e9958e5a3e88a6ec63921909d5269d4a
|
checksums.yaml.gz.sig
ADDED
Binary file
|
data.tar.gz.sig
ADDED
Binary file
|
data/.gitignore
ADDED
data/.rspec
ADDED
data/.travis.yml
ADDED
data/Gemfile
ADDED
data/LICENSE.txt
ADDED
@@ -0,0 +1,21 @@
|
|
1
|
+
The MIT License (MIT)
|
2
|
+
|
3
|
+
Copyright (c) 2016 Holden Omans
|
4
|
+
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
7
|
+
in the Software without restriction, including without limitation the rights
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
10
|
+
furnished to do so, subject to the following conditions:
|
11
|
+
|
12
|
+
The above copyright notice and this permission notice shall be included in
|
13
|
+
all copies or substantial portions of the Software.
|
14
|
+
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
21
|
+
THE SOFTWARE.
|
data/README.md
ADDED
@@ -0,0 +1,86 @@
|
|
1
|
+
# Comicvine
|
2
|
+
|
3
|
+
A ruby gem to interface with the [ComicVine API](http://comicvine.gamespot.com/api/).
|
4
|
+
|
5
|
+
Some code was built off of work by [Patrick Sharp](https://github.com/Jakanapes), you can find it [here](https://github.com/Jakanapes/ComicVine)
|
6
|
+
|
7
|
+
## Installation
|
8
|
+
|
9
|
+
Add this line to your application's Gemfile:
|
10
|
+
|
11
|
+
```ruby
|
12
|
+
gem 'comicvine'
|
13
|
+
```
|
14
|
+
|
15
|
+
And then execute:
|
16
|
+
|
17
|
+
$ bundle
|
18
|
+
|
19
|
+
Or install it yourself as:
|
20
|
+
|
21
|
+
$ gem install comicvine
|
22
|
+
|
23
|
+
Then set a environmental variable named `CV_API_KEY` to your ComicVine API key **(optional)**
|
24
|
+
|
25
|
+
$ export CV_API_KEY=18357f40df87fb4a4aa6bbbb27cd8ad1deb08d3e
|
26
|
+
|
27
|
+
## Usage
|
28
|
+
|
29
|
+
If you did not set the env variable `CV_API_KEY` then you need to set the class `api_key` before using. If you did set the env variable you do not need to set this.
|
30
|
+
|
31
|
+
```ruby
|
32
|
+
resp = ComicVine::API.api_key = '18357f40df87fb4a4aa6bbbb27cd8ad1deb08d3e'
|
33
|
+
```
|
34
|
+
|
35
|
+
Gather response from a url:
|
36
|
+
|
37
|
+
```ruby
|
38
|
+
resp = ComicVine::API.get_details_by_url('http://comicvine.gamespot.com/api/issue/4000-371103')
|
39
|
+
```
|
40
|
+
|
41
|
+
You can also fetch lists of resources while passing API options: (see [ComicVine API Docs](http://comicvine.gamespot.com/api/documentation) for optional values)
|
42
|
+
|
43
|
+
```ruby
|
44
|
+
vol_list = ComicVine::API.get_list(:volumes, limit: 50)
|
45
|
+
```
|
46
|
+
|
47
|
+
You can fetch a more specific result by id:
|
48
|
+
|
49
|
+
```ruby
|
50
|
+
issue = ComicVine::API.get_details(:issue, '371103')
|
51
|
+
```
|
52
|
+
|
53
|
+
Performing a search:
|
54
|
+
|
55
|
+
```ruby
|
56
|
+
results = ComicVine::API.search(:volume, 'Avengers ', limit: 5)
|
57
|
+
|
58
|
+
# Go to next 5 results
|
59
|
+
results.next_page
|
60
|
+
|
61
|
+
# Go to last 5 results
|
62
|
+
results.prev_page
|
63
|
+
```
|
64
|
+
|
65
|
+
Create also create an `ComicVine::API` instance using your API key:
|
66
|
+
|
67
|
+
```ruby
|
68
|
+
api = ComicVine::API.new('18357f40df87fb4a4aa6bbbb27cd8ad1deb08d3e')
|
69
|
+
```
|
70
|
+
|
71
|
+
You can gather more detailed API information at http://rubydoc.info/gems/comicvine
|
72
|
+
|
73
|
+
## Development
|
74
|
+
|
75
|
+
After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake test` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
|
76
|
+
|
77
|
+
To install this gem onto your local machine, run `gem install comicvine`. Or you can download it from https://rubygems.org/gems/comicvine
|
78
|
+
|
79
|
+
## Contributing
|
80
|
+
|
81
|
+
Bug reports and pull requests are welcome on GitHub at https://github.com/kalinon/ruby-comicvine-api.
|
82
|
+
|
83
|
+
## License
|
84
|
+
|
85
|
+
The gem is available as open source under the terms of the [MIT License](http://opensource.org/licenses/MIT).
|
86
|
+
|
data/Rakefile
ADDED
@@ -0,0 +1,27 @@
|
|
1
|
+
require 'bundler/gem_tasks'
|
2
|
+
require 'rake/testtask'
|
3
|
+
require 'yard'
|
4
|
+
|
5
|
+
# Test tasks
|
6
|
+
Rake::TestTask.new(:test) do |t|
|
7
|
+
t.libs << 'test'
|
8
|
+
t.libs << 'lib'
|
9
|
+
t.test_files = FileList['test/**/*_test.rb']
|
10
|
+
end
|
11
|
+
|
12
|
+
YARD::Rake::YardocTask.new do |t|
|
13
|
+
t.files = ['lib/**/*.rb'] # optional
|
14
|
+
t.options = %w{--private} # optional
|
15
|
+
t.stats_options = ['--list-undoc'] # optional
|
16
|
+
end
|
17
|
+
|
18
|
+
# Default task
|
19
|
+
task :default => :test
|
20
|
+
|
21
|
+
task :gen_checksum do
|
22
|
+
require 'digest/sha2'
|
23
|
+
built_gem_path = 'pkg/comicvine-'+ComicVine::VERSION+'.gem'
|
24
|
+
checksum = Digest::SHA512.new.hexdigest(File.read(built_gem_path))
|
25
|
+
checksum_path = 'checksum/comicvine-'+ComicVine::VERSION+'.gem.sha512'
|
26
|
+
File.open(checksum_path, 'w' ) {|f| f.write(checksum) }
|
27
|
+
end
|
data/bin/console
ADDED
@@ -0,0 +1,14 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
require 'bundler/setup'
|
4
|
+
require 'comicvine'
|
5
|
+
|
6
|
+
# You can add fixtures and/or initialization code here to make experimenting
|
7
|
+
# with your gem easier. You can also use a different console, if you like.
|
8
|
+
|
9
|
+
# (If you use this, don't forget to add pry to your Gemfile!)
|
10
|
+
# require "pry"
|
11
|
+
# Pry.start
|
12
|
+
|
13
|
+
require 'irb'
|
14
|
+
IRB.start
|
data/bin/setup
ADDED
data/certs/homans.pem
ADDED
@@ -0,0 +1,21 @@
|
|
1
|
+
-----BEGIN CERTIFICATE-----
|
2
|
+
MIIDgDCCAmigAwIBAgIBATANBgkqhkiG9w0BAQUFADBDMRUwEwYDVQQDDAxob2xk
|
3
|
+
ZW4ub21hbnMxFTATBgoJkiaJk/IsZAEZFgVnbWFpbDETMBEGCgmSJomT8ixkARkW
|
4
|
+
A2NvbTAeFw0xNjExMDkxNTU5MTdaFw0xNzExMDkxNTU5MTdaMEMxFTATBgNVBAMM
|
5
|
+
DGhvbGRlbi5vbWFuczEVMBMGCgmSJomT8ixkARkWBWdtYWlsMRMwEQYKCZImiZPy
|
6
|
+
LGQBGRYDY29tMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA2V7yrTuO
|
7
|
+
4FNzWlhQL2R8Vdx5LKX/oewZ7bKh/2GJcR5R7mowdqejlfzJb7abtmYsQfyvwNfy
|
8
|
+
NrKneghJ/rLflQ1NrlehYSYLlBFTVuymPvejG+EH5C2/RJqhm2zyfjkisasqhWk8
|
9
|
+
Bq6IUPX1l8C78Kkd6t3QR/n3zr1Ip25NicpJ2flBMHPg3IV9qaNXywkCzutkEMoW
|
10
|
+
FuHdHMN2cDMUnhM9qGOK7nvRk7rkP/yJAp+sf2nv+C99s5CMNuvnGeSgnX7IMcRV
|
11
|
+
Ks2FrSvqKDj24Xf5kHdlcpDrS1VcFsAkIT6bVBm19KO8pFvZkDJE76Yshy80FRpQ
|
12
|
+
bijjrYQhYXiM4QIDAQABo38wfTAJBgNVHRMEAjAAMAsGA1UdDwQEAwIEsDAdBgNV
|
13
|
+
HQ4EFgQUbbbHhJ0Z4S/c5FcDSqEVx7Yk1agwIQYDVR0RBBowGIEWaG9sZGVuLm9t
|
14
|
+
YW5zQGdtYWlsLmNvbTAhBgNVHRIEGjAYgRZob2xkZW4ub21hbnNAZ21haWwuY29t
|
15
|
+
MA0GCSqGSIb3DQEBBQUAA4IBAQCoC/7FnCsRFIV/rwAJRXY3Ao0qdbnksPrqUhP0
|
16
|
+
7A8m8PccIDuUspq/WtkhzSMLZvzurlXEw1qdLtRLS2LnftQQuo5YPz6PQj4XAx8w
|
17
|
+
yF48j5e3XvUZJiMQ+cIsXPnjes13JgnP/KOfILgfIz9ad0pGMMUCTLYahu+fXqxE
|
18
|
+
if+otWjB2is7MBxd+krcr8vCJ4E46a8H3zyBN/tSgGw4RwkxHnXekTJvMy4skcSB
|
19
|
+
VpDNqh/BlGMQ0mqAEuBFZFSNaroph6JLUz1ykVvQENOQLThxAjolK7SAUrdoBDOc
|
20
|
+
fXEVP1s+hpJB6IEU8/LW016TU8WpnA+MHGfJRtkrUm/cEsWU
|
21
|
+
-----END CERTIFICATE-----
|
@@ -0,0 +1 @@
|
|
1
|
+
98a260c7e46e2166f400b41fc88d9da43d2f75c42712fd1f137734d20f8cebdeb101b735edb005f94cf67878d7f44c7da686775229edbc2751d0468581feed7c
|
data/comicvine.gemspec
ADDED
@@ -0,0 +1,36 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
lib = File.expand_path('../lib', __FILE__)
|
3
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
|
+
require 'comicvine/version'
|
5
|
+
|
6
|
+
Gem::Specification.new do |spec|
|
7
|
+
spec.name = 'comicvine'
|
8
|
+
spec.version = ComicVine::VERSION
|
9
|
+
spec.authors = ['Holden Omans']
|
10
|
+
spec.email = ['holden.omans@gmail.com']
|
11
|
+
|
12
|
+
spec.summary = %q{Api interface to ComicVine. Allows for searches and returning specific information on resources.}
|
13
|
+
spec.description = %q{Interface to ComicVine API}
|
14
|
+
spec.homepage = 'https://github.com/kalinon/ruby-comicvine-api'
|
15
|
+
spec.license = 'MIT'
|
16
|
+
|
17
|
+
spec.files = `git ls-files -z`.split("\x0").reject do |f|
|
18
|
+
f.match(%r{^(test|spec|features)/})
|
19
|
+
end
|
20
|
+
spec.bindir = 'exe'
|
21
|
+
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
22
|
+
spec.require_paths = ['lib']
|
23
|
+
|
24
|
+
spec.cert_chain = ['certs/homans.pem']
|
25
|
+
spec.signing_key = File.expand_path('~/.ssh/gem-private_key.pem') if $0 =~ /gem\z/
|
26
|
+
|
27
|
+
spec.add_development_dependency 'bundler', '~> 1.13'
|
28
|
+
spec.add_development_dependency 'rake', '~> 10.0'
|
29
|
+
spec.add_development_dependency 'minitest', '~> 5.9', '>= 5.9.1'
|
30
|
+
spec.add_development_dependency 'minitest-reporters', '~> 1.1', '>= 1.1.12'
|
31
|
+
spec.add_development_dependency 'rdoc', '~> 4.2', '>= 4.2.1'
|
32
|
+
spec.add_development_dependency 'yard', '~> 0.9', '>= 0.9.5'
|
33
|
+
|
34
|
+
# Dependencies
|
35
|
+
spec.add_dependency 'rest-client', '~> 2.0'
|
36
|
+
end
|
data/lib/comicvine.rb
ADDED
@@ -0,0 +1,301 @@
|
|
1
|
+
require 'comicvine/version'
|
2
|
+
require 'comicvine/list'
|
3
|
+
require 'comicvine/resource'
|
4
|
+
require 'rest-client'
|
5
|
+
require 'cgi'
|
6
|
+
require 'json'
|
7
|
+
|
8
|
+
## Yard Doc generation stuff
|
9
|
+
# @!macro [new] raise.ResourceNotSupportedError
|
10
|
+
# @raise [ResourceNotSupportedError] indicating the resource requested is not supported
|
11
|
+
# @!macro [new] raise.ComicVineAPIError
|
12
|
+
# @raise [ComicVineAPIError] indicating the api request code recived
|
13
|
+
|
14
|
+
##
|
15
|
+
# Base ComicVine module, holds default api variables
|
16
|
+
#
|
17
|
+
module ComicVine
|
18
|
+
# ComicVine api version (1.0)
|
19
|
+
API_VERSION = '1.0'
|
20
|
+
|
21
|
+
# Base ComicVine url
|
22
|
+
API_URL = 'http://comicvine.gamespot.com/api'
|
23
|
+
|
24
|
+
# ComicVine format (json)
|
25
|
+
API_FORMAT = 'json'
|
26
|
+
|
27
|
+
# Array of available resources
|
28
|
+
API_RESOURCES = [:character, :characters, :chat, :chats, :concept, :concepts, :episode, :episodes, :issue, :issues,
|
29
|
+
:location, :locations, :movie, :movies, :object, :objects, :origin, :origins, :person, :people,
|
30
|
+
:power, :powers, :promo, :promos, :publisher, :publishers, :series, :series_list, :search, :story_arc,
|
31
|
+
:story_arcs, :team, :teams, :types, :video, :videos, :video_type, :video_types, :video_category,
|
32
|
+
:video_categories, :volume, :volumes]
|
33
|
+
##
|
34
|
+
# Class to interact and query the ComicVine API
|
35
|
+
# @since 0.1.0
|
36
|
+
class API
|
37
|
+
|
38
|
+
##
|
39
|
+
# Raised when a resource is not implemented on the current API
|
40
|
+
#
|
41
|
+
# Must be included in {ComicVine::API_RESOURCES}
|
42
|
+
#
|
43
|
+
# @since 0.1.0
|
44
|
+
class ResourceNotSupportedError < ScriptError
|
45
|
+
end
|
46
|
+
|
47
|
+
##
|
48
|
+
# Raised when a ComicVine API error is encountered
|
49
|
+
#
|
50
|
+
# @since 0.1.0
|
51
|
+
class ComicVineAPIError < ScriptError
|
52
|
+
end
|
53
|
+
|
54
|
+
# Hash containing ComicVine resource types and corresponding id values
|
55
|
+
@@types = nil
|
56
|
+
# Last time we pulled types from the API
|
57
|
+
@@last_type_check = nil
|
58
|
+
|
59
|
+
# ComicVine API Key. Set to the environmental variable CV_API_KEY by default if present
|
60
|
+
@@api_key = ENV['CV_API_KEY'] || nil
|
61
|
+
|
62
|
+
class << self
|
63
|
+
|
64
|
+
##
|
65
|
+
# @return [ComicVine::API]
|
66
|
+
# @since 0.1.0
|
67
|
+
def new(key)
|
68
|
+
@@api_key=key
|
69
|
+
self
|
70
|
+
end
|
71
|
+
|
72
|
+
##
|
73
|
+
# Returns ComicVine API Key. Set to the environmental variable CV_API_KEY by default if present
|
74
|
+
# @return [String]
|
75
|
+
# @since 0.1.0
|
76
|
+
def api_key
|
77
|
+
@@api_key || ENV['CV_API_KEY']
|
78
|
+
end
|
79
|
+
|
80
|
+
##
|
81
|
+
# Sets the ComicVine API Key. Overrides the environmental variable CV_API_KEY
|
82
|
+
# @param key [String]
|
83
|
+
# @since 0.1.0
|
84
|
+
def api_key=(key)
|
85
|
+
@@api_key = key
|
86
|
+
end
|
87
|
+
|
88
|
+
##
|
89
|
+
# Makes request for the current api version
|
90
|
+
#
|
91
|
+
# @return [String]
|
92
|
+
# @since 0.1.0
|
93
|
+
def get_api_version
|
94
|
+
_make_request(:types)['version'].to_s
|
95
|
+
end
|
96
|
+
|
97
|
+
##
|
98
|
+
# Search ComicVine with the provided information
|
99
|
+
# @example
|
100
|
+
# ComicVine::API.search(:volume, 'Avengers ', limit: 5)
|
101
|
+
#
|
102
|
+
# @param resource [Symbol] The symbol of the resource to query
|
103
|
+
# @param query [String] The string to query
|
104
|
+
# @param params [Hash] optional parameters to pass to CV API
|
105
|
+
# @return [ComicVine::SearchResults]
|
106
|
+
# @since 0.1.0
|
107
|
+
def search(resource, query, **params)
|
108
|
+
options = {
|
109
|
+
resources: resource.to_s,
|
110
|
+
query: CGI::escape(query)
|
111
|
+
}
|
112
|
+
|
113
|
+
options.merge! params
|
114
|
+
|
115
|
+
ComicVine::SearchResults.new(_make_request(:search, options), resource, query)
|
116
|
+
end
|
117
|
+
|
118
|
+
##
|
119
|
+
# Returns comicvine type information
|
120
|
+
#
|
121
|
+
# @return [Hash]
|
122
|
+
# @since 0.1.0
|
123
|
+
def types
|
124
|
+
if @@types.nil? || (@@last_type_check + (4 * 60 * 60)) < Time.now
|
125
|
+
@@last_type_check = Time.now
|
126
|
+
@@types = _make_request(:types)['results']
|
127
|
+
end
|
128
|
+
@@types
|
129
|
+
end
|
130
|
+
|
131
|
+
##
|
132
|
+
# Cycles through type hash to return the +resource+ hash of the matching the detail_resource_name
|
133
|
+
# @example
|
134
|
+
# ComicVine::API.find_detail(:issue) #=> { "detail_resource_name": "issue", "list_resource_name": "issues", "id": 4000 }
|
135
|
+
# @param resource [Symbol] The symbol of the resource to return
|
136
|
+
# @return [Hash]
|
137
|
+
# @since 0.1.0
|
138
|
+
def find_detail(resource)
|
139
|
+
types.find { |t| t['detail_resource_name'] == resource.to_s }
|
140
|
+
end
|
141
|
+
|
142
|
+
##
|
143
|
+
# Cycles through type hash to return the +resource+ hash of the matching the list_resource_name
|
144
|
+
# @example
|
145
|
+
# ComicVine::API.find_list(:issues) #=> { "detail_resource_name": "issue", "list_resource_name": "issues", "id": 4000 }
|
146
|
+
# @param resource [Symbol] The symbol of the resource to return
|
147
|
+
# @return [Hash]
|
148
|
+
# @since 0.1.0
|
149
|
+
def find_list(resource)
|
150
|
+
types.find { |t| t['list_resource_name'] == resource.to_s }
|
151
|
+
end
|
152
|
+
|
153
|
+
##
|
154
|
+
# Fetches provided
|
155
|
+
# @example
|
156
|
+
# ComicVine::API.get_list(:volumes, limit: 50)
|
157
|
+
# @param resource [Symbol] The symbol of the resource to fetch (plural)
|
158
|
+
# @param params [Hash] optional parameters to pass to CV API
|
159
|
+
# @return [ComicVine::ResourceList]
|
160
|
+
# @since 0.1.0
|
161
|
+
def get_list(resource, **params)
|
162
|
+
resp = _make_request(resource, params)
|
163
|
+
ComicVine::ResourceList.new(resp, resource)
|
164
|
+
end
|
165
|
+
|
166
|
+
##
|
167
|
+
# Fetches provided +resource+ with associated +id+
|
168
|
+
# @example
|
169
|
+
# ComicVine::API.get_details(:issue, '371103')
|
170
|
+
# @param resource [Symbol] The symbol of the resource to fetch
|
171
|
+
# @param id [String] The id of the resource you would like to fetch
|
172
|
+
# @param params [Hash] optional parameters to pass to CV API
|
173
|
+
# @return [ComicVine::Resource]
|
174
|
+
# @since 0.1.0
|
175
|
+
def get_details(resource, id, **params)
|
176
|
+
ops_hash = {
|
177
|
+
id: id
|
178
|
+
}
|
179
|
+
ops_hash.merge! params
|
180
|
+
resp = _make_request(resource, ops_hash)
|
181
|
+
ComicVine::Resource.new(resp['results'])
|
182
|
+
end
|
183
|
+
|
184
|
+
##
|
185
|
+
# Will fetch the provided +url+ as a {ComicVine::Resource}
|
186
|
+
# @example
|
187
|
+
# ComicVine::API.get_details_by_url('http://comicvine.gamespot.com/api/issue/4000-371103')
|
188
|
+
# @param url [String]
|
189
|
+
# @return [ComicVine::Resource]
|
190
|
+
def get_details_by_url(url)
|
191
|
+
resp = _make_url_request(url)
|
192
|
+
ComicVine::Resource.new(resp['results'])
|
193
|
+
end
|
194
|
+
|
195
|
+
##
|
196
|
+
# Checks missing method against the resource {@@types types} and passes it to {find_list} or {get_details}
|
197
|
+
def method_missing(method_sym, *arguments, &block)
|
198
|
+
if find_list(method_sym)
|
199
|
+
get_list method_sym, arguments.first
|
200
|
+
elsif find_detail(method_sym)
|
201
|
+
get_details method_sym, *arguments
|
202
|
+
elsif
|
203
|
+
super
|
204
|
+
end
|
205
|
+
end
|
206
|
+
|
207
|
+
private
|
208
|
+
|
209
|
+
##
|
210
|
+
# Builds api url string based on provided +resource+ and optional +id+
|
211
|
+
#
|
212
|
+
# @example Build a url for resource +:issue+ with an id of +371103+
|
213
|
+
# _build_base_url(:issue, '371103') #=> "http://comicvine.gamespot.com/api/issue/4000-371103"
|
214
|
+
# @example Build a url for resource +:issues+
|
215
|
+
# _build_base_url(:issues) #=> "http://comicvine.gamespot.com/api/issues"
|
216
|
+
#
|
217
|
+
# @param resource [Symbol] The symbol of the resource to build the url for
|
218
|
+
# @param id [String] optional id for specific resource requests
|
219
|
+
# @return [String] Full url of the requested resource
|
220
|
+
# @macro raise.ResourceNotSupportedError
|
221
|
+
def _build_base_url(resource, id = nil)
|
222
|
+
if ComicVine::API_RESOURCES.include? resource
|
223
|
+
if !id.nil?
|
224
|
+
API_URL + '/' + resource.to_s + '/' + "#{self.find_detail(resource)['id']}-#{id.to_s}"
|
225
|
+
else
|
226
|
+
API_URL + '/' + resource.to_s
|
227
|
+
end
|
228
|
+
else
|
229
|
+
raise ResourceNotSupportedError, resource.to_s + ' is not a supported resource'
|
230
|
+
end
|
231
|
+
end
|
232
|
+
|
233
|
+
##
|
234
|
+
# Executes api request based on provided +resource+ and +params+
|
235
|
+
#
|
236
|
+
# @example Return 5 results from the +:characters+ resource
|
237
|
+
# _make_request(:characters, limit: 5)
|
238
|
+
#
|
239
|
+
# @param resource [Symbol] The symbol of the resource to fetch
|
240
|
+
# @param params [Hash] The named key value pairs of query parameters
|
241
|
+
# @return [Hash]
|
242
|
+
# @since 0.1.0
|
243
|
+
# @macro raise.ComicVineAPIError
|
244
|
+
# @macro raise.ResourceNotSupportedError
|
245
|
+
def _make_request(resource, **params)
|
246
|
+
_make_url_request(_build_base_url(resource, params[:id] || nil), params)
|
247
|
+
end
|
248
|
+
|
249
|
+
##
|
250
|
+
# Executes api request based on provided +resource+ and +params+
|
251
|
+
#
|
252
|
+
# @example Make a simple request with +limit: 1+
|
253
|
+
# _make_url_request('http://comicvine.gamespot.com/api/issues', limit: 1)
|
254
|
+
#
|
255
|
+
# @param url [String] Request url
|
256
|
+
# @param params [Hash] optional request parameters
|
257
|
+
# @return [Hash]
|
258
|
+
# @since 0.1.0
|
259
|
+
# @macro raise.ComicVineAPIError
|
260
|
+
def _make_url_request(url, **params)
|
261
|
+
# Default options hash
|
262
|
+
options = {
|
263
|
+
params: {
|
264
|
+
api_key: self.api_key,
|
265
|
+
format: ComicVine::API_FORMAT
|
266
|
+
}
|
267
|
+
}
|
268
|
+
|
269
|
+
options[:params].merge! params
|
270
|
+
|
271
|
+
begin
|
272
|
+
# Perform request
|
273
|
+
request = RestClient::Request.execute(
|
274
|
+
method: :get,
|
275
|
+
url: url,
|
276
|
+
timeout: 10,
|
277
|
+
headers: options
|
278
|
+
)
|
279
|
+
#request = RestClient.get(url, options)
|
280
|
+
rescue RestClient::NotFound, RestClient::Exceptions::ReadTimeout => e
|
281
|
+
raise ComicVineAPIError, e.message
|
282
|
+
end
|
283
|
+
|
284
|
+
case request.code
|
285
|
+
when 200
|
286
|
+
req = JSON.parse(request.body)
|
287
|
+
if req['error'].eql?('OK')
|
288
|
+
req
|
289
|
+
else
|
290
|
+
raise ComicVineAPIError, req['error']
|
291
|
+
end
|
292
|
+
when 420
|
293
|
+
raise ComicVineAPIError, 'Recived a '+request.code+' http response: You\'ve been rate limited'
|
294
|
+
else
|
295
|
+
raise ComicVineAPIError, 'Recived a '+request.code+' http response'
|
296
|
+
end
|
297
|
+
end
|
298
|
+
|
299
|
+
end
|
300
|
+
end
|
301
|
+
end
|
@@ -0,0 +1,99 @@
|
|
1
|
+
module ComicVine
|
2
|
+
|
3
|
+
##
|
4
|
+
# Enumerable list for multiple ComicVine results
|
5
|
+
# @since 0.1.0
|
6
|
+
class List
|
7
|
+
include Enumerable
|
8
|
+
|
9
|
+
attr_reader :total_count
|
10
|
+
attr_reader :page_count
|
11
|
+
attr_reader :offset
|
12
|
+
attr_reader :limit
|
13
|
+
attr_reader :cvos
|
14
|
+
|
15
|
+
def initialize(resp)
|
16
|
+
@total_count = resp['number_of_total_results']
|
17
|
+
@page_count = resp['number_of_page_results']
|
18
|
+
@offset = resp['offset']
|
19
|
+
@limit = resp['limit']
|
20
|
+
end
|
21
|
+
|
22
|
+
def each
|
23
|
+
@cvos.each { |c| yield c }
|
24
|
+
end
|
25
|
+
|
26
|
+
def last
|
27
|
+
@cvos.last
|
28
|
+
end
|
29
|
+
|
30
|
+
def page
|
31
|
+
(@offset / @limit) + 1
|
32
|
+
end
|
33
|
+
|
34
|
+
protected
|
35
|
+
|
36
|
+
def update_ivals(new_cvol)
|
37
|
+
@total_count = new_cvol.total_count
|
38
|
+
@offset = new_cvol.offset
|
39
|
+
@limit = new_cvol.limit
|
40
|
+
|
41
|
+
@cvos = new_cvol.cvos
|
42
|
+
end
|
43
|
+
|
44
|
+
end
|
45
|
+
|
46
|
+
##
|
47
|
+
# Class container for multiple ComicVine resources
|
48
|
+
# @since 0.1.0
|
49
|
+
class ResourceList < List
|
50
|
+
attr_reader :resource
|
51
|
+
|
52
|
+
def initialize(resp, resc)
|
53
|
+
super(resp)
|
54
|
+
|
55
|
+
@resource = resc
|
56
|
+
@cvos = resp['results'].map { |r| ComicVine::Resource.new(r) }
|
57
|
+
end
|
58
|
+
|
59
|
+
def next_page
|
60
|
+
return nil if (@offset + @page_count) >= @total_count
|
61
|
+
update_ivals(ComicVine::API.send(@resource, {:limit => @limit, :offset => (@offset + @page_count)}))
|
62
|
+
end
|
63
|
+
|
64
|
+
def prev_page
|
65
|
+
return nil if @offset == 0
|
66
|
+
update_ivals(ComicVine::API.send(@resource, {:limit => @limit, :offset => (@offset - @page_count)}))
|
67
|
+
end
|
68
|
+
end
|
69
|
+
|
70
|
+
##
|
71
|
+
# Class container for ComicVine search results
|
72
|
+
# @since 0.1.0
|
73
|
+
class SearchResults < List
|
74
|
+
attr_reader :resource
|
75
|
+
attr_reader :query
|
76
|
+
|
77
|
+
def initialize(resp, resc, query)
|
78
|
+
super(resp)
|
79
|
+
|
80
|
+
@resource = resc
|
81
|
+
@query = query
|
82
|
+
@cvos = resp['results'].map { |r| ComicVine::Resource.new(r) }
|
83
|
+
end
|
84
|
+
|
85
|
+
##
|
86
|
+
# Moves search to the next offset results
|
87
|
+
def next_page
|
88
|
+
return nil if (@offset + @page_count) >= @total_count
|
89
|
+
update_ivals(ComicVine::API.search(@resource, @query, {:limit => @limit, :page => (((@offset + @page_count) / @limit) + 1)}))
|
90
|
+
end
|
91
|
+
|
92
|
+
##
|
93
|
+
# Moves search to the previous offset results
|
94
|
+
def prev_page
|
95
|
+
return nil if @offset == 0
|
96
|
+
update_ivals(ComicVine::API.search(@resource, @query, {:limit => @limit, :page => (@offset / @limit)}))
|
97
|
+
end
|
98
|
+
end
|
99
|
+
end
|
@@ -0,0 +1,194 @@
|
|
1
|
+
module ComicVine
|
2
|
+
##
|
3
|
+
# Holds the various modules for ComicVine resource attributes
|
4
|
+
# @since 0.1.0
|
5
|
+
module ResourceAttributes
|
6
|
+
|
7
|
+
##
|
8
|
+
# Module to hold character resource attributes
|
9
|
+
# @since 0.1.0
|
10
|
+
module Character
|
11
|
+
attr_accessor :aliases, :api_detail_url, :birth, :character_enemies, :character_friends,
|
12
|
+
:count_of_issue_appearances, :creators, :date_added, :date_last_updated, :deck, :description,
|
13
|
+
:first_appeared_in_issue, :gender, :id, :image, :issue_credits, :issues_died_in, :movies, :name,
|
14
|
+
:origin, :powers, :publisher, :real_name, :site_detail_url, :story_arc_credits, :team_enemies,
|
15
|
+
:team_friends, :teams, :volume_credits
|
16
|
+
end
|
17
|
+
|
18
|
+
##
|
19
|
+
# Module to hold chat resource attributes
|
20
|
+
# @since 0.1.0
|
21
|
+
module Chat
|
22
|
+
attr_accessor :api_detail_url, :channel_name, :deck, :image, :password, :site_detail_url, :title
|
23
|
+
end
|
24
|
+
|
25
|
+
##
|
26
|
+
# Module to hold concept resource attributes
|
27
|
+
# @since 0.1.0
|
28
|
+
module Concept
|
29
|
+
attr_accessor :aliases, :api_detail_url, :count_of_issue_appearances, :date_added, :date_last_updated, :deck,
|
30
|
+
:description, :first_appeared_in_issue, :id, :image, :issue_credits, :movies, :name,
|
31
|
+
:site_detail_url, :start_year, :volume_credits
|
32
|
+
end
|
33
|
+
|
34
|
+
##
|
35
|
+
# Module to hold episode resource attributes
|
36
|
+
# @since 0.1.0
|
37
|
+
module Episode
|
38
|
+
attr_accessor :aliases, :api_detail_url, :character_credits, :characters_died_in, :concept_credits, :air_date,
|
39
|
+
:date_added, :date_last_updated, :deck, :description, :first_appearance_characters,
|
40
|
+
:first_appearance_concepts, :first_appearance_locations, :first_appearance_objects,
|
41
|
+
:first_appearance_storyarcs, :first_appearance_teams, :has_staff_review, :id, :image,
|
42
|
+
:episode_number, :location_credits, :name, :object_credits, :person_credits, :site_detail_url,
|
43
|
+
:story_arc_credits, :team_credits, :series
|
44
|
+
end
|
45
|
+
|
46
|
+
##
|
47
|
+
# Module to hold issue resource attributes
|
48
|
+
# @since 0.1.0
|
49
|
+
module Issue
|
50
|
+
attr_accessor :aliases, :api_detail_url, :character_credits, :characters_died_in, :concept_credits, :cover_date,
|
51
|
+
:date_added, :date_last_updated, :deck, :description, :disbanded_teams,
|
52
|
+
:first_appearance_characters, :first_appearance_concepts, :first_appearance_locations,
|
53
|
+
:first_appearance_objects, :first_appearance_storyarcs, :first_appearance_teams, :has_staff_review,
|
54
|
+
:id, :image, :issue_number, :location_credits, :name, :object_credits, :person_credits,
|
55
|
+
:site_detail_url, :store_date, :story_arc_credits, :team_credits, :teams_disbanded_in, :volume
|
56
|
+
end
|
57
|
+
|
58
|
+
##
|
59
|
+
# Module to hold location resource attributes
|
60
|
+
# @since 0.1.0
|
61
|
+
module Location
|
62
|
+
attr_accessor :aliases, :api_detail_url, :count_of_issue_appearances, :date_added, :date_last_updated, :deck,
|
63
|
+
:description, :first_appeared_in_issue, :id, :image, :issue_credits, :movies, :name,
|
64
|
+
:site_detail_url, :start_year, :story_arc_credits, :volume_credits
|
65
|
+
end
|
66
|
+
|
67
|
+
##
|
68
|
+
# Module to hold movie resource attributes
|
69
|
+
# @since 0.1.0
|
70
|
+
module Movie
|
71
|
+
attr_accessor :api_detail_url, :box_office_revenue, :budget, :characters, :concepts, :date_added,
|
72
|
+
:date_last_updated, :deck, :description, :distributor, :has_staff_review, :id, :image, :locations,
|
73
|
+
:name, :producers, :rating, :release_date, :runtime, :site_detail_url, :studios, :teams, :things,
|
74
|
+
:total_revenue, :writers
|
75
|
+
end
|
76
|
+
|
77
|
+
##
|
78
|
+
# Module to hold object resource attributes
|
79
|
+
# @since 0.1.0
|
80
|
+
module Object
|
81
|
+
attr_accessor :aliases, :api_detail_url, :count_of_issue_appearances, :date_added, :date_last_updated, :deck,
|
82
|
+
:description, :first_appeared_in_issue, :id, :image, :issue_credits, :movies, :name,
|
83
|
+
:site_detail_url, :start_year, :story_arc_credits, :volume_credits
|
84
|
+
end
|
85
|
+
|
86
|
+
##
|
87
|
+
# Module to hold origin resource attributes
|
88
|
+
# @since 0.1.0
|
89
|
+
module Origin
|
90
|
+
attr_accessor :api_detail_url, :character_set, :id, :name, :profiles, :site_detail_url
|
91
|
+
end
|
92
|
+
|
93
|
+
##
|
94
|
+
# Module to hold person resource attributes
|
95
|
+
# @since 0.1.0
|
96
|
+
module Person
|
97
|
+
attr_accessor :aliases, :api_detail_url, :birth, :count_of_issue_appearances, :country, :created_characters,
|
98
|
+
:date_added, :date_last_updated, :death, :deck, :description, :email, :gender, :hometown, :id,
|
99
|
+
:image, :issue_credits, :name, :site_detail_url, :story_arc_credits, :volume_credits, :website
|
100
|
+
end
|
101
|
+
|
102
|
+
##
|
103
|
+
# Module to hold power resource attributes
|
104
|
+
# @since 0.1.0
|
105
|
+
module Power
|
106
|
+
attr_accessor :attr_accessor, :aliases, :api_detail_url, :characters, :date_added, :date_last_updated,
|
107
|
+
:description, :id, :name, :site_detail_url
|
108
|
+
end
|
109
|
+
|
110
|
+
##
|
111
|
+
# Module to hold promo resource attributes
|
112
|
+
# @since 0.1.0
|
113
|
+
module Promo
|
114
|
+
attr_accessor :api_detail_url, :date_added, :deck, :id, :image, :link, :name, :resource_type, :user
|
115
|
+
end
|
116
|
+
|
117
|
+
##
|
118
|
+
# Module to hold publisher resource attributes
|
119
|
+
# @since 0.1.0
|
120
|
+
module Publisher
|
121
|
+
attr_accessor :aliases, :api_detail_url, :characters, :date_added, :date_last_updated, :deck, :description, :id,
|
122
|
+
:image, :location_address, :location_city, :location_state, :name, :site_detail_url, :story_arcs,
|
123
|
+
:teams, :volumes
|
124
|
+
end
|
125
|
+
##
|
126
|
+
# Module to hold series resource attributes
|
127
|
+
# @since 0.1.0
|
128
|
+
module Series
|
129
|
+
attr_accessor :aliases, :api_detail_url, :character_credits, :count_of_episodes, :date_added, :date_last_updated,
|
130
|
+
:deck, :description, :first_episode, :id, :image, :last_episode, :location_credits, :name,
|
131
|
+
:publisher, :site_detail_url, :start_year
|
132
|
+
end
|
133
|
+
|
134
|
+
##
|
135
|
+
# Module to hold story_arc resource attributes
|
136
|
+
# @since 0.1.0
|
137
|
+
module StoryArc
|
138
|
+
attr_accessor :aliases, :api_detail_url, :count_of_issue_appearances, :date_added, :date_last_updated, :deck,
|
139
|
+
:description, :first_appeared_in_issue, :id, :image, :issues, :movies, :name, :publisher,
|
140
|
+
:site_detail_url
|
141
|
+
end
|
142
|
+
|
143
|
+
##
|
144
|
+
# Module to hold team resource attributes
|
145
|
+
# @since 0.1.0
|
146
|
+
module Team
|
147
|
+
attr_accessor :aliases, :api_detail_url, :character_enemies, :character_friends, :characters,
|
148
|
+
:count_of_issue_appearances, :count_of_team_members, :date_added, :date_last_updated, :deck,
|
149
|
+
:description, :disbanded_in_issues, :first_appeared_in_issue, :id, :image, :issue_credits,
|
150
|
+
:issues_disbanded_in, :movies, :name, :publisher, :site_detail_url, :story_arc_credits,
|
151
|
+
:volume_credits
|
152
|
+
end
|
153
|
+
|
154
|
+
##
|
155
|
+
# Module to hold type resource attributes
|
156
|
+
# @since 0.1.0
|
157
|
+
module Type
|
158
|
+
attr_accessor :detail_resource_name, :list_resource_name, :id
|
159
|
+
end
|
160
|
+
|
161
|
+
##
|
162
|
+
# Module to hold video resource attributes
|
163
|
+
# @since 0.1.0
|
164
|
+
module Video
|
165
|
+
attr_accessor :api_detail_url, :deck, :hd_url, :high_url, :id, :image, :length_seconds, :low_url, :name,
|
166
|
+
:publish_date, :site_detail_url, :url, :user
|
167
|
+
end
|
168
|
+
|
169
|
+
##
|
170
|
+
# Module to hold video_category resource attributes
|
171
|
+
# @since 0.1.0
|
172
|
+
module VideoCategory
|
173
|
+
attr_accessor :api_detail_url, :deck, :id, :name, :site_detail_url
|
174
|
+
end
|
175
|
+
|
176
|
+
##
|
177
|
+
# Module to hold video_type resource attributes
|
178
|
+
# @since 0.1.0
|
179
|
+
module VideoType
|
180
|
+
attr_accessor :api_detail_url, :deck, :id, :name, :site_detail_url
|
181
|
+
end
|
182
|
+
|
183
|
+
##
|
184
|
+
# Module to hold volume resource attributes
|
185
|
+
# @since 0.1.0
|
186
|
+
module Volume
|
187
|
+
attr_accessor :aliases, :api_detail_url, :character_credits, :concept_credits, :count_of_issues, :date_added,
|
188
|
+
:date_last_updated, :deck, :description, :first_issue, :id, :image, :last_issue, :location_credits,
|
189
|
+
:name, :object_credits, :person_credits, :publisher, :site_detail_url, :start_year, :team_credits
|
190
|
+
end
|
191
|
+
|
192
|
+
end
|
193
|
+
end
|
194
|
+
|
@@ -0,0 +1,53 @@
|
|
1
|
+
module ComicVine
|
2
|
+
|
3
|
+
##
|
4
|
+
# Class container for a singular ComicVine resource
|
5
|
+
# @since 0.1.0
|
6
|
+
class Resource
|
7
|
+
|
8
|
+
def initialize(args)
|
9
|
+
args.each do |k, v|
|
10
|
+
# Add an attribute reader for each key
|
11
|
+
# noinspection RubyResolve
|
12
|
+
self.class.class_eval { attr_reader k } unless self.respond_to? k
|
13
|
+
|
14
|
+
# Convert sub arrays to objects
|
15
|
+
v.collect! { |i| Resource.new i } if v.kind_of?(Array) && !v.empty? && v.first.key?('api_detail_url')
|
16
|
+
|
17
|
+
# Convert sub hashes to objects
|
18
|
+
v = Resource.new v if v.kind_of?(Hash) && v.key?('api_detail_url')
|
19
|
+
|
20
|
+
# Set the instance variable to value
|
21
|
+
instance_variable_set "@#{k}", v
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
# @return [ComicVine::Resource]
|
26
|
+
def fetch
|
27
|
+
ComicVine::API.get_details_by_url(self.api_detail_url)
|
28
|
+
end
|
29
|
+
|
30
|
+
# @private
|
31
|
+
def method_missing(method_sym, *arguments, &block)
|
32
|
+
if method_sym.to_s =~ /^get_(.*)$/
|
33
|
+
key = method_sym.to_s.sub 'get_', ''
|
34
|
+
if instance_variable_defined?("@#{key}")
|
35
|
+
item = instance_variable_get("@#{key}")
|
36
|
+
if item.kind_of?(Array) && item.first.kind_of?(Resource)
|
37
|
+
res = []
|
38
|
+
item.each do |i|
|
39
|
+
res << i.fetch
|
40
|
+
end
|
41
|
+
return res
|
42
|
+
end
|
43
|
+
if item.kind_of?(Resource)
|
44
|
+
return item.fetch
|
45
|
+
end
|
46
|
+
else
|
47
|
+
super
|
48
|
+
end
|
49
|
+
elsif super
|
50
|
+
end
|
51
|
+
end
|
52
|
+
end
|
53
|
+
end
|
metadata
ADDED
@@ -0,0 +1,206 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: comicvine
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.1
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Holden Omans
|
8
|
+
autorequire:
|
9
|
+
bindir: exe
|
10
|
+
cert_chain:
|
11
|
+
- |
|
12
|
+
-----BEGIN CERTIFICATE-----
|
13
|
+
MIIDgDCCAmigAwIBAgIBATANBgkqhkiG9w0BAQUFADBDMRUwEwYDVQQDDAxob2xk
|
14
|
+
ZW4ub21hbnMxFTATBgoJkiaJk/IsZAEZFgVnbWFpbDETMBEGCgmSJomT8ixkARkW
|
15
|
+
A2NvbTAeFw0xNjExMDkxNTU5MTdaFw0xNzExMDkxNTU5MTdaMEMxFTATBgNVBAMM
|
16
|
+
DGhvbGRlbi5vbWFuczEVMBMGCgmSJomT8ixkARkWBWdtYWlsMRMwEQYKCZImiZPy
|
17
|
+
LGQBGRYDY29tMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA2V7yrTuO
|
18
|
+
4FNzWlhQL2R8Vdx5LKX/oewZ7bKh/2GJcR5R7mowdqejlfzJb7abtmYsQfyvwNfy
|
19
|
+
NrKneghJ/rLflQ1NrlehYSYLlBFTVuymPvejG+EH5C2/RJqhm2zyfjkisasqhWk8
|
20
|
+
Bq6IUPX1l8C78Kkd6t3QR/n3zr1Ip25NicpJ2flBMHPg3IV9qaNXywkCzutkEMoW
|
21
|
+
FuHdHMN2cDMUnhM9qGOK7nvRk7rkP/yJAp+sf2nv+C99s5CMNuvnGeSgnX7IMcRV
|
22
|
+
Ks2FrSvqKDj24Xf5kHdlcpDrS1VcFsAkIT6bVBm19KO8pFvZkDJE76Yshy80FRpQ
|
23
|
+
bijjrYQhYXiM4QIDAQABo38wfTAJBgNVHRMEAjAAMAsGA1UdDwQEAwIEsDAdBgNV
|
24
|
+
HQ4EFgQUbbbHhJ0Z4S/c5FcDSqEVx7Yk1agwIQYDVR0RBBowGIEWaG9sZGVuLm9t
|
25
|
+
YW5zQGdtYWlsLmNvbTAhBgNVHRIEGjAYgRZob2xkZW4ub21hbnNAZ21haWwuY29t
|
26
|
+
MA0GCSqGSIb3DQEBBQUAA4IBAQCoC/7FnCsRFIV/rwAJRXY3Ao0qdbnksPrqUhP0
|
27
|
+
7A8m8PccIDuUspq/WtkhzSMLZvzurlXEw1qdLtRLS2LnftQQuo5YPz6PQj4XAx8w
|
28
|
+
yF48j5e3XvUZJiMQ+cIsXPnjes13JgnP/KOfILgfIz9ad0pGMMUCTLYahu+fXqxE
|
29
|
+
if+otWjB2is7MBxd+krcr8vCJ4E46a8H3zyBN/tSgGw4RwkxHnXekTJvMy4skcSB
|
30
|
+
VpDNqh/BlGMQ0mqAEuBFZFSNaroph6JLUz1ykVvQENOQLThxAjolK7SAUrdoBDOc
|
31
|
+
fXEVP1s+hpJB6IEU8/LW016TU8WpnA+MHGfJRtkrUm/cEsWU
|
32
|
+
-----END CERTIFICATE-----
|
33
|
+
date: 2016-11-09 00:00:00.000000000 Z
|
34
|
+
dependencies:
|
35
|
+
- !ruby/object:Gem::Dependency
|
36
|
+
name: bundler
|
37
|
+
requirement: !ruby/object:Gem::Requirement
|
38
|
+
requirements:
|
39
|
+
- - "~>"
|
40
|
+
- !ruby/object:Gem::Version
|
41
|
+
version: '1.13'
|
42
|
+
type: :development
|
43
|
+
prerelease: false
|
44
|
+
version_requirements: !ruby/object:Gem::Requirement
|
45
|
+
requirements:
|
46
|
+
- - "~>"
|
47
|
+
- !ruby/object:Gem::Version
|
48
|
+
version: '1.13'
|
49
|
+
- !ruby/object:Gem::Dependency
|
50
|
+
name: rake
|
51
|
+
requirement: !ruby/object:Gem::Requirement
|
52
|
+
requirements:
|
53
|
+
- - "~>"
|
54
|
+
- !ruby/object:Gem::Version
|
55
|
+
version: '10.0'
|
56
|
+
type: :development
|
57
|
+
prerelease: false
|
58
|
+
version_requirements: !ruby/object:Gem::Requirement
|
59
|
+
requirements:
|
60
|
+
- - "~>"
|
61
|
+
- !ruby/object:Gem::Version
|
62
|
+
version: '10.0'
|
63
|
+
- !ruby/object:Gem::Dependency
|
64
|
+
name: minitest
|
65
|
+
requirement: !ruby/object:Gem::Requirement
|
66
|
+
requirements:
|
67
|
+
- - "~>"
|
68
|
+
- !ruby/object:Gem::Version
|
69
|
+
version: '5.9'
|
70
|
+
- - ">="
|
71
|
+
- !ruby/object:Gem::Version
|
72
|
+
version: 5.9.1
|
73
|
+
type: :development
|
74
|
+
prerelease: false
|
75
|
+
version_requirements: !ruby/object:Gem::Requirement
|
76
|
+
requirements:
|
77
|
+
- - "~>"
|
78
|
+
- !ruby/object:Gem::Version
|
79
|
+
version: '5.9'
|
80
|
+
- - ">="
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: 5.9.1
|
83
|
+
- !ruby/object:Gem::Dependency
|
84
|
+
name: minitest-reporters
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - "~>"
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: '1.1'
|
90
|
+
- - ">="
|
91
|
+
- !ruby/object:Gem::Version
|
92
|
+
version: 1.1.12
|
93
|
+
type: :development
|
94
|
+
prerelease: false
|
95
|
+
version_requirements: !ruby/object:Gem::Requirement
|
96
|
+
requirements:
|
97
|
+
- - "~>"
|
98
|
+
- !ruby/object:Gem::Version
|
99
|
+
version: '1.1'
|
100
|
+
- - ">="
|
101
|
+
- !ruby/object:Gem::Version
|
102
|
+
version: 1.1.12
|
103
|
+
- !ruby/object:Gem::Dependency
|
104
|
+
name: rdoc
|
105
|
+
requirement: !ruby/object:Gem::Requirement
|
106
|
+
requirements:
|
107
|
+
- - "~>"
|
108
|
+
- !ruby/object:Gem::Version
|
109
|
+
version: '4.2'
|
110
|
+
- - ">="
|
111
|
+
- !ruby/object:Gem::Version
|
112
|
+
version: 4.2.1
|
113
|
+
type: :development
|
114
|
+
prerelease: false
|
115
|
+
version_requirements: !ruby/object:Gem::Requirement
|
116
|
+
requirements:
|
117
|
+
- - "~>"
|
118
|
+
- !ruby/object:Gem::Version
|
119
|
+
version: '4.2'
|
120
|
+
- - ">="
|
121
|
+
- !ruby/object:Gem::Version
|
122
|
+
version: 4.2.1
|
123
|
+
- !ruby/object:Gem::Dependency
|
124
|
+
name: yard
|
125
|
+
requirement: !ruby/object:Gem::Requirement
|
126
|
+
requirements:
|
127
|
+
- - "~>"
|
128
|
+
- !ruby/object:Gem::Version
|
129
|
+
version: '0.9'
|
130
|
+
- - ">="
|
131
|
+
- !ruby/object:Gem::Version
|
132
|
+
version: 0.9.5
|
133
|
+
type: :development
|
134
|
+
prerelease: false
|
135
|
+
version_requirements: !ruby/object:Gem::Requirement
|
136
|
+
requirements:
|
137
|
+
- - "~>"
|
138
|
+
- !ruby/object:Gem::Version
|
139
|
+
version: '0.9'
|
140
|
+
- - ">="
|
141
|
+
- !ruby/object:Gem::Version
|
142
|
+
version: 0.9.5
|
143
|
+
- !ruby/object:Gem::Dependency
|
144
|
+
name: rest-client
|
145
|
+
requirement: !ruby/object:Gem::Requirement
|
146
|
+
requirements:
|
147
|
+
- - "~>"
|
148
|
+
- !ruby/object:Gem::Version
|
149
|
+
version: '2.0'
|
150
|
+
type: :runtime
|
151
|
+
prerelease: false
|
152
|
+
version_requirements: !ruby/object:Gem::Requirement
|
153
|
+
requirements:
|
154
|
+
- - "~>"
|
155
|
+
- !ruby/object:Gem::Version
|
156
|
+
version: '2.0'
|
157
|
+
description: Interface to ComicVine API
|
158
|
+
email:
|
159
|
+
- holden.omans@gmail.com
|
160
|
+
executables: []
|
161
|
+
extensions: []
|
162
|
+
extra_rdoc_files: []
|
163
|
+
files:
|
164
|
+
- ".gitignore"
|
165
|
+
- ".rspec"
|
166
|
+
- ".travis.yml"
|
167
|
+
- Gemfile
|
168
|
+
- LICENSE.txt
|
169
|
+
- README.md
|
170
|
+
- Rakefile
|
171
|
+
- bin/console
|
172
|
+
- bin/setup
|
173
|
+
- certs/homans.pem
|
174
|
+
- checksum/comicvine-0.1.0.gem.sha512
|
175
|
+
- comicvine.gemspec
|
176
|
+
- lib/comicvine.rb
|
177
|
+
- lib/comicvine/list.rb
|
178
|
+
- lib/comicvine/modules.rb
|
179
|
+
- lib/comicvine/resource.rb
|
180
|
+
- lib/comicvine/version.rb
|
181
|
+
homepage: https://github.com/kalinon/ruby-comicvine-api
|
182
|
+
licenses:
|
183
|
+
- MIT
|
184
|
+
metadata: {}
|
185
|
+
post_install_message:
|
186
|
+
rdoc_options: []
|
187
|
+
require_paths:
|
188
|
+
- lib
|
189
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
190
|
+
requirements:
|
191
|
+
- - ">="
|
192
|
+
- !ruby/object:Gem::Version
|
193
|
+
version: '0'
|
194
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
195
|
+
requirements:
|
196
|
+
- - ">="
|
197
|
+
- !ruby/object:Gem::Version
|
198
|
+
version: '0'
|
199
|
+
requirements: []
|
200
|
+
rubyforge_project:
|
201
|
+
rubygems_version: 2.5.1
|
202
|
+
signing_key:
|
203
|
+
specification_version: 4
|
204
|
+
summary: Api interface to ComicVine. Allows for searches and returning specific information
|
205
|
+
on resources.
|
206
|
+
test_files: []
|
metadata.gz.sig
ADDED
Binary file
|