zeppelin 0.8.1 → 0.8.2

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.
@@ -1,4 +1,8 @@
1
- # dev
1
+ # 0.8.2
2
+
3
+ * Update Faraday
4
+ * Use FaradayMiddleware
5
+ * Remove usage of MultiJson
2
6
 
3
7
  # 0.8.1
4
8
 
@@ -1,4 +1,5 @@
1
1
  require 'faraday'
2
+ require 'faraday_middleware'
2
3
  require 'time'
3
4
 
4
5
  # A very tiny Urban Airship Push Notification API client.
@@ -302,13 +303,11 @@ class Zeppelin
302
303
  private
303
304
 
304
305
  def initialize_connection
305
- Faraday::Request::JSON.adapter = MultiJson
306
-
307
306
  conn = Faraday::Connection.new(BASE_URI, @options) do |builder|
308
307
  builder.request :json
309
308
 
310
- builder.use Zeppelin::Middleware::JsonParser
311
- builder.use Zeppelin::Middleware::ResponseRaiseError
309
+ builder.response :json, :content_type => /\bjson$/
310
+ builder.response :zeppelin_raise_error
312
311
 
313
312
  builder.adapter :net_http
314
313
  end
@@ -3,5 +3,6 @@ class Zeppelin
3
3
  end
4
4
  end
5
5
 
6
- require 'zeppelin/middleware/json_parser'
7
6
  require 'zeppelin/middleware/response_raise_error'
7
+
8
+ Faraday.register_middleware :response, zeppelin_raise_error: Zeppelin::Middleware::ResponseRaiseError
@@ -1,3 +1,3 @@
1
1
  class Zeppelin
2
- VERSION = '0.8.1'
2
+ VERSION = '0.8.2'
3
3
  end
@@ -28,9 +28,9 @@ describe Zeppelin do
28
28
 
29
29
  it { subject.connection.builder.handlers.should include(Faraday::Adapter::NetHttp) }
30
30
 
31
- it { subject.connection.builder.handlers.should include(Faraday::Request::JSON) }
31
+ it { subject.connection.builder.handlers.should include(FaradayMiddleware::EncodeJson) }
32
32
 
33
- it { subject.connection.builder.handlers.should include(Zeppelin::Middleware::JsonParser) }
33
+ it { subject.connection.builder.handlers.should include(FaradayMiddleware::ParseJson) }
34
34
 
35
35
  it { subject.connection.builder.handlers.should include(Zeppelin::Middleware::ResponseRaiseError) }
36
36
 
@@ -76,7 +76,7 @@ describe Zeppelin do
76
76
 
77
77
  it 'gets information about a device' do
78
78
  stub_requests do |stub|
79
- stub.get(uri) { [200, { 'Content-Type' => 'application/json' }, MultiJson.encode(response_body)] }
79
+ stub.get(uri) { [200, { 'Content-Type' => 'application/json' }, JSON.dump(response_body)] }
80
80
  end
81
81
 
82
82
  subject.device_token(device_token).should eq(response_body)
@@ -139,7 +139,7 @@ describe Zeppelin do
139
139
 
140
140
  it 'requests a page of device tokens' do
141
141
  stub_requests do |stub|
142
- stub.get('/api/device_tokens/?page=') { [200, { 'Content-Type' => 'application/json' }, MultiJson.encode(results_without_next_page)] }
142
+ stub.get('/api/device_tokens/?page=') { [200, { 'Content-Type' => 'application/json' }, JSON.dump(results_without_next_page)] }
143
143
  end
144
144
 
145
145
  subject.device_tokens.should eq(results_without_next_page)
@@ -147,7 +147,7 @@ describe Zeppelin do
147
147
 
148
148
  it 'includes the page number of the next page' do
149
149
  stub_requests do |stub|
150
- stub.get('/api/device_tokens/?page=') { [200, { 'Content-Type' => 'application/json' }, MultiJson.encode(results_with_next_page)] }
150
+ stub.get('/api/device_tokens/?page=') { [200, { 'Content-Type' => 'application/json' }, JSON.dump(results_with_next_page)] }
151
151
  end
152
152
 
153
153
  subject.device_tokens['next_page'].should eq(2)
@@ -155,7 +155,7 @@ describe Zeppelin do
155
155
 
156
156
  it 'does not include the page number if there are no additional pages' do
157
157
  stub_requests do |stub|
158
- stub.get('/api/device_tokens/?page=') { [200, { 'Content-Type' => 'application/json' }, MultiJson.encode(results_without_next_page)] }
158
+ stub.get('/api/device_tokens/?page=') { [200, { 'Content-Type' => 'application/json' }, JSON.dump(results_without_next_page)] }
159
159
  end
160
160
 
161
161
  subject.device_tokens.should_not have_key('next_page')
@@ -163,7 +163,7 @@ describe Zeppelin do
163
163
 
164
164
  it 'requests a specified page of device_tokens' do
165
165
  stub_requests do |stub|
166
- stub.get('/api/device_tokens/?page=4') { [200, { 'Content-Type' => 'application/json' }, MultiJson.encode(results_without_next_page)] }
166
+ stub.get('/api/device_tokens/?page=4') { [200, { 'Content-Type' => 'application/json' }, JSON.dump(results_without_next_page)] }
167
167
  end
168
168
 
169
169
  subject.device_tokens(4)
@@ -195,7 +195,7 @@ describe Zeppelin do
195
195
 
196
196
  it 'accepts a payload' do
197
197
  stub_requests do |stub|
198
- stub.put(uri, MultiJson.encode(payload)) { [200, {}, ''] }
198
+ stub.put(uri, JSON.dump(payload)) { [200, {}, ''] }
199
199
  end
200
200
 
201
201
  subject.register_apid(device_token, payload).should be_true
@@ -219,7 +219,7 @@ describe Zeppelin do
219
219
 
220
220
  it 'responds with information about a device when request is successful' do
221
221
  stub_requests do |stub|
222
- stub.get(uri) { [200, { 'Content-Type' => 'application/json' }, MultiJson.encode(response_body)] }
222
+ stub.get(uri) { [200, { 'Content-Type' => 'application/json' }, JSON.dump(response_body)] }
223
223
  end
224
224
 
225
225
  subject.apid(device_token).should eq(response_body)
@@ -278,7 +278,7 @@ describe Zeppelin do
278
278
 
279
279
  it 'requests a page of APIDs' do
280
280
  stub_requests do |stub|
281
- stub.get('/api/apids/?page=') { [200, { 'Content-Type' => 'application/json' }, MultiJson.encode(results_without_next_page)] }
281
+ stub.get('/api/apids/?page=') { [200, { 'Content-Type' => 'application/json' }, JSON.dump(results_without_next_page)] }
282
282
  end
283
283
 
284
284
  subject.apids.should eq(results_without_next_page)
@@ -286,7 +286,7 @@ describe Zeppelin do
286
286
 
287
287
  it 'includes the page number of the next page' do
288
288
  stub_requests do |stub|
289
- stub.get('/api/apids/?page=') { [200, { 'Content-Type' => 'application/json' }, MultiJson.encode(results_with_next_page)] }
289
+ stub.get('/api/apids/?page=') { [200, { 'Content-Type' => 'application/json' }, JSON.dump(results_with_next_page)] }
290
290
  end
291
291
 
292
292
  subject.apids['next_page'].should eq(2)
@@ -294,7 +294,7 @@ describe Zeppelin do
294
294
 
295
295
  it 'does not include the page number if there are no additional pages' do
296
296
  stub_requests do |stub|
297
- stub.get('/api/apids/?page=') { [200, { 'Content-Type' => 'application/json' }, MultiJson.encode(results_without_next_page)] }
297
+ stub.get('/api/apids/?page=') { [200, { 'Content-Type' => 'application/json' }, JSON.dump(results_without_next_page)] }
298
298
  end
299
299
 
300
300
  subject.apids.should_not have_key('next_page')
@@ -302,7 +302,7 @@ describe Zeppelin do
302
302
 
303
303
  it 'requests a specified page of APIDs' do
304
304
  stub_requests do |stub|
305
- stub.get('/api/apids/?page=4') { [200, { 'Content-Type' => 'application/json' }, MultiJson.encode(results_without_next_page)] }
305
+ stub.get('/api/apids/?page=4') { [200, { 'Content-Type' => 'application/json' }, JSON.dump(results_without_next_page)] }
306
306
  end
307
307
 
308
308
  subject.apids(4)
@@ -326,7 +326,7 @@ describe Zeppelin do
326
326
 
327
327
  it 'is true when the request is successful' do
328
328
  stub_requests do |stub|
329
- stub.post(uri, MultiJson.encode(payload)) { [200, {}, ''] }
329
+ stub.post(uri, JSON.dump(payload)) { [200, {}, ''] }
330
330
  end
331
331
 
332
332
  subject.push(payload).should be_true
@@ -364,7 +364,7 @@ describe Zeppelin do
364
364
 
365
365
  it 'is true when the request was successful' do
366
366
  stub_requests do |stub|
367
- stub.post(uri, MultiJson.encode(payload)) { [200, {}, ''] }
367
+ stub.post(uri, JSON.dump(payload)) { [200, {}, ''] }
368
368
  end
369
369
 
370
370
  subject.batch_push(message1, message2).should be_true
@@ -388,7 +388,7 @@ describe Zeppelin do
388
388
 
389
389
  it 'is true when the request is successful' do
390
390
  stub_requests do |stub|
391
- stub.post(uri, MultiJson.encode(payload)) { [200, {}, ''] }
391
+ stub.post(uri, JSON.dump(payload)) { [200, {}, ''] }
392
392
  end
393
393
 
394
394
  subject.broadcast(payload).should be_true
@@ -414,7 +414,7 @@ describe Zeppelin do
414
414
 
415
415
  it 'is the response body for a successful request' do
416
416
  stub_requests do |stub|
417
- stub.get(uri) { [200, { 'Content-Type' => 'application/json' }, MultiJson.encode(response_body)] }
417
+ stub.get(uri) { [200, { 'Content-Type' => 'application/json' }, JSON.dump(response_body)] }
418
418
  end
419
419
 
420
420
  subject.feedback(since)
@@ -486,7 +486,7 @@ describe Zeppelin do
486
486
 
487
487
  it 'is the collection of tags on a device when request is successful' do
488
488
  stub_requests do |stub|
489
- stub.get(uri) { [200, { 'Content-Type' => 'application/json' }, MultiJson.encode(response_body)] }
489
+ stub.get(uri) { [200, { 'Content-Type' => 'application/json' }, JSON.dump(response_body)] }
490
490
  end
491
491
 
492
492
  subject.device_tags(device_token).should eq(response_body)
@@ -558,7 +558,7 @@ describe Zeppelin do
558
558
 
559
559
  it 'is true when request is successful' do
560
560
  stub_requests do |stub|
561
- stub.get(uri) { [200, { 'Content-Type' => 'application/json' }, MultiJson.encode(response_body)] }
561
+ stub.get(uri) { [200, { 'Content-Type' => 'application/json' }, JSON.dump(response_body)] }
562
562
  end
563
563
 
564
564
  subject.tags
@@ -15,10 +15,11 @@ Gem::Specification.new do |s|
15
15
  s.rubyforge_project = 'zeppelin'
16
16
 
17
17
  s.add_dependency 'faraday'
18
- s.add_dependency 'multi_json', '~> 1.1'
18
+ s.add_dependency 'faraday_middleware'
19
19
 
20
20
  s.add_development_dependency 'rspec'
21
21
  s.add_development_dependency 'rake'
22
+ s.add_development_dependency 'json'
22
23
 
23
24
  s.files = `git ls-files`.split("\n")
24
25
  s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: zeppelin
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.8.1
4
+ version: 0.8.2
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -10,11 +10,11 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2012-03-02 00:00:00.000000000 Z
13
+ date: 2012-06-04 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: faraday
17
- requirement: &70331113343920 !ruby/object:Gem::Requirement
17
+ requirement: !ruby/object:Gem::Requirement
18
18
  none: false
19
19
  requirements:
20
20
  - - ! '>='
@@ -22,21 +22,31 @@ dependencies:
22
22
  version: '0'
23
23
  type: :runtime
24
24
  prerelease: false
25
- version_requirements: *70331113343920
25
+ version_requirements: !ruby/object:Gem::Requirement
26
+ none: false
27
+ requirements:
28
+ - - ! '>='
29
+ - !ruby/object:Gem::Version
30
+ version: '0'
26
31
  - !ruby/object:Gem::Dependency
27
- name: multi_json
28
- requirement: &70331113343360 !ruby/object:Gem::Requirement
32
+ name: faraday_middleware
33
+ requirement: !ruby/object:Gem::Requirement
29
34
  none: false
30
35
  requirements:
31
- - - ~>
36
+ - - ! '>='
32
37
  - !ruby/object:Gem::Version
33
- version: '1.1'
38
+ version: '0'
34
39
  type: :runtime
35
40
  prerelease: false
36
- version_requirements: *70331113343360
41
+ version_requirements: !ruby/object:Gem::Requirement
42
+ none: false
43
+ requirements:
44
+ - - ! '>='
45
+ - !ruby/object:Gem::Version
46
+ version: '0'
37
47
  - !ruby/object:Gem::Dependency
38
48
  name: rspec
39
- requirement: &70331113342860 !ruby/object:Gem::Requirement
49
+ requirement: !ruby/object:Gem::Requirement
40
50
  none: false
41
51
  requirements:
42
52
  - - ! '>='
@@ -44,10 +54,15 @@ dependencies:
44
54
  version: '0'
45
55
  type: :development
46
56
  prerelease: false
47
- version_requirements: *70331113342860
57
+ version_requirements: !ruby/object:Gem::Requirement
58
+ none: false
59
+ requirements:
60
+ - - ! '>='
61
+ - !ruby/object:Gem::Version
62
+ version: '0'
48
63
  - !ruby/object:Gem::Dependency
49
64
  name: rake
50
- requirement: &70331113342360 !ruby/object:Gem::Requirement
65
+ requirement: !ruby/object:Gem::Requirement
51
66
  none: false
52
67
  requirements:
53
68
  - - ! '>='
@@ -55,7 +70,28 @@ dependencies:
55
70
  version: '0'
56
71
  type: :development
57
72
  prerelease: false
58
- version_requirements: *70331113342360
73
+ version_requirements: !ruby/object:Gem::Requirement
74
+ none: false
75
+ requirements:
76
+ - - ! '>='
77
+ - !ruby/object:Gem::Version
78
+ version: '0'
79
+ - !ruby/object:Gem::Dependency
80
+ name: json
81
+ requirement: !ruby/object:Gem::Requirement
82
+ none: false
83
+ requirements:
84
+ - - ! '>='
85
+ - !ruby/object:Gem::Version
86
+ version: '0'
87
+ type: :development
88
+ prerelease: false
89
+ version_requirements: !ruby/object:Gem::Requirement
90
+ none: false
91
+ requirements:
92
+ - - ! '>='
93
+ - !ruby/object:Gem::Version
94
+ version: '0'
59
95
  description: Ruby client for the Urban Airship Push Notification API
60
96
  email:
61
97
  - alex@kernul.com
@@ -75,10 +111,8 @@ files:
75
111
  - Rakefile
76
112
  - lib/zeppelin.rb
77
113
  - lib/zeppelin/middleware.rb
78
- - lib/zeppelin/middleware/json_parser.rb
79
114
  - lib/zeppelin/middleware/response_raise_error.rb
80
115
  - lib/zeppelin/version.rb
81
- - spec/middleware/json_parser_spec.rb
82
116
  - spec/middleware/response_raise_error_spec.rb
83
117
  - spec/spec_helper.rb
84
118
  - spec/zeppelin_spec.rb
@@ -103,12 +137,12 @@ required_rubygems_version: !ruby/object:Gem::Requirement
103
137
  version: '0'
104
138
  requirements: []
105
139
  rubyforge_project: zeppelin
106
- rubygems_version: 1.8.15
140
+ rubygems_version: 1.8.23
107
141
  signing_key:
108
142
  specification_version: 3
109
143
  summary: Urban Airship library for Ruby
110
144
  test_files:
111
- - spec/middleware/json_parser_spec.rb
112
145
  - spec/middleware/response_raise_error_spec.rb
113
146
  - spec/spec_helper.rb
114
147
  - spec/zeppelin_spec.rb
148
+ has_rdoc:
@@ -1,37 +0,0 @@
1
- require 'multi_json'
2
-
3
- class Zeppelin
4
- module Middleware
5
- # Middleware for Faraday that parses JSON response bodies. Based on code in
6
- # the FaradayMiddleware project.
7
- #
8
- # @private
9
- class JsonParser < Faraday::Middleware
10
- CONTENT_TYPE = 'Content-Type'
11
-
12
- def initialize(app=nil)
13
- @app = app
14
- end
15
-
16
- def call(env)
17
- @app.call(env).on_complete do
18
- parse_response(env) if process_content_type?(env) && parse_response?(env)
19
- end
20
- end
21
-
22
- private
23
-
24
- def parse_response(env)
25
- env[:body] = MultiJson.decode(env[:body])
26
- end
27
-
28
- def process_content_type?(env)
29
- env[:response_headers][CONTENT_TYPE].to_s =~ /application\/(.*)json/
30
- end
31
-
32
- def parse_response?(env)
33
- env[:body].respond_to? :to_str
34
- end
35
- end
36
- end
37
- end
@@ -1,34 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe Zeppelin::Middleware::JsonParser do
4
- let(:json_body) { "{\"foo\":\"bar\"}" }
5
-
6
- let(:expected_parsed_body) { { 'foo' => 'bar' } }
7
-
8
- it 'parses a standard JSON content type' do
9
- process(json_body, 'application/json').body.should eq(expected_parsed_body)
10
- end
11
-
12
- it 'parses vendor JSON content type' do
13
- process(json_body, 'application/vnd.urbanairship+json').body.should eq(expected_parsed_body)
14
- end
15
-
16
- it 'does not change nil body' do
17
- process(nil).body.should be_nil
18
- end
19
-
20
- it 'does not parse non-JSON content types' do
21
- process('<hello>world</hello>', 'text/xml').body.should eq('<hello>world</hello>')
22
- end
23
-
24
- def process(body, content_type=nil, options={})
25
- env = { :body => body, :response_headers => Faraday::Utils::Headers.new }
26
- env[:response_headers]['content-type'] = content_type if content_type
27
-
28
- middleware = Zeppelin::Middleware::JsonParser.new(
29
- lambda { |env| Faraday::Response.new(env) }
30
- )
31
-
32
- middleware.call(env)
33
- end
34
- end