marvelite 0.0.3 → 0.0.4
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/CHANGELOG.md +9 -0
- data/README.md +72 -0
- data/lib/marvelite.rb +2 -0
- data/lib/marvelite/api/character_methods.rb +62 -0
- data/lib/marvelite/api/client.rb +4 -57
- data/lib/marvelite/api/comic_methods.rb +35 -0
- data/lib/marvelite/api/router.rb +24 -0
- data/lib/marvelite/version.rb +1 -1
- data/spec/fixtures/{character.json → characters/character.json} +0 -0
- data/spec/fixtures/{character_comics.json → characters/character_comics.json} +0 -0
- data/spec/fixtures/{character_events.json → characters/character_events.json} +0 -0
- data/spec/fixtures/{character_series.json → characters/character_series.json} +0 -0
- data/spec/fixtures/{character_stories.json → characters/character_stories.json} +0 -0
- data/spec/fixtures/{characters.json → characters/characters.json} +0 -0
- data/spec/fixtures/comics/comic.json +259 -0
- data/spec/fixtures/comics/comic_characters.json +402 -0
- data/spec/fixtures/comics/comic_creators.json +3925 -0
- data/spec/fixtures/comics/comic_events.json +471 -0
- data/spec/fixtures/comics/comic_stories.json +197 -0
- data/spec/fixtures/comics/comics.json +2077 -0
- data/spec/marvelite/api/client_characters_endpoints_spec.rb +140 -0
- data/spec/marvelite/api/client_comics_endpoints_spec.rb +115 -0
- data/spec/marvelite/api/client_spec.rb +1 -139
- metadata +32 -14
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 5869a9c08209ca2f9f7e12da466a094c90896c8b
|
4
|
+
data.tar.gz: 223abc8115a7c6f52e49f336ab552dfede7bdd2f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ecea6aebd6822352fc79508ec0871782276fe4e8296d43f97686a274e37bd4316a06eb2be6324c1c7aa47409de0faa29e61cd6003034d2288974f45a54871dff
|
7
|
+
data.tar.gz: e8b51d2cc3bdd8f347b081a1e0837a755a41052c9a1064003f7b44c9c8d5fcfaa1dcd49a0f8a70c6132def107c10d93ade4ecc80640f95bffd71069b2afff8ef
|
data/CHANGELOG.md
CHANGED
@@ -1,5 +1,14 @@
|
|
1
1
|
## Changelog
|
2
2
|
|
3
|
+
### 0.0.4
|
4
|
+
* Adds the following endpoints:
|
5
|
+
* retrieve comics by connecting to the API's `/comics` endpoint
|
6
|
+
* retieve a comic by connecting to the API's `/comics/:id` enpoint
|
7
|
+
* retrieve comic characters by connecting to the API's `/comics/:id/characters` endpoint.
|
8
|
+
* retrieve comic creators by connecting to the API's `/comics/:id/creators` endpoint.
|
9
|
+
* retrieve comic events by connecting to the API's `/comics/:id/events` endpoint.
|
10
|
+
* retrieve comic stories by connecting to the API's `/comics/:id/stories` endpoint.
|
11
|
+
|
3
12
|
### 0.0.3
|
4
13
|
* Adds basic testing setup
|
5
14
|
* Adds the ability to retrieve:
|
data/README.md
CHANGED
@@ -49,6 +49,13 @@ client = Marvelite::API::Client.new(
|
|
49
49
|
| [#character_events](#character_events) | Fetches a list of events in which a specific character appears. |
|
50
50
|
| [#character_series](#character_series) | Fetches a list of comic series in which a specific character appears. |
|
51
51
|
| [#character_stories](#character_stories) | Fetches a list of comic stories featuring a specific character. |
|
52
|
+
| [#comics](#comics) | Fetches a list of comics. |
|
53
|
+
| [#comic](#comic) | Fetches a single comic resource. |
|
54
|
+
| [#comic_characters](#comic_characters) | Fetches a list of characters which appear in a specific comic. |
|
55
|
+
| [#comic_creators](#comic_creators) | Fetches a list of comic creators whose work appears in a specific comic. |
|
56
|
+
| [#comic_events](#comic_events) | Fetches a list of events in which a comic appears. |
|
57
|
+
| [#comic_stories](#comic_stories) | Fetches a list of comic stories in a specific comic issue. |
|
58
|
+
|
52
59
|
|
53
60
|
#### characters
|
54
61
|
Fetches a list of comic characters. Can receive optional params.
|
@@ -142,6 +149,71 @@ client.character_stories('Spider-Man', { :limit => 10, :offset => 20 })
|
|
142
149
|
|
143
150
|
See the [Marvel Comics Interactive API Tester](http://developer.marvel.com/docs#!/public/getCharacterStoryCollection_get_5) for a complete list of params that you can pass to the `#character_stories` method.
|
144
151
|
|
152
|
+
|
153
|
+
#### comics
|
154
|
+
|
155
|
+
Fetches a list of comics. Accepts optional params.
|
156
|
+
|
157
|
+
```ruby
|
158
|
+
client.comics
|
159
|
+
client.comics(:format => 'graphic novel', :limit => 10, :offset => 20 })
|
160
|
+
```
|
161
|
+
|
162
|
+
See the [Marvel Comics Interactive API Tester](http://developer.marvel.com/docs#!/public/getComicsCollection_get_6) for a complete list of params that you can pass to the `#comics` method.
|
163
|
+
|
164
|
+
#### comic
|
165
|
+
|
166
|
+
Fetches a single comic resource. Requires a comic id value (integer).
|
167
|
+
|
168
|
+
```ruby
|
169
|
+
client.comic(40128)
|
170
|
+
```
|
171
|
+
|
172
|
+
#### comic_characters
|
173
|
+
|
174
|
+
Fetches a list of characters which appear in a specific comic. Requires a comic id value (integer). Accepts optional params.
|
175
|
+
|
176
|
+
```ruby
|
177
|
+
client.comic_characters(40128)
|
178
|
+
client.comic_characters(40128, :orderBy => 'name', :limit => 30, :offset => 20)
|
179
|
+
```
|
180
|
+
|
181
|
+
See the [Marvel Comics Interactive API Tester](http://developer.marvel.com/docs#!/public/getComicCharacterCollection_get_8) for a complete list of params that you can pass to the `#comic_characters` method.
|
182
|
+
|
183
|
+
#### comic_creators
|
184
|
+
|
185
|
+
Fetches a list of comic creators whose work appears in a specific comic. Requires a comic id value (integer). Accepts optional params.
|
186
|
+
|
187
|
+
```ruby
|
188
|
+
client.comic_creators(40128)
|
189
|
+
client.comic_creators(40128, :lastName => 'Romita')
|
190
|
+
```
|
191
|
+
|
192
|
+
See the [Marvel Comics Interactive API Tester](http://developer.marvel.com/docs#!/public/getCreatorCollection_get_9) for a complete list of params that you can pass to the `#comic_creators` method.
|
193
|
+
|
194
|
+
#### comic_events
|
195
|
+
|
196
|
+
Fetches a list of events in which a comic appears. Requires a comic id value (integer). Accepts optional params.
|
197
|
+
|
198
|
+
```ruby
|
199
|
+
client.comic_events(40128)
|
200
|
+
client.comic_events(40128, :orderBy => 'name', :limit => 10)
|
201
|
+
```
|
202
|
+
|
203
|
+
See the [Marvel Comics Interactive API Tester](http://developer.marvel.com/docs#!/public/getIssueEventsCollection_get_10) for a complete list of params that you can pass to the `#comic_events` method.
|
204
|
+
|
205
|
+
#### comic_stories
|
206
|
+
|
207
|
+
Fetches a list of comic stories in a specific comic issue. Requires a comic id value (integer). Accepts optional params.
|
208
|
+
|
209
|
+
```ruby
|
210
|
+
client.comic_stories(40128)
|
211
|
+
client.comic_stories(40128, :orderBy => 'name', :limit => 10)
|
212
|
+
```
|
213
|
+
|
214
|
+
See the [Marvel Comics Interactive API Tester](http://developer.marvel.com/docs#!/public/getComicStoryCollection_get_11) for a complete list of params that you can pass to the `#comic_stories` method.
|
215
|
+
|
216
|
+
|
145
217
|
## Responses
|
146
218
|
|
147
219
|
All requests to the API, return a `Marvelite::API::Response` object if successful or a `Marvelite::API::ErrorResponse` if API response returns an error. These objects are nothing more than the raw API response enhanced with Hashie methods.
|
data/lib/marvelite.rb
CHANGED
@@ -0,0 +1,62 @@
|
|
1
|
+
module Marvelite
|
2
|
+
module API
|
3
|
+
module CharacterMethods
|
4
|
+
def characters(query_params = {})
|
5
|
+
response = self.class.get("/#{api_version}/#{router.characters_path}", :query => params(query_params))
|
6
|
+
build_response_object(response)
|
7
|
+
end
|
8
|
+
|
9
|
+
def character(value)
|
10
|
+
by_name = value.is_a?(String) ? true : false
|
11
|
+
response = if by_name
|
12
|
+
find_character_by_name(value)
|
13
|
+
else
|
14
|
+
self.class.get("/#{api_version}/#{router.character_path(value)}", :query => params)
|
15
|
+
end
|
16
|
+
|
17
|
+
build_response_object(response)
|
18
|
+
end
|
19
|
+
|
20
|
+
def character_comics(id, query_params = {})
|
21
|
+
if id.is_a?(String)
|
22
|
+
character = find_character_by_name(id)
|
23
|
+
return false unless character
|
24
|
+
id = character.id
|
25
|
+
end
|
26
|
+
|
27
|
+
response = self.class.get("/#{api_version}/#{router.character_comics_path(id)}", :query => params(query_params))
|
28
|
+
build_response_object(response)
|
29
|
+
end
|
30
|
+
|
31
|
+
def character_events(id, query_params = {})
|
32
|
+
if id.is_a?(String)
|
33
|
+
character = find_character_by_name(id)
|
34
|
+
return false unless character
|
35
|
+
id = character.id
|
36
|
+
end
|
37
|
+
response = self.class.get("/#{api_version}/#{router.character_events_path(id)}", :query => params(query_params))
|
38
|
+
build_response_object(response)
|
39
|
+
end
|
40
|
+
|
41
|
+
def character_series(id, query_params = {})
|
42
|
+
if id.is_a?(String)
|
43
|
+
character = find_character_by_name(id)
|
44
|
+
return false unless character
|
45
|
+
id = character.id
|
46
|
+
end
|
47
|
+
response = self.class.get("/#{api_version}/#{router.character_series_path(id)}", :query => params(query_params))
|
48
|
+
build_response_object(response)
|
49
|
+
end
|
50
|
+
|
51
|
+
def character_stories(id, query_params = {})
|
52
|
+
if id.is_a?(String)
|
53
|
+
character = find_character_by_name(id)
|
54
|
+
return false unless character
|
55
|
+
id = character.id
|
56
|
+
end
|
57
|
+
response = self.class.get("/#{api_version}/#{router.character_stories_path(id)}", :query => params(query_params))
|
58
|
+
build_response_object(response)
|
59
|
+
end
|
60
|
+
end
|
61
|
+
end
|
62
|
+
end
|
data/lib/marvelite/api/client.rb
CHANGED
@@ -2,6 +2,10 @@ module Marvelite
|
|
2
2
|
module API
|
3
3
|
class Client
|
4
4
|
include ActiveModel::Model
|
5
|
+
|
6
|
+
include Marvelite::API::CharacterMethods
|
7
|
+
include Marvelite::API::ComicMethods
|
8
|
+
|
5
9
|
include HTTParty
|
6
10
|
base_uri 'http://gateway.marvel.com'
|
7
11
|
|
@@ -16,63 +20,6 @@ module Marvelite
|
|
16
20
|
@api_version = attrs.fetch(:api_version) { 'v1' }
|
17
21
|
end
|
18
22
|
|
19
|
-
def characters(query_params = {})
|
20
|
-
response = self.class.get("/#{api_version}/#{router.characters_path}", :query => params(query_params))
|
21
|
-
build_response_object(response)
|
22
|
-
end
|
23
|
-
|
24
|
-
def character(value)
|
25
|
-
by_name = value.is_a?(String) ? true : false
|
26
|
-
response = if by_name
|
27
|
-
find_character_by_name(value)
|
28
|
-
else
|
29
|
-
self.class.get("/#{api_version}/#{router.character_path(value)}", :query => params)
|
30
|
-
end
|
31
|
-
|
32
|
-
build_response_object(response)
|
33
|
-
end
|
34
|
-
|
35
|
-
def character_comics(id, query_params = {})
|
36
|
-
if id.is_a?(String)
|
37
|
-
character = find_character_by_name(id)
|
38
|
-
return false unless character
|
39
|
-
id = character.id
|
40
|
-
end
|
41
|
-
|
42
|
-
response = self.class.get("/#{api_version}/#{router.character_comics_path(id)}", :query => params(query_params))
|
43
|
-
build_response_object(response)
|
44
|
-
end
|
45
|
-
|
46
|
-
def character_events(id, query_params = {})
|
47
|
-
if id.is_a?(String)
|
48
|
-
character = find_character_by_name(id)
|
49
|
-
return false unless character
|
50
|
-
id = character.id
|
51
|
-
end
|
52
|
-
response = self.class.get("/#{api_version}/#{router.character_events_path(id)}", :query => params(query_params))
|
53
|
-
build_response_object(response)
|
54
|
-
end
|
55
|
-
|
56
|
-
def character_series(id, query_params = {})
|
57
|
-
if id.is_a?(String)
|
58
|
-
character = find_character_by_name(id)
|
59
|
-
return false unless character
|
60
|
-
id = character.id
|
61
|
-
end
|
62
|
-
response = self.class.get("/#{api_version}/#{router.character_series_path(id)}", :query => params(query_params))
|
63
|
-
build_response_object(response)
|
64
|
-
end
|
65
|
-
|
66
|
-
def character_stories(id, query_params = {})
|
67
|
-
if id.is_a?(String)
|
68
|
-
character = find_character_by_name(id)
|
69
|
-
return false unless character
|
70
|
-
id = character.id
|
71
|
-
end
|
72
|
-
response = self.class.get("/#{api_version}/#{router.character_stories_path(id)}", :query => params(query_params))
|
73
|
-
build_response_object(response)
|
74
|
-
end
|
75
|
-
|
76
23
|
private
|
77
24
|
def params(additional_params = {})
|
78
25
|
base_hash = { :apikey => public_key, :ts => ts, :hash => request_hash }
|
@@ -0,0 +1,35 @@
|
|
1
|
+
module Marvelite
|
2
|
+
module API
|
3
|
+
module ComicMethods
|
4
|
+
def comics(query_params = {})
|
5
|
+
response = self.class.get("/#{api_version}/#{router.comics_path}", :query => params(query_params))
|
6
|
+
build_response_object(response)
|
7
|
+
end
|
8
|
+
|
9
|
+
def comic(id)
|
10
|
+
response = self.class.get("/#{api_version}/#{router.comic_path(id)}", :query => params)
|
11
|
+
build_response_object(response)
|
12
|
+
end
|
13
|
+
|
14
|
+
def comic_characters(id, query_params = {})
|
15
|
+
response = self.class.get("/#{api_version}/#{router.comic_characters_path(id)}", :query => params(query_params))
|
16
|
+
build_response_object(response)
|
17
|
+
end
|
18
|
+
|
19
|
+
def comic_events(id, query_params = {})
|
20
|
+
response = self.class.get("/#{api_version}/#{router.comic_events_path(id)}", :query => params(query_params))
|
21
|
+
build_response_object(response)
|
22
|
+
end
|
23
|
+
|
24
|
+
def comic_creators(id, query_params = {})
|
25
|
+
response = self.class.get("/#{api_version}/#{router.comic_creators_path(id)}", :query => params(query_params))
|
26
|
+
build_response_object(response)
|
27
|
+
end
|
28
|
+
|
29
|
+
def comic_stories(id, query_params = {})
|
30
|
+
response = self.class.get("/#{api_version}/#{router.comic_stories_path(id)}", :query => params(query_params))
|
31
|
+
build_response_object(response)
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
data/lib/marvelite/api/router.rb
CHANGED
@@ -24,6 +24,30 @@ module Marvelite
|
|
24
24
|
def character_stories_path(id)
|
25
25
|
"public/characters/#{id}/stories"
|
26
26
|
end
|
27
|
+
|
28
|
+
def comics_path
|
29
|
+
"public/comics"
|
30
|
+
end
|
31
|
+
|
32
|
+
def comic_path(id)
|
33
|
+
"public/comics/#{id}"
|
34
|
+
end
|
35
|
+
|
36
|
+
def comic_characters_path(id)
|
37
|
+
"public/comics/#{id}/characters"
|
38
|
+
end
|
39
|
+
|
40
|
+
def comic_creators_path(id)
|
41
|
+
"public/comics/#{id}/creators"
|
42
|
+
end
|
43
|
+
|
44
|
+
def comic_events_path(id)
|
45
|
+
"public/comics/#{id}/events"
|
46
|
+
end
|
47
|
+
|
48
|
+
def comic_stories_path(id)
|
49
|
+
"public/comics/#{id}/stories"
|
50
|
+
end
|
27
51
|
end
|
28
52
|
end
|
29
53
|
end
|
data/lib/marvelite/version.rb
CHANGED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
@@ -0,0 +1,259 @@
|
|
1
|
+
{
|
2
|
+
"code": 200,
|
3
|
+
"status": "Ok",
|
4
|
+
"etag": "7dff68517455de2200bde0216974bf20ae7f3dc3",
|
5
|
+
"data": {
|
6
|
+
"offset": 0,
|
7
|
+
"limit": 20,
|
8
|
+
"total": 1,
|
9
|
+
"count": 1,
|
10
|
+
"results": [
|
11
|
+
{
|
12
|
+
"id": 40128,
|
13
|
+
"digitalId": 28117,
|
14
|
+
"title": "Amazing Spider-Man (1999) #700",
|
15
|
+
"issueNumber": 700,
|
16
|
+
"variantDescription": "",
|
17
|
+
"description": null,
|
18
|
+
"modified": "2013-02-01T15:45:55-0500",
|
19
|
+
"isbn": "",
|
20
|
+
"upc": 75960604716170000,
|
21
|
+
"diamondCode": "OCT120626",
|
22
|
+
"ean": "",
|
23
|
+
"issn": "0274-5232",
|
24
|
+
"format": "Comic",
|
25
|
+
"pageCount": 104,
|
26
|
+
"textObjects": [],
|
27
|
+
"resourceURI": "http://gateway.marvel.com/v1/public/comics/40128",
|
28
|
+
"urls": [
|
29
|
+
{
|
30
|
+
"type": "detail",
|
31
|
+
"url": "http://marvel.com/comics/issue/40128/amazing_spider-man_1999_700?utm_campaign=apiRef&utm_source=85ec0830b5958f4f46ea2fa898a76ef2"
|
32
|
+
},
|
33
|
+
{
|
34
|
+
"type": "purchase",
|
35
|
+
"url": "http://comicstore.marvel.com/Amazing-Spider-Man-700/digital-comic/28117?utm_campaign=apiRef&utm_source=85ec0830b5958f4f46ea2fa898a76ef2"
|
36
|
+
},
|
37
|
+
{
|
38
|
+
"type": "reader",
|
39
|
+
"url": "http://marvel.com/digitalcomics/view.htm?iid=28117&utm_campaign=apiRef&utm_source=85ec0830b5958f4f46ea2fa898a76ef2"
|
40
|
+
},
|
41
|
+
{
|
42
|
+
"type": "inAppLink",
|
43
|
+
"url": "http://applink.marvel.com/issue/28117?utm_campaign=apiRef&utm_source=85ec0830b5958f4f46ea2fa898a76ef2"
|
44
|
+
}
|
45
|
+
],
|
46
|
+
"series": {
|
47
|
+
"resourceURI": "http://gateway.marvel.com/v1/public/series/454",
|
48
|
+
"name": "Amazing Spider-Man (1999 - 2013)"
|
49
|
+
},
|
50
|
+
"variants": [
|
51
|
+
{
|
52
|
+
"resourceURI": "http://gateway.marvel.com/v1/public/comics/49353",
|
53
|
+
"name": "Amazing Spider-Man (1999) #700 (Ramos 5th Printing Variant)"
|
54
|
+
},
|
55
|
+
{
|
56
|
+
"resourceURI": "http://gateway.marvel.com/v1/public/comics/47884",
|
57
|
+
"name": "Amazing Spider-Man (1999) #700 (4th Printing Variant)"
|
58
|
+
},
|
59
|
+
{
|
60
|
+
"resourceURI": "http://gateway.marvel.com/v1/public/comics/47631",
|
61
|
+
"name": "Amazing Spider-Man (1999) #700 (Camuncoli 3rd Printing Variant)"
|
62
|
+
},
|
63
|
+
{
|
64
|
+
"resourceURI": "http://gateway.marvel.com/v1/public/comics/47350",
|
65
|
+
"name": "Amazing Spider-Man (1999) #700 (Ramos 2nd Printing Variant)"
|
66
|
+
},
|
67
|
+
{
|
68
|
+
"resourceURI": "http://gateway.marvel.com/v1/public/comics/44623",
|
69
|
+
"name": "Amazing Spider-Man (1999) #700 (Martin Variant)"
|
70
|
+
},
|
71
|
+
{
|
72
|
+
"resourceURI": "http://gateway.marvel.com/v1/public/comics/42440",
|
73
|
+
"name": "Amazing Spider-Man (1999) #700 (Asm 50th Anniversary Variant)"
|
74
|
+
},
|
75
|
+
{
|
76
|
+
"resourceURI": "http://gateway.marvel.com/v1/public/comics/44620",
|
77
|
+
"name": "Amazing Spider-Man (1999) #700 (Ramos Wraparound Variant)"
|
78
|
+
},
|
79
|
+
{
|
80
|
+
"resourceURI": "http://gateway.marvel.com/v1/public/comics/44621",
|
81
|
+
"name": "Amazing Spider-Man (1999) #700 (Quesada Wraparound Variant)"
|
82
|
+
},
|
83
|
+
{
|
84
|
+
"resourceURI": "http://gateway.marvel.com/v1/public/comics/44622",
|
85
|
+
"name": "Amazing Spider-Man (1999) #700 (Ditko Variant)"
|
86
|
+
},
|
87
|
+
{
|
88
|
+
"resourceURI": "http://gateway.marvel.com/v1/public/comics/44624",
|
89
|
+
"name": "Amazing Spider-Man (1999) #700 (Coipel Variant)"
|
90
|
+
},
|
91
|
+
{
|
92
|
+
"resourceURI": "http://gateway.marvel.com/v1/public/comics/46995",
|
93
|
+
"name": "Amazing Spider-Man (1999) #700 (Quesada Wraparound Sketch Variant)"
|
94
|
+
}
|
95
|
+
],
|
96
|
+
"collections": [],
|
97
|
+
"collectedIssues": [],
|
98
|
+
"dates": [
|
99
|
+
{
|
100
|
+
"type": "onsaleDate",
|
101
|
+
"date": "2012-12-26T00:00:00-0500"
|
102
|
+
},
|
103
|
+
{
|
104
|
+
"type": "focDate",
|
105
|
+
"date": "2012-12-04T00:00:00-0500"
|
106
|
+
},
|
107
|
+
{
|
108
|
+
"type": "unlimitedDate",
|
109
|
+
"date": "2013-06-24T13:04:49-0400"
|
110
|
+
},
|
111
|
+
{
|
112
|
+
"type": "digitalPurchaseDate",
|
113
|
+
"date": "2012-12-26T00:00:00-0500"
|
114
|
+
}
|
115
|
+
],
|
116
|
+
"prices": [
|
117
|
+
{
|
118
|
+
"type": "printPrice",
|
119
|
+
"price": 7.99
|
120
|
+
},
|
121
|
+
{
|
122
|
+
"type": "digitalPurchasePrice",
|
123
|
+
"price": 3.99
|
124
|
+
}
|
125
|
+
],
|
126
|
+
"thumbnail": {
|
127
|
+
"path": "http://i.annihil.us/u/prod/marvel/i/mg/3/b0/510c2957c9b75",
|
128
|
+
"extension": "jpg"
|
129
|
+
},
|
130
|
+
"images": [
|
131
|
+
{
|
132
|
+
"path": "http://i.annihil.us/u/prod/marvel/i/mg/3/b0/510c2957c9b75",
|
133
|
+
"extension": "jpg"
|
134
|
+
},
|
135
|
+
{
|
136
|
+
"path": "http://i.annihil.us/u/prod/marvel/i/mg/3/60/508841f5f024d",
|
137
|
+
"extension": "jpg"
|
138
|
+
},
|
139
|
+
{
|
140
|
+
"path": "http://i.annihil.us/u/prod/marvel/i/mg/e/60/504fb308babca",
|
141
|
+
"extension": "jpg"
|
142
|
+
},
|
143
|
+
{
|
144
|
+
"path": "http://i.annihil.us/u/prod/marvel/i/mg/9/b0/504fb2946ee9a",
|
145
|
+
"extension": "jpg"
|
146
|
+
},
|
147
|
+
{
|
148
|
+
"path": "http://i.annihil.us/u/prod/marvel/i/mg/5/f0/504fb1d794b20",
|
149
|
+
"extension": "jpg"
|
150
|
+
}
|
151
|
+
],
|
152
|
+
"creators": {
|
153
|
+
"available": 12,
|
154
|
+
"collectionURI": "http://gateway.marvel.com/v1/public/comics/40128/creators",
|
155
|
+
"items": [
|
156
|
+
{
|
157
|
+
"resourceURI": "http://gateway.marvel.com/v1/public/creators/105",
|
158
|
+
"name": "Sal Buscema",
|
159
|
+
"role": "inker"
|
160
|
+
},
|
161
|
+
{
|
162
|
+
"resourceURI": "http://gateway.marvel.com/v1/public/creators/447",
|
163
|
+
"name": "Victor Olazaba",
|
164
|
+
"role": "inker"
|
165
|
+
},
|
166
|
+
{
|
167
|
+
"resourceURI": "http://gateway.marvel.com/v1/public/creators/9461",
|
168
|
+
"name": "Stephanie Buscema",
|
169
|
+
"role": "artist"
|
170
|
+
},
|
171
|
+
{
|
172
|
+
"resourceURI": "http://gateway.marvel.com/v1/public/creators/1141",
|
173
|
+
"name": "Giuseppe Camuncoli",
|
174
|
+
"role": "penciler"
|
175
|
+
},
|
176
|
+
{
|
177
|
+
"resourceURI": "http://gateway.marvel.com/v1/public/creators/72",
|
178
|
+
"name": "Humberto Ramos",
|
179
|
+
"role": "penciler"
|
180
|
+
},
|
181
|
+
{
|
182
|
+
"resourceURI": "http://gateway.marvel.com/v1/public/creators/430",
|
183
|
+
"name": "Edgar Delgado",
|
184
|
+
"role": "colorist"
|
185
|
+
},
|
186
|
+
{
|
187
|
+
"resourceURI": "http://gateway.marvel.com/v1/public/creators/428",
|
188
|
+
"name": "Antonio Fabela",
|
189
|
+
"role": "colorist"
|
190
|
+
},
|
191
|
+
{
|
192
|
+
"resourceURI": "http://gateway.marvel.com/v1/public/creators/6986",
|
193
|
+
"name": "J. M. DeMatteis",
|
194
|
+
"role": "writer"
|
195
|
+
},
|
196
|
+
{
|
197
|
+
"resourceURI": "http://gateway.marvel.com/v1/public/creators/626",
|
198
|
+
"name": "Dan Slott",
|
199
|
+
"role": "writer"
|
200
|
+
},
|
201
|
+
{
|
202
|
+
"resourceURI": "http://gateway.marvel.com/v1/public/creators/11788",
|
203
|
+
"name": "Jennifer Van Meter",
|
204
|
+
"role": "writer"
|
205
|
+
},
|
206
|
+
{
|
207
|
+
"resourceURI": "http://gateway.marvel.com/v1/public/creators/452",
|
208
|
+
"name": "Chris Eliopoulos",
|
209
|
+
"role": "letterer"
|
210
|
+
},
|
211
|
+
{
|
212
|
+
"resourceURI": "http://gateway.marvel.com/v1/public/creators/11879",
|
213
|
+
"name": "Stephen Wacker",
|
214
|
+
"role": "editor"
|
215
|
+
}
|
216
|
+
],
|
217
|
+
"returned": 12
|
218
|
+
},
|
219
|
+
"characters": {
|
220
|
+
"available": 1,
|
221
|
+
"collectionURI": "http://gateway.marvel.com/v1/public/comics/40128/characters",
|
222
|
+
"items": [
|
223
|
+
{
|
224
|
+
"resourceURI": "http://gateway.marvel.com/v1/public/characters/1009610",
|
225
|
+
"name": "Spider-Man"
|
226
|
+
}
|
227
|
+
],
|
228
|
+
"returned": 1
|
229
|
+
},
|
230
|
+
"stories": {
|
231
|
+
"available": 2,
|
232
|
+
"collectionURI": {
|
233
|
+
"service": "comic_issueStories",
|
234
|
+
"id": 40128
|
235
|
+
},
|
236
|
+
"items": [
|
237
|
+
{
|
238
|
+
"resourceURI": "http://gateway.marvel.com/v1/public/stories/91053",
|
239
|
+
"name": "Cover #91053",
|
240
|
+
"type": "cover"
|
241
|
+
},
|
242
|
+
{
|
243
|
+
"resourceURI": "http://gateway.marvel.com/v1/public/stories/91054",
|
244
|
+
"name": "Interior #91054",
|
245
|
+
"type": "interiorStory"
|
246
|
+
}
|
247
|
+
],
|
248
|
+
"returned": 2
|
249
|
+
},
|
250
|
+
"events": {
|
251
|
+
"available": 0,
|
252
|
+
"collectionURI": "http://gateway.marvel.com/v1/public/comics/40128/events",
|
253
|
+
"items": [],
|
254
|
+
"returned": 0
|
255
|
+
}
|
256
|
+
}
|
257
|
+
]
|
258
|
+
}
|
259
|
+
}
|