marvel_api 0.1.3 → 0.2.0

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: f9d7479fcdd1929f6bfcb85144acf86da8e50be4
4
- data.tar.gz: 822114459097dfb00cfea66892df24aac463c6a3
3
+ metadata.gz: 9133e1fdec31b9c7841f6e23729cd412a10aa310
4
+ data.tar.gz: 96b3b3becbda0afe29f29938444b042f7ec1d974
5
5
  SHA512:
6
- metadata.gz: 1f2ec4602b49b535665b5fb094e15c6a420c6aa34d5042e547308295fafccaa32451c485fd3bf6d552882a0483df3cb4a3f7e6100344328657949af8f7edcd48
7
- data.tar.gz: 42404bc7490247d9afc2b9ef7ed54edce56efb7f4537158964681b42380e0a67ead434a61b0498fdb1fa91c35978c542475ff89b90592bd80048233aee746912
6
+ metadata.gz: 9410f5d4c555781945893a5e618ecfdef1dc48a4bb7d522a8b2f9b6af5f3bcab6d669aac104d88f67ad855e2790796d41f249d09686f56e88af58b323b9325d0
7
+ data.tar.gz: 85b4a94ee6394355350f55819009b6c00c0687b14abf1f84384bba2780a02752edbbd3be441cd375e0bc8e84cfc9628c51fd3c33f1c7c17e6d0a771a5537ac56
data/Gemfile CHANGED
@@ -1,6 +1,7 @@
1
1
  source 'https://rubygems.org'
2
2
 
3
- gem 'faraday', '~> 0.8.9'
3
+ gem 'faraday'
4
+ gem 'faraday_middleware'
4
5
  gem 'hashie'
5
6
 
6
7
  group :development do
data/README.md CHANGED
@@ -1,14 +1,313 @@
1
1
  # marvel_api
2
2
 
3
- Ruby bindings for the [Marvel API](http://developer.marvel.com/). Still under construction... Feel free to contribute!
3
+ Ruby bindings for the [Marvel API](http://developer.marvel.com/). Still under construction... Feel free to contribute! In the meantime, check out the [marvelite](https://github.com/antillas21/marvelite/) gem for something that's further along in development (and likely a lot stabler :-).
4
4
 
5
5
  ## Installation
6
6
 
7
7
  `gem install 'marvel_api'` or add `gem 'marvel_api'` to your Gemfile.
8
8
 
9
- ## Documentation
9
+ ## Configuration
10
10
 
11
- Coming soon.
11
+ You'll need an API key — get yours [here](http://developer.marvel.com). Configure like so:
12
+
13
+ ```ruby
14
+ @client = Marvel::Client.new
15
+
16
+ @client.configure do |config|
17
+ config.api_key = 'YOUR_API_KEY'
18
+ config.private_key = 'YOUR_PRIVATE_KEY'
19
+ end
20
+ ```
21
+
22
+ ## Usage
23
+
24
+ Descriptions and examples of the supported actions are below. Note, all methods currently return a `Hashie:Mash` object if successful. For a more detailed explanation of available actions and an exhaustive list of acceptable query parameters, see Marvel's own developer [documentation](http://developer.marvel.com/docs). Each method described below links to the associated call in Marvel's interactive API tester.
25
+
26
+ ### Characters
27
+
28
+ - Fetches lists of characters. [`GET /v1/public/characters`](http://developer.marvel.com/docs#!/public/getCreatorCollection_get_0)
29
+
30
+ ```ruby
31
+ @client.characters
32
+ @client.characters(name: 'Thanos')
33
+ @client.characters(nameStartsWith: 'Th', orderBy: 'modified')
34
+ ```
35
+
36
+ - Fetches a single character by id. [`GET /v1/public/characters/{characterId}`](http://developer.marvel.com/docs#!/public/getCharacterIndividual_get_1)
37
+
38
+ ```ruby
39
+ @client.character(1009652)
40
+ ```
41
+
42
+ - Fetches lists of comics filtered by a character id. [`GET /v1/public/characters/{characterId}/comics`](http://developer.marvel.com/docs#!/public/getComicsCharacterCollection_get_2)
43
+
44
+ ```ruby
45
+ @client.character_comics(1009652)
46
+ @client.character_comics(1009652, titleStartsWith: 'Infinity', hasDigitalIssue: true)
47
+ ```
48
+
49
+ - Fetches lists of events filtered by a character id. [`GET /v1/public/characters/{characterId}/events`](http://developer.marvel.com/docs#!/public/getCharacterEventsCollection_get_3)
50
+
51
+ ```ruby
52
+ @client.character_events(1009652)
53
+ @client.character_events(1009652, name: 'Infinity Gauntlet')
54
+ ```
55
+
56
+ - Fetches lists of series filtered by a character id. [`GET /v1/public/characters/{characterId}/series`](http://developer.marvel.com/docs#!/public/getCharacterSeriesCollection_get_4)
57
+
58
+ ```ruby
59
+ @client.character_series(1009652)
60
+ @client.character_series(1009652, contains: 'hardcover')
61
+ ```
62
+
63
+ - Fetches lists of stories filtered by a character id. [`GET /v1/public/characters/{characterId}/stories`](http://developer.marvel.com/docs#!/public/getCharacterStoryCollection_get_5)
64
+
65
+ ```ruby
66
+ @client.character_stories(1009652)
67
+ @client.character_stories(1009652, limit: 50)
68
+ ```
69
+
70
+ ### Comics
71
+
72
+ - Fetches lists of comics. [`GET /v1/public/comics`](http://developer.marvel.com/docs#!/public/getComicsCollection_get_6)
73
+
74
+ ```ruby
75
+ @client.comics
76
+ @client.comics(title: 'Daredevil')
77
+ @client.comics(startYear: 1950, issueNumber: 1)
78
+ ```
79
+
80
+ - Fetches a single comic by id. [`GET /v1/public/comics/{comicId}`](http://developer.marvel.com/docs#!/public/getComicIndividual_get_7)
81
+
82
+ ```ruby
83
+ @client.comic(29380)
84
+ ```
85
+
86
+ - Fetches lists of characters filtered by a comic id. [`GET /v1/public/comics/{comicId}/characters`](http://developer.marvel.com/docs#!/public/getComicCharacterCollection_get_8)
87
+
88
+ ```ruby
89
+ @client.comic_characters(34249)
90
+ @client.comic_characters(34249, orderBy: 'name')
91
+ ```
92
+
93
+ - Fetches lists of creators filtered by a comic id. [`GET /v1/public/comics/{comicId}/creators`](http://developer.marvel.com/docs#!/public/getCreatorCollection_get_9)
94
+
95
+ ```ruby
96
+ @client.comic_creators(34249)
97
+ @client.comic_creators(34249, lastNameStartsWith: 'V')
98
+ ```
99
+
100
+ - Fetches lists of events filtered by a comic id. [`GET /v1/public/comics/{comicId}/events`](http://developer.marvel.com/docs#!/public/getIssueEventsCollection_get_10)
101
+
102
+ ```ruby
103
+ @client.comic_events(27272)
104
+ @client.comic_events(27272, orderBy: '-startDate')
105
+ ```
106
+
107
+ - Fetches lists of stories filtered by a comic id. [`GET /v1/public/comics/{comicId}/stories`](http://developer.marvel.com/docs#!/public/getComicStoryCollection_get_11)
108
+
109
+ ```ruby
110
+ @client.comic_stories(27272)
111
+ @client.comic_stories(27272, creators: [600, 801])
112
+ ```
113
+
114
+ ### Creators
115
+
116
+ - Fetches lists of creators. [`GET /v1/public/creators`](http://developer.marvel.com/docs#!/public/getCreatorCollection_get_12)
117
+
118
+ ```ruby
119
+ @client.creators
120
+ @client.creators(firstName: 'Frank', lastName: 'Miller')
121
+ @client.creators(lastNameStartsWith: 'Mo', limit: 20, offset: 20)
122
+
123
+ ```
124
+
125
+ - Fetches a single creator by id. [`GET /v1/public/creators/{creatorId}`](http://developer.marvel.com/docs#!/public/getCreatorIndividual_get_13)
126
+
127
+ ```ruby
128
+ @client.creator(15)
129
+ ```
130
+
131
+ - Fetches lists of comics filtered by a creator id. [`GET /v1/public/creators/{creatorId}/comics`](http://developer.marvel.com/docs#!/public/getComicsCollection_get_14)
132
+
133
+ ```ruby
134
+ @client.creator_comics(15)
135
+ @client.creator_comics(15, format: 'trade paperback')
136
+ ```
137
+
138
+ - Fetches lists of events filtered by a creator id. [`GET /v1/public/creators/{creatorId}/events`](http://developer.marvel.com/docs#!/public/getCreatorEventsCollection_get_15)
139
+
140
+ ```ruby
141
+ @client.creator_events(30)
142
+ @client.creator_events(30, nameStartsWith: 'Civil')
143
+ ```
144
+
145
+ - Fetches lists of series filtered by a creator id. [`GET /v1/public/creators/{creatorId}/series`](http://developer.marvel.com/docs#!/public/getCreatorSeriesCollection_get_16)
146
+
147
+ ```ruby
148
+ @client.creator_series(30)
149
+ @client.creator_series(30, seriesType: 'limited')
150
+ ```
151
+
152
+ - Fetches lists of stories filtered by a creator id. [`GET /v1/public/creators/{creatorId}/stories`](http://developer.marvel.com/docs#!/public/getCreatorStoryCollection_get_17)
153
+
154
+ ```ruby
155
+ @client.creator_stories(30)
156
+ @client.creator_stories(30, limit: 40, offset: 7750)
157
+ ```
158
+
159
+ ### Events
160
+
161
+ - Fetches lists of events. [`GET /v1/public/events`](http://developer.marvel.com/docs#!/public/getEventsCollection_get_18)
162
+
163
+ ```ruby
164
+ @client.events
165
+ @client.events(name: 'Infinity Gauntlet')
166
+ @client.events(characters: [1009156, 1009652])
167
+ ```
168
+
169
+ - Fetches a single event by id. [`GET /v1/public/events/{eventId}`](http://developer.marvel.com/docs#!/public/getEventIndividual_get_19)
170
+
171
+ ```ruby
172
+ @client.event(227)
173
+ ```
174
+
175
+ - Fetches lists of characters filtered by an event id. [`GET /v1/public/events/{eventId}/characters`](http://developer.marvel.com/docs#!/public/getEventCharacterCollection_get_20)
176
+
177
+ ```ruby
178
+ @client.event_characters(227)
179
+ @client.event_characters(227, modifiedSince: '2014-04-29')
180
+ ```
181
+
182
+ - Fetches lists of comics filtered by an event id. [`GET /v1/public/events/{eventId}/comics`](http://developer.marvel.com/docs#!/public/getComicsCollection_get_21)
183
+
184
+ ```ruby
185
+ @client.event_comics(227)
186
+ @client.event_comics(227, hasDigitalIssue: true, orderBy: 'onsaleDate')
187
+ ```
188
+
189
+ - Fetches lists of creators filtered by an event id. [`GET /v1/public/events/{eventId}/creators`](http://developer.marvel.com/docs#!/public/getCreatorCollection_get_22)
190
+
191
+ ```ruby
192
+ @client.event_creators(227)
193
+ @@client.event_creators(227, lastNameStartsWith: 'Lar')
194
+ ```
195
+
196
+ - Fetches lists of series filtered by an event id. [`GET /v1/public/events/{eventId}/series`](http://developer.marvel.com/docs#!/public/getEventSeriesCollection_get_23)
197
+
198
+ ```ruby
199
+ @client.event_series(227)
200
+ @client.event_series(227, startYear: 1995, seriesType: 'limited')
201
+ ```
202
+
203
+ - Fetches lists of stories filtered by an event id. [`GET /v1/public/events/{eventId}/stories`](http://developer.marvel.com/docs#!/public/getEventStoryCollection_get_24)
204
+
205
+ ```ruby
206
+ @client.event_stories(227)
207
+ @client.event_stories(227, orderBy: 'id', limit: 30, offset: 20)
208
+ ```
209
+
210
+ ### Series
211
+
212
+ - Fetches lists of series. [`GET /v1/public/series`](http://developer.marvel.com/docs#!/public/getSeriesCollection_get_25)
213
+
214
+ ```ruby
215
+ @client.series
216
+ @client.series(title: 'Uncanny X-Men')
217
+ @client.series(titleStartsWith: 'Astonishing', orderBy: 'startDate', limit: 100)
218
+ ```
219
+
220
+ - Fetches a single comic series by id. [`GET /v1/public/series/{seriesId}`](http://developer.marvel.com/docs#!/public/getSeriesIndividual_get_26)
221
+
222
+ ```ruby
223
+ @client.serie(354)
224
+ ```
225
+
226
+ - Fetches lists of characters filtered by a series id. [`GET /v1/public/series/{seriesId}/characters`](http://developer.marvel.com/docs#!/public/getSeriesCharacterWrapper_get_27)
227
+
228
+ ```ruby
229
+ @client.series_characters(354)
230
+ @client.series_characters(354, nameStartsWith: 'Iron')
231
+ ```
232
+
233
+ - Fetches lists of comics filtered by a series id. [`GET /v1/public/series/{seriesId}/comics`](http://developer.marvel.com/docs#!/public/getComicsCollection_get_28)
234
+
235
+ ```ruby
236
+ @client.series_comics(354)
237
+ @client.series_comics(354, issueNumber: 1)
238
+ ```
239
+
240
+ - Fetches lists of creators filtered by a series id. [`GET /v1/public/series/{seriesId}/creators`](http://developer.marvel.com/docs#!/public/getCreatorCollection_get_29)
241
+
242
+ ```ruby
243
+ @client.series_creators(354)
244
+ @client.series_creators(354, lastName: 'Kirby')
245
+ ```
246
+
247
+ - Fetches lists of events filtered by a series id. [`GET /v1/public/series/{seriesId}/events`](http://developer.marvel.com/docs#!/public/getEventsCollection_get_30)
248
+
249
+ ```ruby
250
+ @client.series_events(354)
251
+ @client.series_events(354, orderBy: 'startDate')
252
+ ```
253
+
254
+ - Fetches lists of stories filtered by a series id. [`GET /v1/public/series/{seriesId}/stories`](http://developer.marvel.com/docs#!/public/getSeriesStoryCollection_get_31)
255
+
256
+ ```ruby
257
+ @client.series_stories(354)
258
+ @client.series_stories(354, modifiedSince: '2013-06-01')
259
+ ```
260
+
261
+ ### Stories
262
+
263
+ - Fetches lists of stories. [`GET /v1/public/stories`](http://developer.marvel.com/docs#!/public/getStoryCollection_get_32)
264
+
265
+ ```ruby
266
+ @client.stories
267
+ @client.stories(creators: 15)
268
+ @client.stories(characters: [1009156, 1009652], orderBy: '-modified')
269
+ ```
270
+
271
+ - Fetches a single comic story by id. [`GET /v1/public/stories/{storyId}`](http://developer.marvel.com/docs#!/public/getStoryIndividual_get_33)
272
+
273
+ ```ruby
274
+ @client.story(6320)
275
+ ```
276
+
277
+ - Fetches lists of characters filtered by a story id. [`GET /v1/public/stories/{storyId}/characters`](http://developer.marvel.com/docs#!/public/getCreatorCollection_get_34)
278
+
279
+ ```ruby
280
+ @client.story_characters(14410)
281
+ @client.story_characters(14410, nameStartsWith: 'D')
282
+ ```
283
+
284
+ - Fetches lists of comics filtered by a story id. [`GET /v1/public/stories/{storyId}/comics`](http://developer.marvel.com/docs#!/public/getComicsCollection_get_35)
285
+
286
+ ```ruby
287
+ @client.story_comics(126)
288
+ @client.story_comics(126, format: 'trade paperback')
289
+ ```
290
+
291
+ - Fetches lists of creators filtered by a story id. [`GET /v1/public/stories/{storyId}/creators`](http://developer.marvel.com/docs#!/public/getCreatorCollection_get_36)
292
+
293
+ ```ruby
294
+ @client.story_creators(126)
295
+ @client.story_creators(126, lastNameStartsWith: 'S')
296
+ ```
297
+
298
+ - Fetches lists of events filtered by a story id. [`GET /v1/public/stories/{storyId}/events`](http://developer.marvel.com/docs#!/public/getEventsCollection_get_37)
299
+
300
+ ```ruby
301
+ @client.story_events(12964)
302
+ @client.story_events(12964, orderBy: 'name')
303
+ ```
304
+
305
+ - Fetches lists of series filtered by a story id. [`GET /v1/public/stories/{storyId}/series`](http://developer.marvel.com/docs#!/public/getStorySeriesCollection_get_38)
306
+
307
+ ```ruby
308
+ @client.story_series(126)
309
+ @client.story_series(126, titleStartsWith: 'Infinity')
310
+ ```
12
311
 
13
312
  ## Contributing to marvel_api
14
313
 
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.1.3
1
+ 0.2.0
@@ -37,234 +37,248 @@ module Marvel
37
37
  # Characters:
38
38
 
39
39
  # fetches lists of characters
40
- def get_characters
40
+ def characters(options = {})
41
41
  # v1/public/characters
42
+ get('characters', options)
42
43
  end
43
44
 
44
45
  # fetches a single character by id
45
- def get_character(id)
46
+ def character(id, options = {})
46
47
  # v1/public/characters/{characterId}
47
- get("characters/#{id}#{auth}")
48
+ get("characters/#{id}", options)
48
49
  end
49
50
 
50
51
  # fetches lists of comics filtered by a character id
51
- def get_comics_by_character_id(id)
52
+ def character_comics(id, options = {})
52
53
  # v1/public/characters/{characterId}/comics
53
- get("characters/#{id}/comics#{auth}")
54
+ get("characters/#{id}/comics", options)
54
55
  end
55
56
 
56
57
  # fetches lists of events filtered by a character id
57
- def get_events_by_character_id(id)
58
+ def character_events(id, options = {})
58
59
  # v1/public/characters/{characterId}/events
59
- get("characters/#{id}/events#{auth}")
60
+ get("characters/#{id}/events", options)
61
+ end
62
+
63
+ # fetches lists of series filtered by a character id
64
+ def character_series(id, options = {})
65
+ # vi/public/characters/{characterId}/series
66
+ get("characters/#{id}/series", options)
60
67
  end
61
68
 
62
69
  # fetches lists of stories filtered by a character id
63
- def get_stories_by_character_id(id)
70
+ def character_stories(id, options = {})
64
71
  # v1/public/characters/{characterId}/stories
65
- get("characters/#{id}/stories#{auth}")
72
+ get("characters/#{id}/stories", options)
66
73
  end
67
74
 
68
75
  # Comics:
69
76
 
70
77
  # fetches lists of comics
71
- def get_comics
78
+ def comics(options = {})
72
79
  # v1/public/comics
80
+ get('comics', options)
73
81
  end
74
82
 
75
83
  # fetches a single comic by id
76
- def get_comic(id)
84
+ def comic(id, options = {})
77
85
  # v1/public/comics/{comicId}
78
- get("comics/#{id}#{auth}")
86
+ get("comics/#{id}", options)
79
87
  end
80
88
 
81
89
  # fetches lists of characters filtered by a comic id
82
- def get_characters_by_comic_id(id)
90
+ def comic_characters(id, options = {})
83
91
  # v1/public/comics/{comicId}/characters
84
- get("comics/#{id}/characters#{auth}")
92
+ get("comics/#{id}/characters", options)
85
93
  end
86
94
 
87
95
  # fetches lists of creators filtered by a comic id
88
- def get_creators_by_comic_id(id)
96
+ def comic_creators(id, options = {})
89
97
  # v1/public/comics/{comicId}/creators
90
- get("comics/#{id}/creators#{auth}")
98
+ get("comics/#{id}/creators", options)
91
99
  end
92
100
 
93
101
  # fetches lists of events filtered by a comic id
94
- def get_events_by_comic_id(id)
102
+ def comic_events(id, options = {})
95
103
  # v1/public/comics/{comicId}/events
96
- get("comics/#{id}/events#{auth}")
104
+ get("comics/#{id}/events", options)
97
105
  end
98
106
 
99
107
  # fetches lists of stories filtered by a comic id
100
- def get_stories_by_comic_id(id)
108
+ def comic_stories(id, options = {})
101
109
  # v1/public/comics/{comicId}/stories
102
- get("comics/#{id}/stories#{auth}")
110
+ get("comics/#{id}/stories", options)
103
111
  end
104
112
 
105
113
  # Creators:
106
114
 
107
115
  # fetches lists of creators
108
- def get_creators
116
+ def creators(options = {})
109
117
  # v1/public/creators
118
+ get('creators', options)
110
119
  end
111
120
 
112
121
  # fetches a single creator by id
113
- def get_creator(id)
122
+ def creator(id, options = {})
114
123
  # v1/public/creators/{creatorId}
115
- get("creators/#{id}#{auth}")
124
+ get("creators/#{id}", options)
116
125
  end
117
126
 
118
127
  # fetches lists of comics filtered by a creator id
119
- def get_comics_by_creator_id(id)
128
+ def creator_comics(id, options = {})
120
129
  # v1/public/creators/{creatorId}/comics
121
- get("creators/#{id}/comics#{auth}")
130
+ get("creators/#{id}/comics", options)
122
131
  end
123
132
 
124
133
  # fetches lists of events filtered by a creator id
125
- def get_events_by_creator_id(id)
134
+ def creator_events(id, options = {})
126
135
  # v1/public/creators/{creatorId}/events
127
- get("creators/#{id}/events#{auth}")
136
+ get("creators/#{id}/events", options)
137
+ end
138
+
139
+ # fetches lists of series filtered by a creator id
140
+ def creator_series(id, options = {})
141
+ # v1/public/creators/{creatorId}/series
142
+ get("creators/#{id}/series", options)
128
143
  end
129
144
 
130
145
  # fetches lists of stories filtered by a creator id
131
- def get_stories_by_creator_id(id)
146
+ def creator_stories(id, options = {})
132
147
  # v1/public/creators/{creatorId}/stories
133
- get("creators/#{id}/stories#{auth}")
148
+ get("creators/#{id}/stories", options)
134
149
  end
135
150
 
136
151
  # Events:
137
152
 
138
153
  # fetches lists of events
139
- def get_events
154
+ def events(options = {})
140
155
  # v1/public/events
156
+ get('events', options)
141
157
  end
142
158
 
143
159
  # fetches a single event by id
144
- def get_event(id)
160
+ def event(id, options = {})
145
161
  # v1/public/events/{eventId}
146
- get("events/#{id}#{auth}")
162
+ get("events/#{id}", options)
147
163
  end
148
164
 
149
165
  # fetches lists of characters filtered by an event id
150
- def get_characters_by_event_id(id)
166
+ def event_characters(id, options = {})
151
167
  # v1/public/events/{eventId}/characters
152
- get("events/#{id}/characters#{auth}")
168
+ get("events/#{id}/characters", options)
153
169
  end
154
170
 
155
171
  # fetches lists of comics filtered by an event id
156
- def get_comics_by_event_id(id)
172
+ def event_comics(id, options = {})
157
173
  # v1/public/events/{eventId}/comics
158
- get("events/#{id}/comics#{auth}")
174
+ get("events/#{id}/comics", options)
159
175
  end
160
176
 
161
177
  # fetches lists of creators filtered by an event id
162
- def get_creators_by_event_id(id)
178
+ def event_creators(id, options = {})
163
179
  # v1/public/events/{eventId}/creators
164
- get("events/#{id}/creators#{auth}")
180
+ get("events/#{id}/creators", options)
181
+ end
182
+
183
+ # fetches lists of series filtered by an event id
184
+ def event_series(id, options = {})
185
+ # vi/public/events/{eventId}/series
186
+ get("events/#{id}/series", options)
165
187
  end
166
188
 
167
189
  # fetches lists of stories filtered by an event id
168
- def get_stories_by_event_id(id)
190
+ def event_stories(id, options = {})
169
191
  # v1/public/events/{eventId}/stories
170
- get("events/#{id}/stories#{auth}")
192
+ get("events/#{id}/stories", options)
171
193
  end
172
194
 
173
195
 
174
196
  # Series:
175
197
 
176
198
  # fetches lists of series
177
- def get_series
199
+ def series(options = {})
178
200
  # v1/public/series
201
+ get('series', options)
179
202
  end
180
203
 
181
204
  # fetches a single comic series by id
182
- def get_series_by_id(id)
205
+ def serie(id, options = {})
183
206
  # v1/public/series/{seriesId}
184
- get("series/#{id}#{auth}")
207
+ get("series/#{id}", options)
185
208
  end
186
209
 
187
210
  # fetches lists of characters filtered by a series id
188
- def get_characters_by_series_id(id)
211
+ def series_characters(id, options = {})
189
212
  # v1/public/series/{seriesId}/characters
190
- get("series/#{id}/characters#{auth}")
213
+ get("series/#{id}/characters", options)
191
214
  end
192
215
 
193
216
  # fetches lists of comics filtered by a series id
194
- def get_comics_by_series_id(id)
217
+ def series_comics(id, options = {})
195
218
  # v1/public/series/{seriesId}/comics
196
- get("series/#{id}/comics#{auth}")
219
+ get("series/#{id}/comics", options)
197
220
  end
198
221
 
199
222
  # fetches lists of creators filtered by a series id
200
- def get_creators_by_series_id(id)
223
+ def series_creators(id, options = {})
201
224
  # v1/public/series/{seriesId}/creators
202
- get("series/#{id}/creators#{auth}")
225
+ get("series/#{id}/creators", options)
203
226
  end
204
227
 
205
228
  # fetches lists of events filtered by a series id
206
- def get_events_by_series_id(id)
229
+ def series_events(id, options = {})
207
230
  # v1/public/series/{seriesId}/events
208
- get("series/#{id}/events#{auth}")
231
+ get("series/#{id}/events", options)
209
232
  end
210
233
 
211
234
  # fetches lists of stories filtered by a series id
212
- def get_stories_by_series_id(id)
235
+ def series_stories(id, options = {})
213
236
  # v1/public/series/{seriesId}/stories
214
- get("series/#{id}/stories#{auth}")
237
+ get("series/#{id}/stories", options)
215
238
  end
216
239
 
217
240
  # Stories:
218
241
 
219
242
  # fetches lists of stories
220
- def get_stories
243
+ def stories(options = {})
221
244
  # v1/public/stories
245
+ get('stories', options)
222
246
  end
223
247
 
224
248
  # fetches a single comic story by id
225
- def get_story(id)
249
+ def story(id, options = {})
226
250
  # v1/public/stories/{storyId}
227
- get("stories/#{id}#{auth}")
251
+ get("stories/#{id}", options)
228
252
  end
229
253
 
230
254
  # fetches lists of characters filtered by a story id
231
- def get_characters_by_story_id(id)
255
+ def story_characters(id, options = {})
232
256
  # v1/public/stories/{storyId}/characters
233
- get("stories/#{id}/characters#{auth}")
257
+ get("stories/#{id}/characters", options)
234
258
  end
235
259
 
236
260
  # fetches lists of comics filtered by a story id
237
- def get_comics_by_story_id(id)
261
+ def story_comics(id, options = {})
238
262
  # v1/public/stories/{storyId}/comics
239
- get("stories/#{id}/comics#{auth}")
263
+ get("stories/#{id}/comics", options)
240
264
  end
241
265
 
242
266
  # fetches lists of creators filtered by a story id
243
- def get_creators_by_story_id(id)
267
+ def story_creators(id, options = {})
244
268
  # v1/public/stories/{storyId}/creators
245
- get("stories/#{id}/creators#{auth}")
269
+ get("stories/#{id}/creators", options)
246
270
  end
247
271
 
248
272
  # fetches lists of events filtered by a story id
249
- def get_events_by_story_id(id)
273
+ def story_events(id, options = {})
250
274
  # v1/public/stories/{storyId}/events
251
- get("stories/#{id}/events#{auth}")
252
- end
253
-
254
- private
255
-
256
- def auth
257
- ts = timestamp
258
- hsh = hash(ts)
259
- "?ts=#{ts}&apikey=#{api_key}&hash=#{hsh}"
260
- end
261
-
262
- def hash(ts)
263
- Digest::MD5.hexdigest(ts + private_key + api_key)
275
+ get("stories/#{id}/events", options)
264
276
  end
265
277
 
266
- def timestamp
267
- Time.now.to_s
278
+ # fetches lists of series filtered by a story id
279
+ def story_series(id, options = {})
280
+ # v1/public/stories/{storyId}/series
281
+ get("stories/#{id}/series", options)
268
282
  end
269
283
  end
270
284
  end
@@ -6,11 +6,25 @@ module Marvel
6
6
 
7
7
  private
8
8
 
9
- def request(method, path, options)
9
+ def request(method, path, options = {})
10
10
  response = connection.send(method) do |request|
11
- request.url(path, options)
11
+ request.url(path, options.merge(auth))
12
12
  end
13
13
  response.body
14
14
  end
15
+
16
+ def auth
17
+ ts = timestamp
18
+ hsh = hash(ts)
19
+ { ts: ts, apikey: api_key, hash: hsh }
20
+ end
21
+
22
+ def hash(ts)
23
+ Digest::MD5.hexdigest(ts + private_key + api_key)
24
+ end
25
+
26
+ def timestamp
27
+ Time.now.to_s
28
+ end
15
29
  end
16
30
  end
@@ -2,15 +2,16 @@
2
2
  # DO NOT EDIT THIS FILE DIRECTLY
3
3
  # Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
4
4
  # -*- encoding: utf-8 -*-
5
- # stub: marvel_api 0.1.3 ruby lib
5
+ # stub: marvel_api 0.2.0 ruby lib
6
6
 
7
7
  Gem::Specification.new do |s|
8
8
  s.name = "marvel_api"
9
- s.version = "0.1.3"
9
+ s.version = "0.2.0"
10
10
 
11
11
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
12
+ s.require_paths = ["lib"]
12
13
  s.authors = ["Rahul Hor\u{e9}"]
13
- s.date = "2014-02-14"
14
+ s.date = "2014-05-20"
14
15
  s.description = "Marvel_API is a Ruby gem that lets you explore the Marvel Universe like never before."
15
16
  s.email = "hore.rahul@gmail.com"
16
17
  s.extra_rdoc_files = [
@@ -31,20 +32,21 @@ Gem::Specification.new do |s|
31
32
  "lib/marvel/request.rb",
32
33
  "lib/marvel_api.rb",
33
34
  "marvel_api.gemspec",
34
- "spec/marvel_spec.rb",
35
+ "spec/marvel_api/client_spec.rb",
36
+ "spec/marvel_api_spec.rb",
35
37
  "spec/spec_helper.rb"
36
38
  ]
37
39
  s.homepage = "http://github.com/O-I/marvel"
38
40
  s.licenses = ["MIT"]
39
- s.require_paths = ["lib"]
40
- s.rubygems_version = "2.1.9"
41
+ s.rubygems_version = "2.2.2"
41
42
  s.summary = "Ruby bindings for the Marvel API"
42
43
 
43
44
  if s.respond_to? :specification_version then
44
45
  s.specification_version = 4
45
46
 
46
47
  if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
47
- s.add_runtime_dependency(%q<faraday>, ["~> 0.8.9"])
48
+ s.add_runtime_dependency(%q<faraday>, [">= 0"])
49
+ s.add_runtime_dependency(%q<faraday_middleware>, [">= 0"])
48
50
  s.add_runtime_dependency(%q<hashie>, [">= 0"])
49
51
  s.add_development_dependency(%q<pry>, [">= 0"])
50
52
  s.add_development_dependency(%q<rspec>, [">= 0"])
@@ -54,7 +56,8 @@ Gem::Specification.new do |s|
54
56
  s.add_development_dependency(%q<jeweler>, ["~> 1.8.7"])
55
57
  s.add_development_dependency(%q<simplecov>, [">= 0"])
56
58
  else
57
- s.add_dependency(%q<faraday>, ["~> 0.8.9"])
59
+ s.add_dependency(%q<faraday>, [">= 0"])
60
+ s.add_dependency(%q<faraday_middleware>, [">= 0"])
58
61
  s.add_dependency(%q<hashie>, [">= 0"])
59
62
  s.add_dependency(%q<pry>, [">= 0"])
60
63
  s.add_dependency(%q<rspec>, [">= 0"])
@@ -65,7 +68,8 @@ Gem::Specification.new do |s|
65
68
  s.add_dependency(%q<simplecov>, [">= 0"])
66
69
  end
67
70
  else
68
- s.add_dependency(%q<faraday>, ["~> 0.8.9"])
71
+ s.add_dependency(%q<faraday>, [">= 0"])
72
+ s.add_dependency(%q<faraday_middleware>, [">= 0"])
69
73
  s.add_dependency(%q<hashie>, [">= 0"])
70
74
  s.add_dependency(%q<pry>, [">= 0"])
71
75
  s.add_dependency(%q<rspec>, [">= 0"])
@@ -0,0 +1,7 @@
1
+ require 'spec_helper'
2
+
3
+ describe Marvel::Client do
4
+ before do
5
+ @client = Marvel::Client.new
6
+ end
7
+ end
@@ -0,0 +1,9 @@
1
+ require File.expand_path(File.dirname(__FILE__) + '/spec_helper')
2
+
3
+ describe 'Marvel' do
4
+ describe '.new' do
5
+ it 'should return a Marvel::Client' do
6
+ Marvel.new.should be_a Marvel::Client
7
+ end
8
+ end
9
+ end
@@ -1,7 +1,7 @@
1
1
  $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
2
2
  $LOAD_PATH.unshift(File.dirname(__FILE__))
3
3
  require 'rspec'
4
- require 'marvel'
4
+ require 'marvel_api'
5
5
 
6
6
  # Requires supporting files with custom matchers and macros, etc,
7
7
  # in ./support/ and its subdirectories.
metadata CHANGED
@@ -1,139 +1,153 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: marvel_api
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.3
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Rahul Horé
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-02-14 00:00:00.000000000 Z
11
+ date: 2014-05-20 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: faraday
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - ~>
17
+ - - ">="
18
18
  - !ruby/object:Gem::Version
19
- version: 0.8.9
19
+ version: '0'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - ~>
24
+ - - ">="
25
25
  - !ruby/object:Gem::Version
26
- version: 0.8.9
26
+ version: '0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: faraday_middleware
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
27
41
  - !ruby/object:Gem::Dependency
28
42
  name: hashie
29
43
  requirement: !ruby/object:Gem::Requirement
30
44
  requirements:
31
- - - '>='
45
+ - - ">="
32
46
  - !ruby/object:Gem::Version
33
47
  version: '0'
34
48
  type: :runtime
35
49
  prerelease: false
36
50
  version_requirements: !ruby/object:Gem::Requirement
37
51
  requirements:
38
- - - '>='
52
+ - - ">="
39
53
  - !ruby/object:Gem::Version
40
54
  version: '0'
41
55
  - !ruby/object:Gem::Dependency
42
56
  name: pry
43
57
  requirement: !ruby/object:Gem::Requirement
44
58
  requirements:
45
- - - '>='
59
+ - - ">="
46
60
  - !ruby/object:Gem::Version
47
61
  version: '0'
48
62
  type: :development
49
63
  prerelease: false
50
64
  version_requirements: !ruby/object:Gem::Requirement
51
65
  requirements:
52
- - - '>='
66
+ - - ">="
53
67
  - !ruby/object:Gem::Version
54
68
  version: '0'
55
69
  - !ruby/object:Gem::Dependency
56
70
  name: rspec
57
71
  requirement: !ruby/object:Gem::Requirement
58
72
  requirements:
59
- - - '>='
73
+ - - ">="
60
74
  - !ruby/object:Gem::Version
61
75
  version: '0'
62
76
  type: :development
63
77
  prerelease: false
64
78
  version_requirements: !ruby/object:Gem::Requirement
65
79
  requirements:
66
- - - '>='
80
+ - - ">="
67
81
  - !ruby/object:Gem::Version
68
82
  version: '0'
69
83
  - !ruby/object:Gem::Dependency
70
84
  name: shoulda
71
85
  requirement: !ruby/object:Gem::Requirement
72
86
  requirements:
73
- - - '>='
87
+ - - ">="
74
88
  - !ruby/object:Gem::Version
75
89
  version: '0'
76
90
  type: :development
77
91
  prerelease: false
78
92
  version_requirements: !ruby/object:Gem::Requirement
79
93
  requirements:
80
- - - '>='
94
+ - - ">="
81
95
  - !ruby/object:Gem::Version
82
96
  version: '0'
83
97
  - !ruby/object:Gem::Dependency
84
98
  name: rdoc
85
99
  requirement: !ruby/object:Gem::Requirement
86
100
  requirements:
87
- - - ~>
101
+ - - "~>"
88
102
  - !ruby/object:Gem::Version
89
103
  version: '3.12'
90
104
  type: :development
91
105
  prerelease: false
92
106
  version_requirements: !ruby/object:Gem::Requirement
93
107
  requirements:
94
- - - ~>
108
+ - - "~>"
95
109
  - !ruby/object:Gem::Version
96
110
  version: '3.12'
97
111
  - !ruby/object:Gem::Dependency
98
112
  name: bundler
99
113
  requirement: !ruby/object:Gem::Requirement
100
114
  requirements:
101
- - - ~>
115
+ - - "~>"
102
116
  - !ruby/object:Gem::Version
103
117
  version: '1.0'
104
118
  type: :development
105
119
  prerelease: false
106
120
  version_requirements: !ruby/object:Gem::Requirement
107
121
  requirements:
108
- - - ~>
122
+ - - "~>"
109
123
  - !ruby/object:Gem::Version
110
124
  version: '1.0'
111
125
  - !ruby/object:Gem::Dependency
112
126
  name: jeweler
113
127
  requirement: !ruby/object:Gem::Requirement
114
128
  requirements:
115
- - - ~>
129
+ - - "~>"
116
130
  - !ruby/object:Gem::Version
117
131
  version: 1.8.7
118
132
  type: :development
119
133
  prerelease: false
120
134
  version_requirements: !ruby/object:Gem::Requirement
121
135
  requirements:
122
- - - ~>
136
+ - - "~>"
123
137
  - !ruby/object:Gem::Version
124
138
  version: 1.8.7
125
139
  - !ruby/object:Gem::Dependency
126
140
  name: simplecov
127
141
  requirement: !ruby/object:Gem::Requirement
128
142
  requirements:
129
- - - '>='
143
+ - - ">="
130
144
  - !ruby/object:Gem::Version
131
145
  version: '0'
132
146
  type: :development
133
147
  prerelease: false
134
148
  version_requirements: !ruby/object:Gem::Requirement
135
149
  requirements:
136
- - - '>='
150
+ - - ">="
137
151
  - !ruby/object:Gem::Version
138
152
  version: '0'
139
153
  description: Marvel_API is a Ruby gem that lets you explore the Marvel Universe like
@@ -145,8 +159,8 @@ extra_rdoc_files:
145
159
  - LICENSE.txt
146
160
  - README.md
147
161
  files:
148
- - .document
149
- - .rspec
162
+ - ".document"
163
+ - ".rspec"
150
164
  - Gemfile
151
165
  - LICENSE.txt
152
166
  - README.md
@@ -158,7 +172,8 @@ files:
158
172
  - lib/marvel/request.rb
159
173
  - lib/marvel_api.rb
160
174
  - marvel_api.gemspec
161
- - spec/marvel_spec.rb
175
+ - spec/marvel_api/client_spec.rb
176
+ - spec/marvel_api_spec.rb
162
177
  - spec/spec_helper.rb
163
178
  homepage: http://github.com/O-I/marvel
164
179
  licenses:
@@ -170,17 +185,17 @@ require_paths:
170
185
  - lib
171
186
  required_ruby_version: !ruby/object:Gem::Requirement
172
187
  requirements:
173
- - - '>='
188
+ - - ">="
174
189
  - !ruby/object:Gem::Version
175
190
  version: '0'
176
191
  required_rubygems_version: !ruby/object:Gem::Requirement
177
192
  requirements:
178
- - - '>='
193
+ - - ">="
179
194
  - !ruby/object:Gem::Version
180
195
  version: '0'
181
196
  requirements: []
182
197
  rubyforge_project:
183
- rubygems_version: 2.1.9
198
+ rubygems_version: 2.2.2
184
199
  signing_key:
185
200
  specification_version: 4
186
201
  summary: Ruby bindings for the Marvel API
@@ -1,9 +0,0 @@
1
- require File.expand_path(File.dirname(__FILE__) + '/spec_helper')
2
-
3
- describe 'Marvel' do
4
-
5
- it "should" do
6
- # some awesome testing
7
- end
8
-
9
- end