uatu-marvel 0.0.2 → 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (50) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +1 -0
  3. data/.rspec +2 -0
  4. data/.travis.yml +4 -1
  5. data/Gemfile +2 -1
  6. data/README.md +5 -3
  7. data/bin/console +7 -0
  8. data/lib/uatu.rb +13 -2
  9. data/lib/uatu/base.rb +10 -55
  10. data/lib/uatu/configuration.rb +3 -5
  11. data/lib/uatu/connection.rb +48 -41
  12. data/lib/uatu/endpoints/collection.rb +16 -0
  13. data/lib/uatu/endpoints/nested.rb +23 -0
  14. data/lib/uatu/endpoints/single.rb +17 -0
  15. data/lib/uatu/resource.rb +21 -19
  16. data/lib/uatu/resources.rb +3 -0
  17. data/lib/uatu/response.rb +1 -4
  18. data/lib/uatu/version.rb +1 -1
  19. data/spec/integration/characters_spec.rb +25 -0
  20. data/spec/integration/comics_spec.rb +17 -0
  21. data/spec/integration/creators_spec.rb +19 -0
  22. data/spec/integration/events_spec.rb +19 -0
  23. data/spec/integration/series_spec.rb +19 -0
  24. data/spec/integration/stories_spec.rb +19 -0
  25. data/spec/spec_helper.rb +18 -0
  26. data/spec/support/fake_marvel_api.rb +24 -0
  27. data/spec/support/fake_marvel_api/characters/list.json +381 -0
  28. data/spec/support/fake_marvel_api/characters/show.json +381 -0
  29. data/spec/support/fake_marvel_api/comics/list.json +1479 -0
  30. data/spec/support/fake_marvel_api/comics/show.json +134 -0
  31. data/spec/support/fake_marvel_api/creators/list.json +180 -0
  32. data/spec/support/fake_marvel_api/creators/show.json +323 -0
  33. data/spec/support/fake_marvel_api/events/list.json +2224 -0
  34. data/spec/support/fake_marvel_api/events/show.json +474 -0
  35. data/spec/support/fake_marvel_api/series/list.json +739 -0
  36. data/spec/support/fake_marvel_api/series/show.json +101 -0
  37. data/spec/support/fake_marvel_api/stories/list.json +523 -0
  38. data/spec/support/fake_marvel_api/stories/show.json +69 -0
  39. data/spec/uatu/configuration_spec.rb +26 -0
  40. data/spec/uatu/connection_spec.rb +54 -0
  41. data/spec/uatu/resource_spec.rb +40 -0
  42. data/spec/uatu_spec.rb +9 -0
  43. data/uatu.gemspec +6 -4
  44. metadata +123 -34
  45. data/test/helper.rb +0 -9
  46. data/test/uatu/base_test.rb +0 -51
  47. data/test/uatu/configuration_test.rb +0 -19
  48. data/test/uatu/connection_test.rb +0 -31
  49. data/test/uatu/resource_test.rb +0 -33
  50. data/test/uatu/uatu_test.rb +0 -9
@@ -0,0 +1,3 @@
1
+ module Uatu
2
+ RESOURCES = %w(comic serie character event story creator)
3
+ end
@@ -1,9 +1,6 @@
1
- require 'faraday'
2
- require 'uatu/error'
3
-
4
1
  module Uatu
5
2
  module Response
6
-
3
+
7
4
  class RaiseMarvelError < Faraday::Response::Middleware
8
5
 
9
6
  def on_complete(env)
@@ -1,3 +1,3 @@
1
1
  module Uatu
2
- VERSION = "0.0.2"
2
+ VERSION = "0.1.0"
3
3
  end
@@ -0,0 +1,25 @@
1
+ require 'spec_helper'
2
+
3
+ RSpec.describe "Characters" do
4
+
5
+ let(:uatu) { Uatu::Base.new }
6
+
7
+ it 'retrieves characters' do
8
+ hero = uatu.characters(name: 'Daredevil').first
9
+ expect(hero.name).to eq 'Daredevil'
10
+ end
11
+
12
+ it 'retrieves a single character' do
13
+ hero = uatu.character(1009262)
14
+ expect(hero.name).to eq 'Daredevil'
15
+ end
16
+
17
+ it 'retrieves a resource from the character' do
18
+ hero_comics = uatu.character_comics(1009262)
19
+ expect(hero_comics.first.class).to eq Uatu::Comic
20
+
21
+ characters = hero_comics.first.characters.items
22
+ expect(characters.any?{|item| item['name'] == 'Daredevil' }).to be true
23
+ end
24
+
25
+ end
@@ -0,0 +1,17 @@
1
+ require 'spec_helper'
2
+
3
+ RSpec.describe "Comics" do
4
+
5
+ let(:uatu) { Uatu::Base.new }
6
+
7
+ it 'retrieves comics' do
8
+ comic = uatu.comics.first
9
+ expect(comic.title).to eq "Black Panther: The Man Without Fear - The Complete Collection (Trade Paperback)"
10
+ end
11
+
12
+ it 'retrieves a single comic' do
13
+ comic = uatu.comic(65443)
14
+ expect(comic.title).to eq "Black Panther: The Man Without Fear - The Complete Collection (Trade Paperback)"
15
+ end
16
+
17
+ end
@@ -0,0 +1,19 @@
1
+ require 'spec_helper'
2
+
3
+ RSpec.describe "Creators" do
4
+
5
+ let(:uatu) { Uatu::Base.new }
6
+
7
+ it 'retrieves creators' do
8
+ creators = uatu.creators
9
+
10
+ expect(creators.size).to eq 3
11
+ expect(creators.last.full_name).to eq "Abel"
12
+ end
13
+
14
+ it 'retrieves a single creator' do
15
+ creator = uatu.creator(2)
16
+ expect(creator.full_name).to eq "Garth Ennis"
17
+ end
18
+
19
+ end
@@ -0,0 +1,19 @@
1
+ require 'spec_helper'
2
+
3
+ RSpec.describe "Events" do
4
+
5
+ let(:uatu) { Uatu::Base.new }
6
+
7
+ it 'retrieves events' do
8
+ events = uatu.events
9
+
10
+ expect(events.size).to eq 5
11
+ expect(events.first.title).to eq "Annihilation"
12
+ end
13
+
14
+ it 'retrieves a single event' do
15
+ event = uatu.event(233)
16
+ expect(event.title).to eq "Atlantis Attacks"
17
+ end
18
+
19
+ end
@@ -0,0 +1,19 @@
1
+ require 'spec_helper'
2
+
3
+ RSpec.describe "Series" do
4
+
5
+ let(:uatu) { Uatu::Base.new }
6
+
7
+ it 'retrieves series' do
8
+ series = uatu.series
9
+
10
+ expect(series.size).to eq 6
11
+ expect(series.first.title).to eq "Alias Vol. 2: Come Home (2003)"
12
+ end
13
+
14
+ it 'retrieves a single serie' do
15
+ serie = uatu.serie(155)
16
+ expect(serie.title).to eq "Alias Vol. 2: Come Home (2003)"
17
+ end
18
+
19
+ end
@@ -0,0 +1,19 @@
1
+ require 'spec_helper'
2
+
3
+ RSpec.describe "Stories" do
4
+
5
+ let(:uatu) { Uatu::Base.new }
6
+
7
+ it 'retrieves stories' do
8
+ stories = uatu.stories
9
+
10
+ expect(stories.size).to eq 7
11
+ expect(stories.first.title).to eq "Interior #1208"
12
+ end
13
+
14
+ it 'retrieves a single story' do
15
+ story = uatu.story(13245)
16
+ expect(story.title).to eq "Fantastic Forum"
17
+ end
18
+
19
+ end
@@ -0,0 +1,18 @@
1
+ require "bundler/setup"
2
+ require "uatu"
3
+ require 'webmock/rspec'
4
+ require 'support/fake_marvel_api'
5
+
6
+ WebMock.disable_net_connect!(allow_localhost: true)
7
+
8
+ RSpec.configure do |config|
9
+ config.example_status_persistence_file_path = ".rspec_status"
10
+
11
+ config.expect_with :rspec do |c|
12
+ c.syntax = :expect
13
+ end
14
+
15
+ config.before(:each) do
16
+ stub_request(:any, /gateway.marvel.com/).to_rack(FakeMarvelApi)
17
+ end
18
+ end
@@ -0,0 +1,24 @@
1
+ require 'sinatra/base'
2
+
3
+ class FakeMarvelApi < Sinatra::Base
4
+ get '/v1/public/:resources' do
5
+ json_response 200, "#{params['resources']}/list.json"
6
+ end
7
+
8
+ get '/v1/public/:resources/:id/:nested_resources' do
9
+ json_response 200, "#{params['nested_resources']}/list.json"
10
+ end
11
+
12
+ get '/v1/public/:resources/:id' do
13
+ json_response 200, "#{params['resources']}/show.json"
14
+ end
15
+
16
+ private
17
+
18
+ def json_response(response_code, file_name)
19
+ content_type :json
20
+ status response_code
21
+ File.open(File.dirname(__FILE__) + '/fake_marvel_api/' + file_name, 'rb').read
22
+ end
23
+
24
+ end
@@ -0,0 +1,381 @@
1
+ {
2
+ "code": 200,
3
+ "status": "Ok",
4
+ "copyright": "© 2017 MARVEL",
5
+ "attributionText": "Data provided by Marvel. © 2017 MARVEL",
6
+ "attributionHTML": "<a href=\"http://marvel.com\">Data provided by Marvel. © 2017 MARVEL</a>",
7
+ "etag": "f4a3b649ee2e7231b6e6b1d68319f7c548dd13f8",
8
+ "data": {
9
+ "offset": 0,
10
+ "limit": 20,
11
+ "total": 1,
12
+ "count": 1,
13
+ "results": [
14
+ {
15
+ "id": 1009262,
16
+ "name": "Daredevil",
17
+ "description": "Abandoned by his mother, Matt Murdock was raised by his father, boxer \"Battling Jack\" Murdock, in Hell's Kitchen. Realizing that rules were needed to prevent people from behaving badly, young Matt decided to study law; however, when he saved a man from an oncoming truck, it spilled a radioactive cargo that rendered Matt blind while enhancing his remaining senses. Under the harsh tutelage of blind martial arts master Stick, Matt mastered his heightened senses and became a formidable fighter.",
18
+ "modified": "2013-07-01T16:44:00-0400",
19
+ "thumbnail": {
20
+ "path": "http://i.annihil.us/u/prod/marvel/i/mg/d/50/50febb79985ee",
21
+ "extension": "jpg"
22
+ },
23
+ "resourceURI": "http://gateway.marvel.com/v1/public/characters/1009262",
24
+ "comics": {
25
+ "available": 922,
26
+ "collectionURI": "http://gateway.marvel.com/v1/public/characters/1009262/comics",
27
+ "items": [
28
+ {
29
+ "resourceURI": "http://gateway.marvel.com/v1/public/comics/29317",
30
+ "name": "ACTS OF VENGEANCE CROSSOVERS OMNIBUS (Hardcover)"
31
+ },
32
+ {
33
+ "resourceURI": "http://gateway.marvel.com/v1/public/comics/29318",
34
+ "name": "ACTS OF VENGEANCE CROSSOVERS OMNIBUS (DM Only) (Hardcover)"
35
+ },
36
+ {
37
+ "resourceURI": "http://gateway.marvel.com/v1/public/comics/37255",
38
+ "name": "Alias Omnibus (Hardcover)"
39
+ },
40
+ {
41
+ "resourceURI": "http://gateway.marvel.com/v1/public/comics/12637",
42
+ "name": "Alpha Flight (1983) #1"
43
+ },
44
+ {
45
+ "resourceURI": "http://gateway.marvel.com/v1/public/comics/12668",
46
+ "name": "Alpha Flight (1983) #127"
47
+ },
48
+ {
49
+ "resourceURI": "http://gateway.marvel.com/v1/public/comics/6233",
50
+ "name": "Alpha Flight Classic Vol. 1 (Trade Paperback)"
51
+ },
52
+ {
53
+ "resourceURI": "http://gateway.marvel.com/v1/public/comics/37894",
54
+ "name": "Amazing Spider-Man (1999) #1"
55
+ },
56
+ {
57
+ "resourceURI": "http://gateway.marvel.com/v1/public/comics/6549",
58
+ "name": "Amazing Spider-Man (1963) #16"
59
+ },
60
+ {
61
+ "resourceURI": "http://gateway.marvel.com/v1/public/comics/6811",
62
+ "name": "Amazing Spider-Man (1963) #396"
63
+ },
64
+ {
65
+ "resourceURI": "http://gateway.marvel.com/v1/public/comics/6848",
66
+ "name": "Amazing Spider-Man (1963) #429"
67
+ },
68
+ {
69
+ "resourceURI": "http://gateway.marvel.com/v1/public/comics/6858",
70
+ "name": "Amazing Spider-Man (1963) #438"
71
+ },
72
+ {
73
+ "resourceURI": "http://gateway.marvel.com/v1/public/comics/5808",
74
+ "name": "Amazing Spider-Man (1999) #538"
75
+ },
76
+ {
77
+ "resourceURI": "http://gateway.marvel.com/v1/public/comics/21504",
78
+ "name": "Amazing Spider-Man (1999) #566"
79
+ },
80
+ {
81
+ "resourceURI": "http://gateway.marvel.com/v1/public/comics/21702",
82
+ "name": "Amazing Spider-Man (1999) #567"
83
+ },
84
+ {
85
+ "resourceURI": "http://gateway.marvel.com/v1/public/comics/23567",
86
+ "name": "Amazing Spider-Man (1999) #587"
87
+ },
88
+ {
89
+ "resourceURI": "http://gateway.marvel.com/v1/public/comics/24407",
90
+ "name": "Amazing Spider-Man (1999) #600"
91
+ },
92
+ {
93
+ "resourceURI": "http://gateway.marvel.com/v1/public/comics/29303",
94
+ "name": "Amazing Spider-Man (1999) #600 (2ND PRINTING VARIANT)"
95
+ },
96
+ {
97
+ "resourceURI": "http://gateway.marvel.com/v1/public/comics/35491",
98
+ "name": "Amazing Spider-Man (1999) #677"
99
+ },
100
+ {
101
+ "resourceURI": "http://gateway.marvel.com/v1/public/comics/16904",
102
+ "name": "Amazing Spider-Man Annual (1964) #3"
103
+ },
104
+ {
105
+ "resourceURI": "http://gateway.marvel.com/v1/public/comics/16889",
106
+ "name": "Amazing Spider-Man Annual (1964) #15"
107
+ }
108
+ ],
109
+ "returned": 20
110
+ },
111
+ "series": {
112
+ "available": 205,
113
+ "collectionURI": "http://gateway.marvel.com/v1/public/characters/1009262/series",
114
+ "items": [
115
+ {
116
+ "resourceURI": "http://gateway.marvel.com/v1/public/series/9994",
117
+ "name": "ACTS OF VENGEANCE CROSSOVERS OMNIBUS (2011)"
118
+ },
119
+ {
120
+ "resourceURI": "http://gateway.marvel.com/v1/public/series/9995",
121
+ "name": "ACTS OF VENGEANCE CROSSOVERS OMNIBUS (DM Only) (2011)"
122
+ },
123
+ {
124
+ "resourceURI": "http://gateway.marvel.com/v1/public/series/13383",
125
+ "name": "Alias Omnibus (2006)"
126
+ },
127
+ {
128
+ "resourceURI": "http://gateway.marvel.com/v1/public/series/2116",
129
+ "name": "Alpha Flight (1983 - 1994)"
130
+ },
131
+ {
132
+ "resourceURI": "http://gateway.marvel.com/v1/public/series/1983",
133
+ "name": "Alpha Flight Classic Vol. 1 (2007)"
134
+ },
135
+ {
136
+ "resourceURI": "http://gateway.marvel.com/v1/public/series/454",
137
+ "name": "Amazing Spider-Man (1999 - 2013)"
138
+ },
139
+ {
140
+ "resourceURI": "http://gateway.marvel.com/v1/public/series/1987",
141
+ "name": "Amazing Spider-Man (1963 - 1998)"
142
+ },
143
+ {
144
+ "resourceURI": "http://gateway.marvel.com/v1/public/series/2984",
145
+ "name": "Amazing Spider-Man Annual (1964 - 2009)"
146
+ },
147
+ {
148
+ "resourceURI": "http://gateway.marvel.com/v1/public/series/6604",
149
+ "name": "Amazing Spider-Man: Extra! (2008 - 2009)"
150
+ },
151
+ {
152
+ "resourceURI": "http://gateway.marvel.com/v1/public/series/6792",
153
+ "name": "Astonishing Tales (2009)"
154
+ },
155
+ {
156
+ "resourceURI": "http://gateway.marvel.com/v1/public/series/1991",
157
+ "name": "Avengers (1963 - 1996)"
158
+ },
159
+ {
160
+ "resourceURI": "http://gateway.marvel.com/v1/public/series/354",
161
+ "name": "Avengers (1998 - 2004)"
162
+ },
163
+ {
164
+ "resourceURI": "http://gateway.marvel.com/v1/public/series/1988",
165
+ "name": "Avengers Annual (1967 - 1994)"
166
+ },
167
+ {
168
+ "resourceURI": "http://gateway.marvel.com/v1/public/series/1340",
169
+ "name": "Avengers Assemble (2004)"
170
+ },
171
+ {
172
+ "resourceURI": "http://gateway.marvel.com/v1/public/series/1496",
173
+ "name": "Avengers Assemble Vol. 2 (2005)"
174
+ },
175
+ {
176
+ "resourceURI": "http://gateway.marvel.com/v1/public/series/1816",
177
+ "name": "Avengers Assemble Vol. 4 (2007)"
178
+ },
179
+ {
180
+ "resourceURI": "http://gateway.marvel.com/v1/public/series/16230",
181
+ "name": "Avengers Vs. X-Men: Versus (2011 - 2012)"
182
+ },
183
+ {
184
+ "resourceURI": "http://gateway.marvel.com/v1/public/series/14246",
185
+ "name": "Avenging Spider-Man (2011 - Present)"
186
+ },
187
+ {
188
+ "resourceURI": "http://gateway.marvel.com/v1/public/series/1503",
189
+ "name": "Best of the Fantastic Four Vol. 1 (2005)"
190
+ },
191
+ {
192
+ "resourceURI": "http://gateway.marvel.com/v1/public/series/819",
193
+ "name": "Black Panther 2099 (2004)"
194
+ }
195
+ ],
196
+ "returned": 20
197
+ },
198
+ "stories": {
199
+ "available": 1490,
200
+ "collectionURI": "http://gateway.marvel.com/v1/public/characters/1009262/stories",
201
+ "items": [
202
+ {
203
+ "resourceURI": "http://gateway.marvel.com/v1/public/stories/1044",
204
+ "name": "2 of 4 - Golden Age",
205
+ "type": "cover"
206
+ },
207
+ {
208
+ "resourceURI": "http://gateway.marvel.com/v1/public/stories/1045",
209
+ "name": "2 of 4 - Golden Age",
210
+ "type": "interiorStory"
211
+ },
212
+ {
213
+ "resourceURI": "http://gateway.marvel.com/v1/public/stories/1056",
214
+ "name": "Cover #1056",
215
+ "type": "cover"
216
+ },
217
+ {
218
+ "resourceURI": "http://gateway.marvel.com/v1/public/stories/1057",
219
+ "name": "Interior #1057",
220
+ "type": "interiorStory"
221
+ },
222
+ {
223
+ "resourceURI": "http://gateway.marvel.com/v1/public/stories/1058",
224
+ "name": "Cover #1058",
225
+ "type": "cover"
226
+ },
227
+ {
228
+ "resourceURI": "http://gateway.marvel.com/v1/public/stories/1059",
229
+ "name": "Interior #1059",
230
+ "type": "interiorStory"
231
+ },
232
+ {
233
+ "resourceURI": "http://gateway.marvel.com/v1/public/stories/1060",
234
+ "name": "Cover #1060",
235
+ "type": "cover"
236
+ },
237
+ {
238
+ "resourceURI": "http://gateway.marvel.com/v1/public/stories/1061",
239
+ "name": "Interior #1061",
240
+ "type": "interiorStory"
241
+ },
242
+ {
243
+ "resourceURI": "http://gateway.marvel.com/v1/public/stories/1062",
244
+ "name": "Cover #1062",
245
+ "type": "cover"
246
+ },
247
+ {
248
+ "resourceURI": "http://gateway.marvel.com/v1/public/stories/1063",
249
+ "name": "Interior #1063",
250
+ "type": "interiorStory"
251
+ },
252
+ {
253
+ "resourceURI": "http://gateway.marvel.com/v1/public/stories/1064",
254
+ "name": "Cover #1064",
255
+ "type": "cover"
256
+ },
257
+ {
258
+ "resourceURI": "http://gateway.marvel.com/v1/public/stories/1065",
259
+ "name": "Interior #1065",
260
+ "type": "interiorStory"
261
+ },
262
+ {
263
+ "resourceURI": "http://gateway.marvel.com/v1/public/stories/1066",
264
+ "name": "Cover #1066",
265
+ "type": "cover"
266
+ },
267
+ {
268
+ "resourceURI": "http://gateway.marvel.com/v1/public/stories/1067",
269
+ "name": "Interior #1067",
270
+ "type": "interiorStory"
271
+ },
272
+ {
273
+ "resourceURI": "http://gateway.marvel.com/v1/public/stories/1068",
274
+ "name": "\"THE WIDOW,\" PART 4 (OF 4) The blistering climax to the sexy 4-part Black Widow storyline (just in time for a certain blistering",
275
+ "type": "cover"
276
+ },
277
+ {
278
+ "resourceURI": "http://gateway.marvel.com/v1/public/stories/1069",
279
+ "name": "\"THE WIDOW,\" PART 4 (OF 4) The blistering climax to the sexy 4-part Black Widow storyline (just in time for a certain blistering",
280
+ "type": "interiorStory"
281
+ },
282
+ {
283
+ "resourceURI": "http://gateway.marvel.com/v1/public/stories/1070",
284
+ "name": "Daredevil headlines this special, oversized issue celebrating both the 40th anniversary of the character AND the 5th anniversary",
285
+ "type": "cover"
286
+ },
287
+ {
288
+ "resourceURI": "http://gateway.marvel.com/v1/public/stories/1071",
289
+ "name": "Daredevil headlines this special, oversized issue celebrating both the 40th anniversary of the character AND the 5th anniversary",
290
+ "type": "interiorStory"
291
+ },
292
+ {
293
+ "resourceURI": "http://gateway.marvel.com/v1/public/stories/1072",
294
+ "name": "\"GOLDEN AGE\" PART 1 (OF 4) Leaping off the pages of last month’s anniversary special, we follow Matt Murdock through a story tha",
295
+ "type": "cover"
296
+ },
297
+ {
298
+ "resourceURI": "http://gateway.marvel.com/v1/public/stories/1073",
299
+ "name": "\"GOLDEN AGE\" PART 1 (OF 4) Leaping off the pages of last month’s anniversary special, we follow Matt Murdock through a story tha",
300
+ "type": "interiorStory"
301
+ }
302
+ ],
303
+ "returned": 20
304
+ },
305
+ "events": {
306
+ "available": 13,
307
+ "collectionURI": "http://gateway.marvel.com/v1/public/characters/1009262/events",
308
+ "items": [
309
+ {
310
+ "resourceURI": "http://gateway.marvel.com/v1/public/events/116",
311
+ "name": "Acts of Vengeance!"
312
+ },
313
+ {
314
+ "resourceURI": "http://gateway.marvel.com/v1/public/events/238",
315
+ "name": "Civil War"
316
+ },
317
+ {
318
+ "resourceURI": "http://gateway.marvel.com/v1/public/events/248",
319
+ "name": "Fall of the Mutants"
320
+ },
321
+ {
322
+ "resourceURI": "http://gateway.marvel.com/v1/public/events/302",
323
+ "name": "Fear Itself"
324
+ },
325
+ {
326
+ "resourceURI": "http://gateway.marvel.com/v1/public/events/252",
327
+ "name": "Inferno"
328
+ },
329
+ {
330
+ "resourceURI": "http://gateway.marvel.com/v1/public/events/29",
331
+ "name": "Infinity War"
332
+ },
333
+ {
334
+ "resourceURI": "http://gateway.marvel.com/v1/public/events/37",
335
+ "name": "Maximum Security"
336
+ },
337
+ {
338
+ "resourceURI": "http://gateway.marvel.com/v1/public/events/263",
339
+ "name": "Mutant Massacre"
340
+ },
341
+ {
342
+ "resourceURI": "http://gateway.marvel.com/v1/public/events/336",
343
+ "name": "Secret Empire"
344
+ },
345
+ {
346
+ "resourceURI": "http://gateway.marvel.com/v1/public/events/269",
347
+ "name": "Secret Invasion"
348
+ },
349
+ {
350
+ "resourceURI": "http://gateway.marvel.com/v1/public/events/271",
351
+ "name": "Secret Wars II"
352
+ },
353
+ {
354
+ "resourceURI": "http://gateway.marvel.com/v1/public/events/59",
355
+ "name": "Shadowland"
356
+ },
357
+ {
358
+ "resourceURI": "http://gateway.marvel.com/v1/public/events/273",
359
+ "name": "Siege"
360
+ }
361
+ ],
362
+ "returned": 13
363
+ },
364
+ "urls": [
365
+ {
366
+ "type": "detail",
367
+ "url": "http://marvel.com/characters/11/daredevil?utm_campaign=apiRef&utm_source=dcc0afa448458533d901bf0ff81da74c"
368
+ },
369
+ {
370
+ "type": "wiki",
371
+ "url": "http://marvel.com/universe/Daredevil_(Matthew_Murdock)?utm_campaign=apiRef&utm_source=dcc0afa448458533d901bf0ff81da74c"
372
+ },
373
+ {
374
+ "type": "comiclink",
375
+ "url": "http://marvel.com/comics/characters/1009262/daredevil?utm_campaign=apiRef&utm_source=dcc0afa448458533d901bf0ff81da74c"
376
+ }
377
+ ]
378
+ }
379
+ ]
380
+ }
381
+ }