marvelite 0.0.7 → 0.0.8

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 0920ba0d8d09905c5cbd3e78bb498282720f74f3
4
- data.tar.gz: 17dac9bb708803ac72f2e794b00c16aa8fc07556
3
+ metadata.gz: 9fae621a9e418a9fe75672e1396eb40051c5cdc3
4
+ data.tar.gz: 41780b252611dd2583165018b35b4714bacc641d
5
5
  SHA512:
6
- metadata.gz: 63563cc6d1c331ff89de9a11c0ae3320f2da04b46a17ca4ae3d4189189909899b40dc7db5e228013c57ea9100a96e6c24060caf6b731737fba19d84c5038f3c0
7
- data.tar.gz: 35bcb42b1b458f5b892b8ec3be097430e6815a1acf9d4b0b043afedbe74933824ad32a3ca25421c7b6d191dc5835817ad0952e43b6e2f261853a4562581aa291
6
+ metadata.gz: fc07167d0661bf2ef69613946f72c8ce14bf22cceaacbabdfc6c1b0c1f0dde638fa6d3558a5671ad0d151cd5be566eb22b856dfef374c4469a4a1cae14d3358c
7
+ data.tar.gz: 03d5d7bae87bd64d4f5ebc0839fe0bc4b6f2da3781f2562a0bebe7bce8e633dae0db1524e5c64d650c58b6fd78c8df3c6f512c0e7646d183820edca862cc1d23
data/CHANGELOG.md CHANGED
@@ -1,5 +1,17 @@
1
1
  ## Changelog
2
2
 
3
+ ### 0.0.8
4
+ * Fixes a problem where the `Marvelite::API::Router` was replacing the value of its return path string when asked for a route. Thanks to [Patrick Hereford (@phereford)](https://github.com/phereford) for reporting the issue.
5
+
6
+ ### 0.0.7
7
+ * Adds the following endpoints:
8
+ * retrieve stories by connecting to the API's `/stories` endpoint
9
+ * retieve a story by connecting to the API's `/stories/:id` enpoint
10
+ * retrieve story characters by connecting to the API's `/stories/:id/characters` endpoint.
11
+ * retrieve story comics by connecting to the API's `/stories/:id/comics` endpoint.
12
+ * retrieve story creators by connecting to the API's `/stories/:id/creators` endpoint.
13
+ * retrieve story events by connecting to the API's `/stories/:id/events` endpoint.
14
+
3
15
  ### 0.0.6
4
16
  * Rewrites `Marvelite::API::Client` to allow for self discovery of available methods, depending on the `Marvelite::API::Router` injected at initialization.
5
17
  * Adds the following endpoints:
@@ -45,7 +45,7 @@ module Marvelite
45
45
  def find_by_name_or_title(endpoint, column, value)
46
46
  response = self.send(endpoint, { column.to_sym => value })
47
47
  return false unless response[:data][:count] > 0
48
- response.id = response[:data][:results][0][:id]
48
+ response[:id] = response[:data][:results][0][:id]
49
49
  response
50
50
  end
51
51
 
@@ -79,11 +79,12 @@ module Marvelite
79
79
  endpoint = route.split("_")[0]+"s"
80
80
  resource = find_by_name_or_title(endpoint.to_sym, :name, id)
81
81
  return false unless resource
82
- resource.id
82
+ resource[:id]
83
83
  end
84
84
 
85
85
  def build_methods
86
- @router.routes.each do |name, _|
86
+ @router.routes.each do |_, hash|
87
+ name = hash[:name]
87
88
  self.class.send(:define_method, name) do |*args|
88
89
  params = process_arguments(*args)
89
90
  response = fetch_response(name, params)
@@ -6,9 +6,8 @@ module Marvelite
6
6
 
7
7
  def initialize(attrs = {})
8
8
  @api_version = attrs.fetch(:api_version) { 'v1' }
9
- @routes = []
9
+ @routes = {}
10
10
  load_routes_from_file("#{api_version}.yml")
11
- map_routes
12
11
  end
13
12
 
14
13
  def inspect
@@ -28,21 +27,24 @@ module Marvelite
28
27
  end
29
28
 
30
29
  def add_route(name, endpoint)
31
- route = [name, endpoint]
32
- routes << route
30
+ routes["#{name}_path".to_sym] = { :name => name, :endpoint => endpoint }
33
31
  end
34
32
 
35
- def map_routes
36
- routes.each do |name, endpoint|
37
- self.class.send(:define_method, "#{name}_path") do |params = {}|
38
- params
39
- params.each do |p_key, p_value|
33
+ def method_missing(method, *args, &block)
34
+ if routes.keys.include?(method)
35
+ endpoint = "#{routes[method][:endpoint]}"
36
+ params = *args
37
+ if params.any?
38
+ params[0].each do |p_key, p_value|
40
39
  endpoint.gsub!(":#{p_key.to_s}", p_value.to_s)
41
40
  end
42
- "/#{api_version}#{endpoint}"
43
41
  end
42
+ "/#{api_version}#{endpoint}"
43
+ else
44
+ super
44
45
  end
45
46
  end
47
+
46
48
  end
47
49
  end
48
50
  end
@@ -1,3 +1,3 @@
1
1
  module Marvelite
2
- VERSION = "0.0.7"
2
+ VERSION = "0.0.8"
3
3
  end
@@ -0,0 +1,274 @@
1
+ {
2
+ "code": 200,
3
+ "status": "Ok",
4
+ "etag": "0008d7adbeae74e36a2196b902d36aba282c8ca2",
5
+ "data": {
6
+ "offset": 0,
7
+ "limit": 20,
8
+ "total": 1,
9
+ "count": 1,
10
+ "results": [
11
+ {
12
+ "id": 1009227,
13
+ "name": "Carnage",
14
+ "description": "",
15
+ "modified": "2011-11-09T17:46:06-0500",
16
+ "thumbnail": {
17
+ "path": "http://i.annihil.us/u/prod/marvel/i/mg/c/20/4ebb024c894db",
18
+ "extension": "jpg"
19
+ },
20
+ "resourceURI": "http://gateway.marvel.com/v1/public/characters/1009227",
21
+ "comics": {
22
+ "available": 21,
23
+ "collectionURI": "http://gateway.marvel.com/v1/public/characters/1009227/comics",
24
+ "items": [
25
+ {
26
+ "resourceURI": "http://gateway.marvel.com/v1/public/comics/6809",
27
+ "name": "Amazing Spider-Man (1963) #394"
28
+ },
29
+ {
30
+ "resourceURI": "http://gateway.marvel.com/v1/public/comics/34628",
31
+ "name": "Carnage (2010) #1"
32
+ },
33
+ {
34
+ "resourceURI": "http://gateway.marvel.com/v1/public/comics/36404",
35
+ "name": "Carnage (2010) #1"
36
+ },
37
+ {
38
+ "resourceURI": "http://gateway.marvel.com/v1/public/comics/39011",
39
+ "name": "Carnage (2010) #1 (2nd Printing Variant)"
40
+ },
41
+ {
42
+ "resourceURI": "http://gateway.marvel.com/v1/public/comics/37072",
43
+ "name": "Carnage (2010) #1 (ADAMS VARIANT)"
44
+ },
45
+ {
46
+ "resourceURI": "http://gateway.marvel.com/v1/public/comics/36271",
47
+ "name": "Carnage (2010) #2"
48
+ },
49
+ {
50
+ "resourceURI": "http://gateway.marvel.com/v1/public/comics/39010",
51
+ "name": "Carnage (2010) #2 (2nd Printing Variant)"
52
+ },
53
+ {
54
+ "resourceURI": "http://gateway.marvel.com/v1/public/comics/34623",
55
+ "name": "Carnage (2010) #3"
56
+ },
57
+ {
58
+ "resourceURI": "http://gateway.marvel.com/v1/public/comics/39650",
59
+ "name": "Carnage (2010) #3 (2nd Printing Variant)"
60
+ },
61
+ {
62
+ "resourceURI": "http://gateway.marvel.com/v1/public/comics/36273",
63
+ "name": "Carnage (2010) #4"
64
+ },
65
+ {
66
+ "resourceURI": "http://gateway.marvel.com/v1/public/comics/36269",
67
+ "name": "Carnage (2010) #5"
68
+ },
69
+ {
70
+ "resourceURI": "http://gateway.marvel.com/v1/public/comics/40355",
71
+ "name": "Carnage, U.S.A. (2011) #1"
72
+ },
73
+ {
74
+ "resourceURI": "http://gateway.marvel.com/v1/public/comics/40353",
75
+ "name": "Carnage, U.S.A. (2011) #2"
76
+ },
77
+ {
78
+ "resourceURI": "http://gateway.marvel.com/v1/public/comics/14656",
79
+ "name": "Peter Parker, the Spectacular Spider-Man (1976) #201"
80
+ },
81
+ {
82
+ "resourceURI": "http://gateway.marvel.com/v1/public/comics/14657",
83
+ "name": "Peter Parker, the Spectacular Spider-Man (1976) #202"
84
+ },
85
+ {
86
+ "resourceURI": "http://gateway.marvel.com/v1/public/comics/14658",
87
+ "name": "Peter Parker, the Spectacular Spider-Man (1976) #203"
88
+ },
89
+ {
90
+ "resourceURI": "http://gateway.marvel.com/v1/public/comics/14691",
91
+ "name": "Peter Parker, the Spectacular Spider-Man (1976) #233"
92
+ },
93
+ {
94
+ "resourceURI": "http://gateway.marvel.com/v1/public/comics/10518",
95
+ "name": "Peter Parker: Spider-Man (1999) #10"
96
+ },
97
+ {
98
+ "resourceURI": "http://gateway.marvel.com/v1/public/comics/10521",
99
+ "name": "Peter Parker: Spider-Man (1999) #13"
100
+ },
101
+ {
102
+ "resourceURI": "http://gateway.marvel.com/v1/public/comics/5396",
103
+ "name": "Spider-Man Family Featuring Spider-Clan (2006) #1"
104
+ }
105
+ ],
106
+ "returned": 20
107
+ },
108
+ "series": {
109
+ "available": 7,
110
+ "collectionURI": "http://gateway.marvel.com/v1/public/characters/1009227/series",
111
+ "items": [
112
+ {
113
+ "resourceURI": "http://gateway.marvel.com/v1/public/series/1987",
114
+ "name": "Amazing Spider-Man (1963 - 1998)"
115
+ },
116
+ {
117
+ "resourceURI": "http://gateway.marvel.com/v1/public/series/11942",
118
+ "name": "Carnage (2010 - 2011)"
119
+ },
120
+ {
121
+ "resourceURI": "http://gateway.marvel.com/v1/public/series/14984",
122
+ "name": "Carnage, U.S.A. (2011 - 2012)"
123
+ },
124
+ {
125
+ "resourceURI": "http://gateway.marvel.com/v1/public/series/2271",
126
+ "name": "Peter Parker, the Spectacular Spider-Man (1976 - 1998)"
127
+ },
128
+ {
129
+ "resourceURI": "http://gateway.marvel.com/v1/public/series/2060",
130
+ "name": "Peter Parker: Spider-Man (1999 - 2003)"
131
+ },
132
+ {
133
+ "resourceURI": "http://gateway.marvel.com/v1/public/series/1091",
134
+ "name": "Spider-Man Family Featuring Spider-Clan (2006)"
135
+ },
136
+ {
137
+ "resourceURI": "http://gateway.marvel.com/v1/public/series/13532",
138
+ "name": "Spider-Man: With Great Power Comes Great Responsibility (2010 - 2011)"
139
+ }
140
+ ],
141
+ "returned": 7
142
+ },
143
+ "stories": {
144
+ "available": 23,
145
+ "collectionURI": "http://gateway.marvel.com/v1/public/characters/1009227/stories",
146
+ "items": [
147
+ {
148
+ "resourceURI": "http://gateway.marvel.com/v1/public/stories/5990",
149
+ "name": "Cover #5990",
150
+ "type": "cover"
151
+ },
152
+ {
153
+ "resourceURI": "http://gateway.marvel.com/v1/public/stories/14248",
154
+ "name": "Carnage",
155
+ "type": "profile"
156
+ },
157
+ {
158
+ "resourceURI": "http://gateway.marvel.com/v1/public/stories/25562",
159
+ "name": "Venom Triumphant!",
160
+ "type": "interiorStory"
161
+ },
162
+ {
163
+ "resourceURI": "http://gateway.marvel.com/v1/public/stories/25569",
164
+ "name": "When Carnage comes calling!",
165
+ "type": "cover"
166
+ },
167
+ {
168
+ "resourceURI": "http://gateway.marvel.com/v1/public/stories/29779",
169
+ "name": "Maximum Carnage, Part 5 of 14",
170
+ "type": "cover"
171
+ },
172
+ {
173
+ "resourceURI": "http://gateway.marvel.com/v1/public/stories/29782",
174
+ "name": "Maximum Carnage, Part 9 of 14",
175
+ "type": "cover"
176
+ },
177
+ {
178
+ "resourceURI": "http://gateway.marvel.com/v1/public/stories/29785",
179
+ "name": "Maximum Carnage, Part 13 of 14",
180
+ "type": "cover"
181
+ },
182
+ {
183
+ "resourceURI": "http://gateway.marvel.com/v1/public/stories/29914",
184
+ "name": "Web of Carnage, Part 4 of 4",
185
+ "type": "cover"
186
+ },
187
+ {
188
+ "resourceURI": "http://gateway.marvel.com/v1/public/stories/76812",
189
+ "name": "Carnage #3",
190
+ "type": "cover"
191
+ },
192
+ {
193
+ "resourceURI": "http://gateway.marvel.com/v1/public/stories/76813",
194
+ "name": "Carnage #3",
195
+ "type": "interiorStory"
196
+ },
197
+ {
198
+ "resourceURI": "http://gateway.marvel.com/v1/public/stories/80312",
199
+ "name": "Carnage #5",
200
+ "type": "interiorStory"
201
+ },
202
+ {
203
+ "resourceURI": "http://gateway.marvel.com/v1/public/stories/80318",
204
+ "name": "Interior #80318",
205
+ "type": "interiorStory"
206
+ },
207
+ {
208
+ "resourceURI": "http://gateway.marvel.com/v1/public/stories/80322",
209
+ "name": "Interior #80322",
210
+ "type": "interiorStory"
211
+ },
212
+ {
213
+ "resourceURI": "http://gateway.marvel.com/v1/public/stories/80326",
214
+ "name": "Carnage (2010) #4",
215
+ "type": "interiorStory"
216
+ },
217
+ {
218
+ "resourceURI": "http://gateway.marvel.com/v1/public/stories/80823",
219
+ "name": "Interior #80823",
220
+ "type": "interiorStory"
221
+ },
222
+ {
223
+ "resourceURI": "http://gateway.marvel.com/v1/public/stories/80825",
224
+ "name": "Interior #80825",
225
+ "type": "interiorStory"
226
+ },
227
+ {
228
+ "resourceURI": "http://gateway.marvel.com/v1/public/stories/80827",
229
+ "name": "Interior #80827",
230
+ "type": "interiorStory"
231
+ },
232
+ {
233
+ "resourceURI": "http://gateway.marvel.com/v1/public/stories/80829",
234
+ "name": "Interior #80829",
235
+ "type": "interiorStory"
236
+ },
237
+ {
238
+ "resourceURI": "http://gateway.marvel.com/v1/public/stories/82181",
239
+ "name": "Interior #82181",
240
+ "type": "interiorStory"
241
+ },
242
+ {
243
+ "resourceURI": "http://gateway.marvel.com/v1/public/stories/89988",
244
+ "name": "CARNAGE 3 2ND PRINTING VARIANT",
245
+ "type": "interiorStory"
246
+ }
247
+ ],
248
+ "returned": 20
249
+ },
250
+ "events": {
251
+ "available": 1,
252
+ "collectionURI": "http://gateway.marvel.com/v1/public/characters/1009227/events",
253
+ "items": [
254
+ {
255
+ "resourceURI": "http://gateway.marvel.com/v1/public/events/151",
256
+ "name": "Maximum Carnage"
257
+ }
258
+ ],
259
+ "returned": 1
260
+ },
261
+ "urls": [
262
+ {
263
+ "type": "detail",
264
+ "url": "http://marvel.com/comics/characters/1009227/carnage?utm_campaign=apiRef&utm_source=85ec0830b5958f4f46ea2fa898a76ef2"
265
+ },
266
+ {
267
+ "type": "wiki",
268
+ "url": "http://marvel.com/universe/Carnage_(Cletus_Kasady)?utm_campaign=apiRef&utm_source=85ec0830b5958f4f46ea2fa898a76ef2"
269
+ }
270
+ ]
271
+ }
272
+ ]
273
+ }
274
+ }
@@ -23,6 +23,7 @@ describe Marvelite::API::Client do
23
23
  before do
24
24
  stub_get('characters?name=Spider-Man&apikey=123456&ts=1&hash=d4f1bab013916a533ef31e3ad5fb0887', 'characters/character.json')
25
25
  stub_get('characters/1009610?apikey=123456&ts=1&hash=d4f1bab013916a533ef31e3ad5fb0887', 'characters/character.json')
26
+ stub_get('characters/1009227?apikey=123456&ts=1&hash=d4f1bab013916a533ef31e3ad5fb0887', 'characters/character_2.json')
26
27
  end
27
28
  it 'returns a Marvelite::API::Response object' do
28
29
  expect(client.character(1009610)).to be_a(Marvelite::API::Response)
@@ -34,6 +35,7 @@ describe Marvelite::API::Client do
34
35
 
35
36
  it 'accepts an Integer as character id' do
36
37
  expect(client.character(1009610)[:data][:results][0][:name]).to eq('Spider-Man')
38
+ expect(client.character(1009227)[:data][:results][0][:name]).to eq('Carnage')
37
39
  end
38
40
 
39
41
  it 'accepts a String as character name' do
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: marvelite
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.7
4
+ version: 0.0.8
5
5
  platform: ruby
6
6
  authors:
7
7
  - Antonio Antillon
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-02-08 00:00:00.000000000 Z
11
+ date: 2014-02-09 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: httparty
@@ -136,6 +136,7 @@ files:
136
136
  - lib/marvelite/version.rb
137
137
  - lib/marvelite.rb
138
138
  - spec/fixtures/characters/character.json
139
+ - spec/fixtures/characters/character_2.json
139
140
  - spec/fixtures/characters/character_comics.json
140
141
  - spec/fixtures/characters/character_events.json
141
142
  - spec/fixtures/characters/character_series.json
@@ -206,6 +207,7 @@ specification_version: 4
206
207
  summary: Simple wrapper around the Marvel Comics API
207
208
  test_files:
208
209
  - spec/fixtures/characters/character.json
210
+ - spec/fixtures/characters/character_2.json
209
211
  - spec/fixtures/characters/character_comics.json
210
212
  - spec/fixtures/characters/character_events.json
211
213
  - spec/fixtures/characters/character_series.json