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,69 @@
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": "fa867c2607c0c100cdcf771abacb56197a9ed152",
8
+ "data": {
9
+ "offset": 0,
10
+ "limit": 20,
11
+ "total": 1,
12
+ "count": 1,
13
+ "results": [
14
+ {
15
+ "id": 13245,
16
+ "title": "Fantastic Forum",
17
+ "description": "",
18
+ "resourceURI": "http://gateway.marvel.com/v1/public/stories/13245",
19
+ "type": "letters",
20
+ "modified": "1969-12-31T19:00:00-0500",
21
+ "thumbnail": null,
22
+ "creators": {
23
+ "available": 0,
24
+ "collectionURI": "http://gateway.marvel.com/v1/public/stories/13245/creators",
25
+ "items": [],
26
+ "returned": 0
27
+ },
28
+ "characters": {
29
+ "available": 0,
30
+ "collectionURI": "http://gateway.marvel.com/v1/public/stories/13245/characters",
31
+ "items": [],
32
+ "returned": 0
33
+ },
34
+ "series": {
35
+ "available": 1,
36
+ "collectionURI": "http://gateway.marvel.com/v1/public/stories/13245/series",
37
+ "items": [
38
+ {
39
+ "resourceURI": "http://gateway.marvel.com/v1/public/series/2121",
40
+ "name": "Fantastic Four (1961 - 1998)"
41
+ }
42
+ ],
43
+ "returned": 1
44
+ },
45
+ "comics": {
46
+ "available": 1,
47
+ "collectionURI": "http://gateway.marvel.com/v1/public/stories/13245/comics",
48
+ "items": [
49
+ {
50
+ "resourceURI": "http://gateway.marvel.com/v1/public/comics/13215",
51
+ "name": "Fantastic Four (1961) #389"
52
+ }
53
+ ],
54
+ "returned": 1
55
+ },
56
+ "events": {
57
+ "available": 0,
58
+ "collectionURI": "http://gateway.marvel.com/v1/public/stories/13245/events",
59
+ "items": [],
60
+ "returned": 0
61
+ },
62
+ "originalIssue": {
63
+ "resourceURI": "http://gateway.marvel.com/v1/public/comics/13215",
64
+ "name": "Fantastic Four (1961) #389"
65
+ }
66
+ }
67
+ ]
68
+ }
69
+ }
@@ -0,0 +1,26 @@
1
+ require 'spec_helper'
2
+
3
+ RSpec.describe Uatu::Configuration do
4
+
5
+ class Klass
6
+ extend Uatu::Configuration
7
+ end
8
+
9
+ let(:klass) { Klass }
10
+
11
+ describe '.configure' do
12
+ let(:public_key) { 'PUBLIC_KEY' }
13
+ let(:private_key) { 'private_key' }
14
+
15
+ it "should set the public and private key" do
16
+ klass.configure do |config|
17
+ config.public_key = public_key
18
+ config.private_key = private_key
19
+ end
20
+
21
+ expect(klass.public_key).to eq public_key
22
+ expect(klass.private_key).to eq private_key
23
+ end
24
+ end
25
+
26
+ end
@@ -0,0 +1,54 @@
1
+ require 'spec_helper'
2
+
3
+ describe Uatu::Connection do
4
+
5
+ let(:resource) { 'characters' }
6
+ let(:options) do
7
+ {
8
+ :format_type => 'comic',
9
+ :date_descriptor => 'lastWeek',
10
+ :limit => 20,
11
+ :character_id => '1009262'
12
+ }
13
+ end
14
+
15
+ subject { described_class.new resource, options}
16
+
17
+ describe '#params' do
18
+ it 'prepares the options' do
19
+ unrubified = subject.send(:params)
20
+
21
+ expect(unrubified[:formatType]).to eq 'comic'
22
+ expect(unrubified[:dateDescriptor]).to eq 'lastWeek'
23
+ expect(unrubified[:limit]).to eq 20
24
+ expect(unrubified[:characterId]).to eq nil
25
+ end
26
+ end
27
+
28
+ describe '#path' do
29
+ context 'single resource' do
30
+ let(:options) { {} }
31
+ let(:resource) { 'character' }
32
+ it "should build normal routes just fine" do
33
+ expect(subject.send(:path)).to eq "/v1/public/characters"
34
+ end
35
+ end
36
+
37
+ context 'collection' do
38
+ let(:options) { {} }
39
+ let(:resource) { 'characters' }
40
+ it "should build normal routes just fine" do
41
+ expect(subject.send(:path)).to eq "/v1/public/characters"
42
+ end
43
+ end
44
+
45
+ context 'with id' do
46
+ let(:resource) { 'characters' }
47
+ let(:options) { {character_id: '1009262'} }
48
+ it "should build normal routes just fine" do
49
+ expect(subject.send(:path)).to eq "/v1/public/characters/1009262"
50
+ end
51
+ end
52
+ end
53
+
54
+ end
@@ -0,0 +1,40 @@
1
+ require 'spec_helper'
2
+
3
+ describe Uatu::Resource do
4
+ let(:id) { 1009521 }
5
+ let(:name) { "Hank Pym" }
6
+ let(:resourceURI) { "http://gateway.marvel.com/v1/public/characters/1009521" }
7
+ let(:thumbnail_path) { "http://i.annihil.us/u/prod/marvel/i/mg/8/c0/4ce5a0e31f109" }
8
+ let(:thumbnail_extension) { "jpg" }
9
+
10
+ let(:params) do
11
+ {
12
+ "id" => id,
13
+ "name" => name,
14
+ "resourceURI" => resourceURI,
15
+ "thumbnail" => {
16
+ "path" => thumbnail_path,
17
+ "extension" => thumbnail_extension
18
+ },
19
+ "comics"=> {
20
+ "available"=>44,
21
+ "items"=> [
22
+ {"resourceURI"=>"http://gateway.marvel.com/v1/public/comics/35533",
23
+ "name"=>"Amazing Spider-Man (1999) #661"}
24
+ ]
25
+ }
26
+ }
27
+ end
28
+
29
+ subject { described_class.new params }
30
+
31
+ describe '.initialize' do
32
+ it 'initializes the right values' do
33
+ expect(subject.thumbnail).to eq "#{thumbnail_path}.#{thumbnail_extension}"
34
+ expect(subject.resource_uri).to eq resourceURI
35
+ expect(subject.resourceURI).to eq nil
36
+ expect(subject.comics.items.first.resource_uri).to eq "http://gateway.marvel.com/v1/public/comics/35533"
37
+ expect(subject.comics.items.first.resourceURI).to eq nil
38
+ end
39
+ end
40
+ end
@@ -0,0 +1,9 @@
1
+ require "spec_helper"
2
+
3
+ RSpec.describe Uatu do
4
+ describe 'version number' do
5
+ it "has a version number" do
6
+ expect(Uatu::VERSION).not_to be nil
7
+ end
8
+ end
9
+ end
@@ -21,11 +21,13 @@ Gem::Specification.new do |spec|
21
21
  spec.require_paths = ["lib"]
22
22
 
23
23
  spec.add_development_dependency "bundler", "~> 1.5"
24
- spec.add_development_dependency "rake", '~> 10.1'
25
-
26
24
  spec.add_development_dependency 'faraday', '~>0.9'
27
- spec.add_development_dependency 'minitest', '~>5.2'
28
25
  spec.add_development_dependency 'json', '~>1.8'
29
26
  spec.add_development_dependency 'hashie', '~>2.0'
30
- spec.add_development_dependency 'activesupport', '~>3.2'
27
+ spec.add_development_dependency 'activesupport', '~> 4.1', '>= 4.1.11'
28
+
29
+ spec.add_development_dependency "rake", "~> 10.0"
30
+ spec.add_development_dependency "rspec", "~> 3.0"
31
+ spec.add_development_dependency "webmock", '~> 3.1', '>= 3.1.1'
32
+ spec.add_development_dependency "sinatra", '~> 2.0', '>= 2.0.0'
31
33
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: uatu-marvel
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Víctor Martín
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-02-12 00:00:00.000000000 Z
11
+ date: 2017-12-14 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -25,116 +25,187 @@ dependencies:
25
25
  - !ruby/object:Gem::Version
26
26
  version: '1.5'
27
27
  - !ruby/object:Gem::Dependency
28
- name: rake
28
+ name: faraday
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
31
  - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: '10.1'
33
+ version: '0.9'
34
34
  type: :development
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - "~>"
39
39
  - !ruby/object:Gem::Version
40
- version: '10.1'
40
+ version: '0.9'
41
41
  - !ruby/object:Gem::Dependency
42
- name: faraday
42
+ name: json
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
45
  - - "~>"
46
46
  - !ruby/object:Gem::Version
47
- version: '0.9'
47
+ version: '1.8'
48
48
  type: :development
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
52
  - - "~>"
53
53
  - !ruby/object:Gem::Version
54
- version: '0.9'
54
+ version: '1.8'
55
55
  - !ruby/object:Gem::Dependency
56
- name: minitest
56
+ name: hashie
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
59
  - - "~>"
60
60
  - !ruby/object:Gem::Version
61
- version: '5.2'
61
+ version: '2.0'
62
62
  type: :development
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
66
  - - "~>"
67
67
  - !ruby/object:Gem::Version
68
- version: '5.2'
68
+ version: '2.0'
69
69
  - !ruby/object:Gem::Dependency
70
- name: json
70
+ name: activesupport
71
71
  requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
73
  - - "~>"
74
74
  - !ruby/object:Gem::Version
75
- version: '1.8'
75
+ version: '4.1'
76
+ - - ">="
77
+ - !ruby/object:Gem::Version
78
+ version: 4.1.11
76
79
  type: :development
77
80
  prerelease: false
78
81
  version_requirements: !ruby/object:Gem::Requirement
79
82
  requirements:
80
83
  - - "~>"
81
84
  - !ruby/object:Gem::Version
82
- version: '1.8'
85
+ version: '4.1'
86
+ - - ">="
87
+ - !ruby/object:Gem::Version
88
+ version: 4.1.11
83
89
  - !ruby/object:Gem::Dependency
84
- name: hashie
90
+ name: rake
85
91
  requirement: !ruby/object:Gem::Requirement
86
92
  requirements:
87
93
  - - "~>"
88
94
  - !ruby/object:Gem::Version
89
- version: '2.0'
95
+ version: '10.0'
90
96
  type: :development
91
97
  prerelease: false
92
98
  version_requirements: !ruby/object:Gem::Requirement
93
99
  requirements:
94
100
  - - "~>"
95
101
  - !ruby/object:Gem::Version
96
- version: '2.0'
102
+ version: '10.0'
97
103
  - !ruby/object:Gem::Dependency
98
- name: activesupport
104
+ name: rspec
105
+ requirement: !ruby/object:Gem::Requirement
106
+ requirements:
107
+ - - "~>"
108
+ - !ruby/object:Gem::Version
109
+ version: '3.0'
110
+ type: :development
111
+ prerelease: false
112
+ version_requirements: !ruby/object:Gem::Requirement
113
+ requirements:
114
+ - - "~>"
115
+ - !ruby/object:Gem::Version
116
+ version: '3.0'
117
+ - !ruby/object:Gem::Dependency
118
+ name: webmock
119
+ requirement: !ruby/object:Gem::Requirement
120
+ requirements:
121
+ - - "~>"
122
+ - !ruby/object:Gem::Version
123
+ version: '3.1'
124
+ - - ">="
125
+ - !ruby/object:Gem::Version
126
+ version: 3.1.1
127
+ type: :development
128
+ prerelease: false
129
+ version_requirements: !ruby/object:Gem::Requirement
130
+ requirements:
131
+ - - "~>"
132
+ - !ruby/object:Gem::Version
133
+ version: '3.1'
134
+ - - ">="
135
+ - !ruby/object:Gem::Version
136
+ version: 3.1.1
137
+ - !ruby/object:Gem::Dependency
138
+ name: sinatra
99
139
  requirement: !ruby/object:Gem::Requirement
100
140
  requirements:
101
141
  - - "~>"
102
142
  - !ruby/object:Gem::Version
103
- version: '3.2'
143
+ version: '2.0'
144
+ - - ">="
145
+ - !ruby/object:Gem::Version
146
+ version: 2.0.0
104
147
  type: :development
105
148
  prerelease: false
106
149
  version_requirements: !ruby/object:Gem::Requirement
107
150
  requirements:
108
151
  - - "~>"
109
152
  - !ruby/object:Gem::Version
110
- version: '3.2'
153
+ version: '2.0'
154
+ - - ">="
155
+ - !ruby/object:Gem::Version
156
+ version: 2.0.0
111
157
  description: Lightweight Marvel API Wrapper for Ruby.
112
158
  email:
113
159
  - victor.martin84@gmail.com
114
- executables: []
160
+ executables:
161
+ - console
115
162
  extensions: []
116
163
  extra_rdoc_files: []
117
164
  files:
118
165
  - ".gitignore"
166
+ - ".rspec"
119
167
  - ".travis.yml"
120
168
  - Gemfile
121
169
  - LICENSE.txt
122
170
  - README.md
123
171
  - Rakefile
172
+ - bin/console
124
173
  - lib/uatu.rb
125
174
  - lib/uatu/base.rb
126
175
  - lib/uatu/configuration.rb
127
176
  - lib/uatu/connection.rb
177
+ - lib/uatu/endpoints/collection.rb
178
+ - lib/uatu/endpoints/nested.rb
179
+ - lib/uatu/endpoints/single.rb
128
180
  - lib/uatu/error.rb
129
181
  - lib/uatu/resource.rb
182
+ - lib/uatu/resources.rb
130
183
  - lib/uatu/response.rb
131
184
  - lib/uatu/version.rb
132
- - test/helper.rb
133
- - test/uatu/base_test.rb
134
- - test/uatu/configuration_test.rb
135
- - test/uatu/connection_test.rb
136
- - test/uatu/resource_test.rb
137
- - test/uatu/uatu_test.rb
185
+ - spec/integration/characters_spec.rb
186
+ - spec/integration/comics_spec.rb
187
+ - spec/integration/creators_spec.rb
188
+ - spec/integration/events_spec.rb
189
+ - spec/integration/series_spec.rb
190
+ - spec/integration/stories_spec.rb
191
+ - spec/spec_helper.rb
192
+ - spec/support/fake_marvel_api.rb
193
+ - spec/support/fake_marvel_api/characters/list.json
194
+ - spec/support/fake_marvel_api/characters/show.json
195
+ - spec/support/fake_marvel_api/comics/list.json
196
+ - spec/support/fake_marvel_api/comics/show.json
197
+ - spec/support/fake_marvel_api/creators/list.json
198
+ - spec/support/fake_marvel_api/creators/show.json
199
+ - spec/support/fake_marvel_api/events/list.json
200
+ - spec/support/fake_marvel_api/events/show.json
201
+ - spec/support/fake_marvel_api/series/list.json
202
+ - spec/support/fake_marvel_api/series/show.json
203
+ - spec/support/fake_marvel_api/stories/list.json
204
+ - spec/support/fake_marvel_api/stories/show.json
205
+ - spec/uatu/configuration_spec.rb
206
+ - spec/uatu/connection_spec.rb
207
+ - spec/uatu/resource_spec.rb
208
+ - spec/uatu_spec.rb
138
209
  - uatu.gemspec
139
210
  homepage: https://github.com/eltercero/uatu
140
211
  licenses:
@@ -156,14 +227,32 @@ required_rubygems_version: !ruby/object:Gem::Requirement
156
227
  version: '0'
157
228
  requirements: []
158
229
  rubyforge_project:
159
- rubygems_version: 2.2.0
230
+ rubygems_version: 2.6.11
160
231
  signing_key:
161
232
  specification_version: 4
162
233
  summary: Marvel API Wrapper
163
234
  test_files:
164
- - test/helper.rb
165
- - test/uatu/base_test.rb
166
- - test/uatu/configuration_test.rb
167
- - test/uatu/connection_test.rb
168
- - test/uatu/resource_test.rb
169
- - test/uatu/uatu_test.rb
235
+ - spec/integration/characters_spec.rb
236
+ - spec/integration/comics_spec.rb
237
+ - spec/integration/creators_spec.rb
238
+ - spec/integration/events_spec.rb
239
+ - spec/integration/series_spec.rb
240
+ - spec/integration/stories_spec.rb
241
+ - spec/spec_helper.rb
242
+ - spec/support/fake_marvel_api.rb
243
+ - spec/support/fake_marvel_api/characters/list.json
244
+ - spec/support/fake_marvel_api/characters/show.json
245
+ - spec/support/fake_marvel_api/comics/list.json
246
+ - spec/support/fake_marvel_api/comics/show.json
247
+ - spec/support/fake_marvel_api/creators/list.json
248
+ - spec/support/fake_marvel_api/creators/show.json
249
+ - spec/support/fake_marvel_api/events/list.json
250
+ - spec/support/fake_marvel_api/events/show.json
251
+ - spec/support/fake_marvel_api/series/list.json
252
+ - spec/support/fake_marvel_api/series/show.json
253
+ - spec/support/fake_marvel_api/stories/list.json
254
+ - spec/support/fake_marvel_api/stories/show.json
255
+ - spec/uatu/configuration_spec.rb
256
+ - spec/uatu/connection_spec.rb
257
+ - spec/uatu/resource_spec.rb
258
+ - spec/uatu_spec.rb