marvelite 0.0.2 → 0.0.3
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 +21 -0
- data/README.md +26 -6
- data/Rakefile +5 -0
- data/lib/marvelite/api/client.rb +45 -7
- data/lib/marvelite/api/response.rb +7 -0
- data/lib/marvelite/version.rb +1 -1
- data/spec/fixtures/character.json +402 -0
- data/spec/fixtures/character_comics.json +3320 -0
- data/spec/fixtures/character_events.json +9105 -0
- data/spec/fixtures/character_series.json +5200 -0
- data/spec/fixtures/character_stories.json +1664 -0
- data/spec/fixtures/characters.json +3175 -0
- data/spec/marvelite/api/client_spec.rb +169 -16
- data/spec/spec_helper.rb +36 -1
- metadata +29 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: bcf2ccb0ede4085ab09804bc5d5cf1510d75a382
|
4
|
+
data.tar.gz: 7ade97ec9ff11f4880ce79ee2ca4a4751cf9eb1a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e0284135f3777d78c31ecd91dcb3f2f2c15d2744cfa28a21286211a03f5ec8f60f84625c873d16d12d1483ec537524ffb1498512df6ef9e88bede7f683f71d79
|
7
|
+
data.tar.gz: 151a57db1addd05f107654ca8b504cd199060432df8b714dfd4374be79e4634d117dc5a6e8671ab4dc65299e22a23a608f05c9f16b962da5fa1bab2d9ca8718d
|
data/CHANGELOG.md
ADDED
@@ -0,0 +1,21 @@
|
|
1
|
+
## Changelog
|
2
|
+
|
3
|
+
### 0.0.3
|
4
|
+
* Adds basic testing setup
|
5
|
+
* Adds the ability to retrieve:
|
6
|
+
* character comics by passing a character name instead of a numeric id
|
7
|
+
* character events by passing a character name instead of a numeric id
|
8
|
+
* character series by passing a character name instead of a numeric id
|
9
|
+
* character stories by passing a character name instead of a numeric id
|
10
|
+
|
11
|
+
### 0.0.2
|
12
|
+
* Adds the following endpoints:
|
13
|
+
* retrieve character comics by connecting to the API's `/characters/:id/comics` endpoint
|
14
|
+
* retrieve character events by connecting to the API's `/characters/:id/events` endpoint
|
15
|
+
* retrieve character series by connecting to the API's `/characters/:id/series` endpoint
|
16
|
+
* retrieve character stories by connecting to the API's `/characters/:id/stories` endpoint
|
17
|
+
|
18
|
+
### 0.0.1
|
19
|
+
* Initial release and just two endpoints:
|
20
|
+
* retrieve characters by connecting to the API's `/characters` endpoint
|
21
|
+
* retrieve a character by connecting to the API's `/characters/:id` endpoint
|
data/README.md
CHANGED
@@ -33,7 +33,10 @@ Please register first in the [Marvel Comics Developer Portal](http://developer.m
|
|
33
33
|
### Instantiate a client
|
34
34
|
|
35
35
|
```ruby
|
36
|
-
client = Marvelite::API::Client.new(
|
36
|
+
client = Marvelite::API::Client.new(
|
37
|
+
:public_key => 'abcd1234',
|
38
|
+
:private_key => '5678efgh'
|
39
|
+
)
|
37
40
|
```
|
38
41
|
|
39
42
|
### Methods
|
@@ -69,28 +72,38 @@ client.character('Spider-Man')
|
|
69
72
|
|
70
73
|
#### character_comics
|
71
74
|
|
72
|
-
Fetches a list of comics containing a specific character. Requires a character id value (integer). Accepts optional params.
|
75
|
+
Fetches a list of comics containing a specific character. Requires a character id value (integer or string). Accepts optional params.
|
73
76
|
|
74
77
|
```ruby
|
75
78
|
client.character_comics(1009610)
|
79
|
+
client.character_comics('Spider-Man')
|
76
80
|
client.character_comics(
|
77
81
|
1009610,
|
78
82
|
{ :format => 'graphic novel', :limit => 10, :orderBy => 'title' }
|
79
83
|
)
|
84
|
+
client.character_comics(
|
85
|
+
'Spider-Man',
|
86
|
+
{ :format => 'graphic novel', :limit => 10, :orderBy => 'title' }
|
87
|
+
)
|
80
88
|
```
|
81
89
|
|
82
90
|
See the [Marvel Comics Interactive API Tester](http://developer.marvel.com/docs#!/public/getComicsCharacterCollection_get_2) for a complete list of params that you can pass to the `#character_comics` method.
|
83
91
|
|
84
92
|
#### character_events
|
85
93
|
|
86
|
-
Fetches a list of events in which a specific character appears. Requires a character id value (integer). Accepts optional params.
|
94
|
+
Fetches a list of events in which a specific character appears. Requires a character id value (integer or string). Accepts optional params.
|
87
95
|
|
88
96
|
```ruby
|
89
97
|
client.character_events(1009610)
|
98
|
+
client.character_events('Spider-Man')
|
90
99
|
client.character_events(
|
91
100
|
1009610,
|
92
101
|
{ :limit => 10, :orderBy => 'name' }
|
93
102
|
)
|
103
|
+
client.character_events(
|
104
|
+
'Spider-Man',
|
105
|
+
{ :limit => 10, :orderBy => 'name' }
|
106
|
+
)
|
94
107
|
```
|
95
108
|
|
96
109
|
See the [Marvel Comics Interactive API Tester](http://developer.marvel.com/docs#!/public/getCharacterEventsCollection_get_3) for a complete list of params that you can pass to the `#character_events` method.
|
@@ -98,14 +111,19 @@ See the [Marvel Comics Interactive API Tester](http://developer.marvel.com/docs#
|
|
98
111
|
|
99
112
|
#### character_series
|
100
113
|
|
101
|
-
Fetches a list of comic series in which a specific character appears. Requires a character id value (integer). Accepts optional params.
|
114
|
+
Fetches a list of comic series in which a specific character appears. Requires a character id value (integer or string). Accepts optional params.
|
102
115
|
|
103
116
|
```ruby
|
104
117
|
client.character_series(1009610)
|
118
|
+
client.character_series('Spider-Man')
|
105
119
|
client.character_series(
|
106
120
|
1009610,
|
107
121
|
{ :seriesType => 'ongoing', :limit => 10, :orderBy => 'title' }
|
108
122
|
)
|
123
|
+
client.character_series(
|
124
|
+
'Spider-Man',
|
125
|
+
{ :seriesType => 'ongoing', :limit => 10, :orderBy => 'title' }
|
126
|
+
)
|
109
127
|
```
|
110
128
|
|
111
129
|
See the [Marvel Comics Interactive API Tester](http://developer.marvel.com/docs#!/public/getCharacterSeriesCollection_get_4) for a complete list of params that you can pass to the `#character_series` method.
|
@@ -113,18 +131,20 @@ See the [Marvel Comics Interactive API Tester](http://developer.marvel.com/docs#
|
|
113
131
|
|
114
132
|
#### character_stories
|
115
133
|
|
116
|
-
Fetches a list of comic stories featuring a specific character. Requires a character id value (integer). Accepts optional params.
|
134
|
+
Fetches a list of comic stories featuring a specific character. Requires a character id value (integer or string). Accepts optional params.
|
117
135
|
|
118
136
|
```ruby
|
119
137
|
client.character_stories(1009610)
|
138
|
+
client.character_stories('Spider-Man')
|
120
139
|
client.character_stories(1009610, { :limit => 10, :offset => 20 })
|
140
|
+
client.character_stories('Spider-Man', { :limit => 10, :offset => 20 })
|
121
141
|
```
|
122
142
|
|
123
143
|
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.
|
124
144
|
|
125
145
|
## Responses
|
126
146
|
|
127
|
-
All requests to the API, return a `Marvelite::API::Response` object
|
147
|
+
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.
|
128
148
|
|
129
149
|
This way you gain several adavantages to manipulate the response, like:
|
130
150
|
|
data/Rakefile
CHANGED
data/lib/marvelite/api/client.rb
CHANGED
@@ -18,38 +18,59 @@ module Marvelite
|
|
18
18
|
|
19
19
|
def characters(query_params = {})
|
20
20
|
response = self.class.get("/#{api_version}/#{router.characters_path}", :query => params(query_params))
|
21
|
-
|
21
|
+
build_response_object(response)
|
22
22
|
end
|
23
23
|
|
24
24
|
def character(value)
|
25
25
|
by_name = value.is_a?(String) ? true : false
|
26
26
|
response = if by_name
|
27
|
-
|
27
|
+
find_character_by_name(value)
|
28
28
|
else
|
29
29
|
self.class.get("/#{api_version}/#{router.character_path(value)}", :query => params)
|
30
30
|
end
|
31
31
|
|
32
|
-
|
32
|
+
build_response_object(response)
|
33
33
|
end
|
34
34
|
|
35
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
|
+
|
36
42
|
response = self.class.get("/#{api_version}/#{router.character_comics_path(id)}", :query => params(query_params))
|
37
|
-
|
43
|
+
build_response_object(response)
|
38
44
|
end
|
39
45
|
|
40
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
|
41
52
|
response = self.class.get("/#{api_version}/#{router.character_events_path(id)}", :query => params(query_params))
|
42
|
-
|
53
|
+
build_response_object(response)
|
43
54
|
end
|
44
55
|
|
45
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
|
46
62
|
response = self.class.get("/#{api_version}/#{router.character_series_path(id)}", :query => params(query_params))
|
47
|
-
|
63
|
+
build_response_object(response)
|
48
64
|
end
|
49
65
|
|
50
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
|
51
72
|
response = self.class.get("/#{api_version}/#{router.character_stories_path(id)}", :query => params(query_params))
|
52
|
-
|
73
|
+
build_response_object(response)
|
53
74
|
end
|
54
75
|
|
55
76
|
private
|
@@ -67,6 +88,23 @@ module Marvelite
|
|
67
88
|
Time.now.to_i
|
68
89
|
end
|
69
90
|
end
|
91
|
+
|
92
|
+
def find_character_by_name(name)
|
93
|
+
response = self.characters(:name => name)
|
94
|
+
return false unless response[:data][:results].size > 0
|
95
|
+
|
96
|
+
response.id = response[:data][:results][0][:id]
|
97
|
+
response
|
98
|
+
end
|
99
|
+
|
100
|
+
def build_response_object(response)
|
101
|
+
case response["code"]
|
102
|
+
when 200
|
103
|
+
Response.new(response)
|
104
|
+
else
|
105
|
+
ErrorResponse.new(response)
|
106
|
+
end
|
107
|
+
end
|
70
108
|
end
|
71
109
|
end
|
72
110
|
end
|
@@ -6,5 +6,12 @@ module Marvelite
|
|
6
6
|
include Hashie::Extensions::MethodAccess
|
7
7
|
include Hashie::Extensions::IndifferentAccess
|
8
8
|
end
|
9
|
+
|
10
|
+
class ErrorResponse < Hash
|
11
|
+
include Hashie::Extensions::MergeInitializer
|
12
|
+
include Hashie::Extensions::KeyConversion
|
13
|
+
include Hashie::Extensions::MethodAccess
|
14
|
+
include Hashie::Extensions::IndifferentAccess
|
15
|
+
end
|
9
16
|
end
|
10
17
|
end
|
data/lib/marvelite/version.rb
CHANGED
@@ -0,0 +1,402 @@
|
|
1
|
+
{
|
2
|
+
"code": 200,
|
3
|
+
"status": "Ok",
|
4
|
+
"etag": "fc7e1550fb882c0f509568d508e1864742e7dbdb",
|
5
|
+
"data": {
|
6
|
+
"offset": 0,
|
7
|
+
"limit": 20,
|
8
|
+
"total": 1,
|
9
|
+
"count": 1,
|
10
|
+
"results": [
|
11
|
+
{
|
12
|
+
"id": 1009610,
|
13
|
+
"name": "Spider-Man",
|
14
|
+
"description": "Bitten by a radioactive spider, high school student Peter Parker gained the speed, strength and powers of a spider. Adopting the name Spider-Man, Peter hoped to start a career using his new abilities. Taught that with great power comes great responsibility, Spidey has vowed to use his powers to help people.",
|
15
|
+
"modified": "2013-10-24T13:52:13-0400",
|
16
|
+
"thumbnail": {
|
17
|
+
"path": "http://i.annihil.us/u/prod/marvel/i/mg/3/50/526548a343e4b",
|
18
|
+
"extension": "jpg"
|
19
|
+
},
|
20
|
+
"resourceURI": "http://gateway.marvel.com/v1/public/characters/1009610",
|
21
|
+
"comics": {
|
22
|
+
"available": 2576,
|
23
|
+
"collectionURI": "http://gateway.marvel.com/v1/public/characters/1009610/comics",
|
24
|
+
"items": [
|
25
|
+
{
|
26
|
+
"resourceURI": "http://gateway.marvel.com/v1/public/comics/43495",
|
27
|
+
"name": "A+X (2012) #2"
|
28
|
+
},
|
29
|
+
{
|
30
|
+
"resourceURI": "http://gateway.marvel.com/v1/public/comics/320",
|
31
|
+
"name": "Actor Presents Spider-Man and the Incredible Hulk (2003) #1"
|
32
|
+
},
|
33
|
+
{
|
34
|
+
"resourceURI": "http://gateway.marvel.com/v1/public/comics/30885",
|
35
|
+
"name": "Age of Heroes (Trade Paperback)"
|
36
|
+
},
|
37
|
+
{
|
38
|
+
"resourceURI": "http://gateway.marvel.com/v1/public/comics/37257",
|
39
|
+
"name": "Alias (2003) #10"
|
40
|
+
},
|
41
|
+
{
|
42
|
+
"resourceURI": "http://gateway.marvel.com/v1/public/comics/37262",
|
43
|
+
"name": "Alias (2003) #15"
|
44
|
+
},
|
45
|
+
{
|
46
|
+
"resourceURI": "http://gateway.marvel.com/v1/public/comics/37255",
|
47
|
+
"name": "Alias Omnibus (Hardcover)"
|
48
|
+
},
|
49
|
+
{
|
50
|
+
"resourceURI": "http://gateway.marvel.com/v1/public/comics/12637",
|
51
|
+
"name": "Alpha Flight (1983) #1"
|
52
|
+
},
|
53
|
+
{
|
54
|
+
"resourceURI": "http://gateway.marvel.com/v1/public/comics/12668",
|
55
|
+
"name": "Alpha Flight (1983) #127"
|
56
|
+
},
|
57
|
+
{
|
58
|
+
"resourceURI": "http://gateway.marvel.com/v1/public/comics/6233",
|
59
|
+
"name": "Alpha Flight Classic Vol. 1 (Trade Paperback)"
|
60
|
+
},
|
61
|
+
{
|
62
|
+
"resourceURI": "http://gateway.marvel.com/v1/public/comics/16926",
|
63
|
+
"name": "Amazing Fantasy (1962) #15"
|
64
|
+
},
|
65
|
+
{
|
66
|
+
"resourceURI": "http://gateway.marvel.com/v1/public/comics/16214",
|
67
|
+
"name": "Amazing Fantasy Omnibus (Hardcover)"
|
68
|
+
},
|
69
|
+
{
|
70
|
+
"resourceURI": "http://gateway.marvel.com/v1/public/comics/5286",
|
71
|
+
"name": "Amazing Spider-Girl (2006)"
|
72
|
+
},
|
73
|
+
{
|
74
|
+
"resourceURI": "http://gateway.marvel.com/v1/public/comics/16151",
|
75
|
+
"name": "Amazing Spider-Girl (2006) #11"
|
76
|
+
},
|
77
|
+
{
|
78
|
+
"resourceURI": "http://gateway.marvel.com/v1/public/comics/13519",
|
79
|
+
"name": "Amazing Spider-Girl Vol. 1: Whatever Happened to the Daughter of Spider-Man (Trade Paperback)"
|
80
|
+
},
|
81
|
+
{
|
82
|
+
"resourceURI": "http://gateway.marvel.com/v1/public/comics/17305",
|
83
|
+
"name": "Amazing Spider-Girl Vol. 2: Comes the Carnage! (Trade Paperback)"
|
84
|
+
},
|
85
|
+
{
|
86
|
+
"resourceURI": "http://gateway.marvel.com/v1/public/comics/6481",
|
87
|
+
"name": "Amazing Spider-Man (1963)"
|
88
|
+
},
|
89
|
+
{
|
90
|
+
"resourceURI": "http://gateway.marvel.com/v1/public/comics/6482",
|
91
|
+
"name": "Amazing Spider-Man (1963) #1"
|
92
|
+
},
|
93
|
+
{
|
94
|
+
"resourceURI": "http://gateway.marvel.com/v1/public/comics/37894",
|
95
|
+
"name": "Amazing Spider-Man (1999) #1"
|
96
|
+
},
|
97
|
+
{
|
98
|
+
"resourceURI": "http://gateway.marvel.com/v1/public/comics/37895",
|
99
|
+
"name": "Amazing Spider-Man (1999) #2"
|
100
|
+
},
|
101
|
+
{
|
102
|
+
"resourceURI": "http://gateway.marvel.com/v1/public/comics/6593",
|
103
|
+
"name": "Amazing Spider-Man (1963) #2"
|
104
|
+
}
|
105
|
+
],
|
106
|
+
"returned": 20
|
107
|
+
},
|
108
|
+
"series": {
|
109
|
+
"available": 530,
|
110
|
+
"collectionURI": "http://gateway.marvel.com/v1/public/characters/1009610/series",
|
111
|
+
"items": [
|
112
|
+
{
|
113
|
+
"resourceURI": "http://gateway.marvel.com/v1/public/series/16450",
|
114
|
+
"name": "A+X (2012 - Present)"
|
115
|
+
},
|
116
|
+
{
|
117
|
+
"resourceURI": "http://gateway.marvel.com/v1/public/series/458",
|
118
|
+
"name": "Actor Presents Spider-Man and the Incredible Hulk (2003)"
|
119
|
+
},
|
120
|
+
{
|
121
|
+
"resourceURI": "http://gateway.marvel.com/v1/public/series/10235",
|
122
|
+
"name": "Age of Heroes (2011)"
|
123
|
+
},
|
124
|
+
{
|
125
|
+
"resourceURI": "http://gateway.marvel.com/v1/public/series/672",
|
126
|
+
"name": "Alias (2003)"
|
127
|
+
},
|
128
|
+
{
|
129
|
+
"resourceURI": "http://gateway.marvel.com/v1/public/series/13383",
|
130
|
+
"name": "Alias Omnibus (2006)"
|
131
|
+
},
|
132
|
+
{
|
133
|
+
"resourceURI": "http://gateway.marvel.com/v1/public/series/2116",
|
134
|
+
"name": "Alpha Flight (1983 - 1994)"
|
135
|
+
},
|
136
|
+
{
|
137
|
+
"resourceURI": "http://gateway.marvel.com/v1/public/series/1983",
|
138
|
+
"name": "Alpha Flight Classic Vol. 1 (2007)"
|
139
|
+
},
|
140
|
+
{
|
141
|
+
"resourceURI": "http://gateway.marvel.com/v1/public/series/2987",
|
142
|
+
"name": "Amazing Fantasy (1962)"
|
143
|
+
},
|
144
|
+
{
|
145
|
+
"resourceURI": "http://gateway.marvel.com/v1/public/series/2707",
|
146
|
+
"name": "Amazing Fantasy Omnibus (2007)"
|
147
|
+
},
|
148
|
+
{
|
149
|
+
"resourceURI": "http://gateway.marvel.com/v1/public/series/1126",
|
150
|
+
"name": "Amazing Spider-Girl (2006 - 2009)"
|
151
|
+
},
|
152
|
+
{
|
153
|
+
"resourceURI": "http://gateway.marvel.com/v1/public/series/2234",
|
154
|
+
"name": "Amazing Spider-Girl Vol. 1: Whatever Happened to the Daughter of Spider-Man (2007)"
|
155
|
+
},
|
156
|
+
{
|
157
|
+
"resourceURI": "http://gateway.marvel.com/v1/public/series/3101",
|
158
|
+
"name": "Amazing Spider-Girl Vol. 2: Comes the Carnage! (2007)"
|
159
|
+
},
|
160
|
+
{
|
161
|
+
"resourceURI": "http://gateway.marvel.com/v1/public/series/1987",
|
162
|
+
"name": "Amazing Spider-Man (1963 - 1998)"
|
163
|
+
},
|
164
|
+
{
|
165
|
+
"resourceURI": "http://gateway.marvel.com/v1/public/series/454",
|
166
|
+
"name": "Amazing Spider-Man (1999 - 2013)"
|
167
|
+
},
|
168
|
+
{
|
169
|
+
"resourceURI": "http://gateway.marvel.com/v1/public/series/9802",
|
170
|
+
"name": "Amazing Spider-Man Annual (2010)"
|
171
|
+
},
|
172
|
+
{
|
173
|
+
"resourceURI": "http://gateway.marvel.com/v1/public/series/5958",
|
174
|
+
"name": "Amazing Spider-Man Annual (2008 - Present)"
|
175
|
+
},
|
176
|
+
{
|
177
|
+
"resourceURI": "http://gateway.marvel.com/v1/public/series/13205",
|
178
|
+
"name": "Amazing Spider-Man Annual (2010 - Present)"
|
179
|
+
},
|
180
|
+
{
|
181
|
+
"resourceURI": "http://gateway.marvel.com/v1/public/series/2984",
|
182
|
+
"name": "Amazing Spider-Man Annual (1964 - Present)"
|
183
|
+
},
|
184
|
+
{
|
185
|
+
"resourceURI": "http://gateway.marvel.com/v1/public/series/5376",
|
186
|
+
"name": "Amazing Spider-Man Family (2008 - 2009)"
|
187
|
+
},
|
188
|
+
{
|
189
|
+
"resourceURI": "http://gateway.marvel.com/v1/public/series/9917",
|
190
|
+
"name": "Amazing Spider-Man MGC (2010)"
|
191
|
+
}
|
192
|
+
],
|
193
|
+
"returned": 20
|
194
|
+
},
|
195
|
+
"stories": {
|
196
|
+
"available": 4164,
|
197
|
+
"collectionURI": "http://gateway.marvel.com/v1/public/characters/1009610/stories",
|
198
|
+
"items": [
|
199
|
+
{
|
200
|
+
"resourceURI": "http://gateway.marvel.com/v1/public/stories/483",
|
201
|
+
"name": "Interior #483",
|
202
|
+
"type": "interiorStory"
|
203
|
+
},
|
204
|
+
{
|
205
|
+
"resourceURI": "http://gateway.marvel.com/v1/public/stories/486",
|
206
|
+
"name": "Cover #486",
|
207
|
+
"type": "cover"
|
208
|
+
},
|
209
|
+
{
|
210
|
+
"resourceURI": "http://gateway.marvel.com/v1/public/stories/487",
|
211
|
+
"name": "Interior #487",
|
212
|
+
"type": "interiorStory"
|
213
|
+
},
|
214
|
+
{
|
215
|
+
"resourceURI": "http://gateway.marvel.com/v1/public/stories/499",
|
216
|
+
"name": "Interior #499",
|
217
|
+
"type": "interiorStory"
|
218
|
+
},
|
219
|
+
{
|
220
|
+
"resourceURI": "http://gateway.marvel.com/v1/public/stories/599",
|
221
|
+
"name": "Interior #599",
|
222
|
+
"type": "interiorStory"
|
223
|
+
},
|
224
|
+
{
|
225
|
+
"resourceURI": "http://gateway.marvel.com/v1/public/stories/805",
|
226
|
+
"name": "Interior #805",
|
227
|
+
"type": "interiorStory"
|
228
|
+
},
|
229
|
+
{
|
230
|
+
"resourceURI": "http://gateway.marvel.com/v1/public/stories/824",
|
231
|
+
"name": "Cover #824",
|
232
|
+
"type": "cover"
|
233
|
+
},
|
234
|
+
{
|
235
|
+
"resourceURI": "http://gateway.marvel.com/v1/public/stories/838",
|
236
|
+
"name": "3 of 3 - Family Business",
|
237
|
+
"type": "cover"
|
238
|
+
},
|
239
|
+
{
|
240
|
+
"resourceURI": "http://gateway.marvel.com/v1/public/stories/842",
|
241
|
+
"name": "1 of 1 - Secret of the Spider Shop",
|
242
|
+
"type": "cover"
|
243
|
+
},
|
244
|
+
{
|
245
|
+
"resourceURI": "http://gateway.marvel.com/v1/public/stories/867",
|
246
|
+
"name": "Interior #867",
|
247
|
+
"type": "interiorStory"
|
248
|
+
},
|
249
|
+
{
|
250
|
+
"resourceURI": "http://gateway.marvel.com/v1/public/stories/1018",
|
251
|
+
"name": "Cover #1018",
|
252
|
+
"type": "cover"
|
253
|
+
},
|
254
|
+
{
|
255
|
+
"resourceURI": "http://gateway.marvel.com/v1/public/stories/1019",
|
256
|
+
"name": "Interior #1019",
|
257
|
+
"type": "interiorStory"
|
258
|
+
},
|
259
|
+
{
|
260
|
+
"resourceURI": "http://gateway.marvel.com/v1/public/stories/1020",
|
261
|
+
"name": "Cover #1020",
|
262
|
+
"type": "cover"
|
263
|
+
},
|
264
|
+
{
|
265
|
+
"resourceURI": "http://gateway.marvel.com/v1/public/stories/1021",
|
266
|
+
"name": "Interior #1021",
|
267
|
+
"type": "interiorStory"
|
268
|
+
},
|
269
|
+
{
|
270
|
+
"resourceURI": "http://gateway.marvel.com/v1/public/stories/1022",
|
271
|
+
"name": "Cover #1022",
|
272
|
+
"type": "cover"
|
273
|
+
},
|
274
|
+
{
|
275
|
+
"resourceURI": "http://gateway.marvel.com/v1/public/stories/1023",
|
276
|
+
"name": "Interior #1023",
|
277
|
+
"type": "interiorStory"
|
278
|
+
},
|
279
|
+
{
|
280
|
+
"resourceURI": "http://gateway.marvel.com/v1/public/stories/1076",
|
281
|
+
"name": "4 of 4 - Golden Age",
|
282
|
+
"type": "cover"
|
283
|
+
},
|
284
|
+
{
|
285
|
+
"resourceURI": "http://gateway.marvel.com/v1/public/stories/1125",
|
286
|
+
"name": "6 of 6 - Sins Past",
|
287
|
+
"type": "cover"
|
288
|
+
},
|
289
|
+
{
|
290
|
+
"resourceURI": "http://gateway.marvel.com/v1/public/stories/1126",
|
291
|
+
"name": "6 of 6 - Sins Past",
|
292
|
+
"type": "interiorStory"
|
293
|
+
},
|
294
|
+
{
|
295
|
+
"resourceURI": "http://gateway.marvel.com/v1/public/stories/1134",
|
296
|
+
"name": "Interior #1134",
|
297
|
+
"type": "interiorStory"
|
298
|
+
}
|
299
|
+
],
|
300
|
+
"returned": 20
|
301
|
+
},
|
302
|
+
"events": {
|
303
|
+
"available": 29,
|
304
|
+
"collectionURI": "http://gateway.marvel.com/v1/public/characters/1009610/events",
|
305
|
+
"items": [
|
306
|
+
{
|
307
|
+
"resourceURI": "http://gateway.marvel.com/v1/public/events/116",
|
308
|
+
"name": "Acts of Vengeance!"
|
309
|
+
},
|
310
|
+
{
|
311
|
+
"resourceURI": "http://gateway.marvel.com/v1/public/events/233",
|
312
|
+
"name": "Atlantis Attacks"
|
313
|
+
},
|
314
|
+
{
|
315
|
+
"resourceURI": "http://gateway.marvel.com/v1/public/events/234",
|
316
|
+
"name": "Avengers Disassembled"
|
317
|
+
},
|
318
|
+
{
|
319
|
+
"resourceURI": "http://gateway.marvel.com/v1/public/events/310",
|
320
|
+
"name": "Avengers VS X-Men"
|
321
|
+
},
|
322
|
+
{
|
323
|
+
"resourceURI": "http://gateway.marvel.com/v1/public/events/296",
|
324
|
+
"name": "Chaos War"
|
325
|
+
},
|
326
|
+
{
|
327
|
+
"resourceURI": "http://gateway.marvel.com/v1/public/events/238",
|
328
|
+
"name": "Civil War"
|
329
|
+
},
|
330
|
+
{
|
331
|
+
"resourceURI": "http://gateway.marvel.com/v1/public/events/318",
|
332
|
+
"name": "Dark Reign"
|
333
|
+
},
|
334
|
+
{
|
335
|
+
"resourceURI": "http://gateway.marvel.com/v1/public/events/240",
|
336
|
+
"name": "Days of Future Present"
|
337
|
+
},
|
338
|
+
{
|
339
|
+
"resourceURI": "http://gateway.marvel.com/v1/public/events/246",
|
340
|
+
"name": "Evolutionary War"
|
341
|
+
},
|
342
|
+
{
|
343
|
+
"resourceURI": "http://gateway.marvel.com/v1/public/events/302",
|
344
|
+
"name": "Fear Itself"
|
345
|
+
},
|
346
|
+
{
|
347
|
+
"resourceURI": "http://gateway.marvel.com/v1/public/events/251",
|
348
|
+
"name": "House of M"
|
349
|
+
},
|
350
|
+
{
|
351
|
+
"resourceURI": "http://gateway.marvel.com/v1/public/events/252",
|
352
|
+
"name": "Inferno"
|
353
|
+
},
|
354
|
+
{
|
355
|
+
"resourceURI": "http://gateway.marvel.com/v1/public/events/253",
|
356
|
+
"name": "Infinity Gauntlet"
|
357
|
+
},
|
358
|
+
{
|
359
|
+
"resourceURI": "http://gateway.marvel.com/v1/public/events/255",
|
360
|
+
"name": "Initiative"
|
361
|
+
},
|
362
|
+
{
|
363
|
+
"resourceURI": "http://gateway.marvel.com/v1/public/events/258",
|
364
|
+
"name": "Kraven's Last Hunt"
|
365
|
+
},
|
366
|
+
{
|
367
|
+
"resourceURI": "http://gateway.marvel.com/v1/public/events/151",
|
368
|
+
"name": "Maximum Carnage"
|
369
|
+
},
|
370
|
+
{
|
371
|
+
"resourceURI": "http://gateway.marvel.com/v1/public/events/37",
|
372
|
+
"name": "Maximum Security"
|
373
|
+
},
|
374
|
+
{
|
375
|
+
"resourceURI": "http://gateway.marvel.com/v1/public/events/154",
|
376
|
+
"name": "Onslaught"
|
377
|
+
},
|
378
|
+
{
|
379
|
+
"resourceURI": "http://gateway.marvel.com/v1/public/events/266",
|
380
|
+
"name": "Other - Evolve or Die"
|
381
|
+
},
|
382
|
+
{
|
383
|
+
"resourceURI": "http://gateway.marvel.com/v1/public/events/269",
|
384
|
+
"name": "Secret Invasion"
|
385
|
+
}
|
386
|
+
],
|
387
|
+
"returned": 20
|
388
|
+
},
|
389
|
+
"urls": [
|
390
|
+
{
|
391
|
+
"type": "detail",
|
392
|
+
"url": "http://marvel.com/comics/characters/1009610/spider-man?utm_campaign=apiRef&utm_source=85ec0830b5958f4f46ea2fa898a76ef2"
|
393
|
+
},
|
394
|
+
{
|
395
|
+
"type": "wiki",
|
396
|
+
"url": "http://marvel.com/universe/Spider-Man_(Peter_Parker)?utm_campaign=apiRef&utm_source=85ec0830b5958f4f46ea2fa898a76ef2"
|
397
|
+
}
|
398
|
+
]
|
399
|
+
}
|
400
|
+
]
|
401
|
+
}
|
402
|
+
}
|