marvelite 0.0.7 → 0.0.8

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: 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