zeppelin 0.3.0 → 0.4.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.
- data/lib/zeppelin.rb +36 -5
- data/lib/zeppelin/version.rb +1 -1
- data/test/zeppelin_test.rb +60 -0
- metadata +14 -14
data/lib/zeppelin.rb
CHANGED
@@ -23,8 +23,8 @@ class Zeppelin
|
|
23
23
|
# @param [String] application_key your Urban Airship Application Key
|
24
24
|
# @param [String] application_master_secret your Urban Airship Application
|
25
25
|
# Master Secret
|
26
|
-
def initialize(application_key, application_master_secret)
|
27
|
-
@connection = Faraday::Connection.new(BASE_URI) do |builder|
|
26
|
+
def initialize(application_key, application_master_secret, options = {})
|
27
|
+
@connection = Faraday::Connection.new(BASE_URI, options) do |builder|
|
28
28
|
builder.request :json
|
29
29
|
builder.adapter :net_http
|
30
30
|
end
|
@@ -55,7 +55,7 @@ class Zeppelin
|
|
55
55
|
# @return [Hash, nil]
|
56
56
|
def device_token(device_token)
|
57
57
|
response = @connection.get(device_token_uri(device_token))
|
58
|
-
successful?(response) ?
|
58
|
+
successful?(response) ? parse(response.body) : nil
|
59
59
|
end
|
60
60
|
|
61
61
|
# Deletes a device token.
|
@@ -90,7 +90,7 @@ class Zeppelin
|
|
90
90
|
# @return [Hash, nil]
|
91
91
|
def apid(apid)
|
92
92
|
response = @connection.get(apid_uri(apid))
|
93
|
-
successful?(response) ?
|
93
|
+
successful?(response) ? parse(response.body) : nil
|
94
94
|
end
|
95
95
|
|
96
96
|
# Deletes an APID.
|
@@ -137,7 +137,26 @@ class Zeppelin
|
|
137
137
|
# @return [Hash, nil]
|
138
138
|
def feedback(since)
|
139
139
|
response = @connection.get(feedback_uri(since))
|
140
|
-
successful?(response) ?
|
140
|
+
successful?(response) ? parse(response.body) : nil
|
141
|
+
end
|
142
|
+
|
143
|
+
# Retrieve all tags on the service
|
144
|
+
#
|
145
|
+
# @return [Hash, nil]
|
146
|
+
def tags
|
147
|
+
response = @connection.get(tag_uri(nil))
|
148
|
+
successful?(response) ? parse(response.body) : nil
|
149
|
+
end
|
150
|
+
|
151
|
+
# Modifies device tokens associated with a tag.
|
152
|
+
#
|
153
|
+
# @param [String] tag The name of the tag to modify tag associations on
|
154
|
+
#
|
155
|
+
# @param [Hash] payload
|
156
|
+
#
|
157
|
+
# @see http://urbanairship.com/docs/tags.html#modifying-device-tokens-on-a-tag
|
158
|
+
def modify_device_tokens_on_tag(tag_name, payload = {})
|
159
|
+
@connection.post(tag_uri(tag_name), payload, JSON_HEADERS)
|
141
160
|
end
|
142
161
|
|
143
162
|
# Creates a tag that is not associated with any device
|
@@ -161,6 +180,14 @@ class Zeppelin
|
|
161
180
|
successful?(response)
|
162
181
|
end
|
163
182
|
|
183
|
+
# @param [String] device_token
|
184
|
+
#
|
185
|
+
# @return [Hash, nil]
|
186
|
+
def device_tags(device_token)
|
187
|
+
response = @connection.get(device_tag_uri(device_token, nil))
|
188
|
+
successful?(response) ? parse(response.body) : nil
|
189
|
+
end
|
190
|
+
|
164
191
|
# @param [String] device_token
|
165
192
|
#
|
166
193
|
# @param [#to_s] tag_name
|
@@ -208,6 +235,10 @@ class Zeppelin
|
|
208
235
|
def successful?(response)
|
209
236
|
SUCCESSFUL_STATUS_CODES.include?(response.status)
|
210
237
|
end
|
238
|
+
|
239
|
+
def parse(json)
|
240
|
+
Yajl::Parser.parse(json)
|
241
|
+
end
|
211
242
|
end
|
212
243
|
|
213
244
|
require 'zeppelin/version'
|
data/lib/zeppelin/version.rb
CHANGED
data/test/zeppelin_test.rb
CHANGED
@@ -15,6 +15,12 @@ class ZeppelinTest < Zeppelin::TestCase
|
|
15
15
|
assert_equal 'Basic YXBwIGtleTphcHAgbWFzdGVyIHNlY3JldA==', @client.connection.headers['Authorization']
|
16
16
|
end
|
17
17
|
|
18
|
+
test '#initialize with custom options' do
|
19
|
+
ssl_options = { :ca_path => '/dev/null' }
|
20
|
+
@client = Zeppelin.new('app key', 'app master secret', :ssl => ssl_options)
|
21
|
+
assert_equal(ssl_options, @client.connection.ssl)
|
22
|
+
end
|
23
|
+
|
18
24
|
test '#register_device_token without a payload' do
|
19
25
|
stub_requests @client.connection do |stub|
|
20
26
|
stub.put("/api/device_tokens/#{@device_token}") do [201, {}, '']
|
@@ -304,6 +310,33 @@ class ZeppelinTest < Zeppelin::TestCase
|
|
304
310
|
assert_nil response
|
305
311
|
end
|
306
312
|
|
313
|
+
test '#tags' do
|
314
|
+
response_body = { 'tags' => ['green', 'eggs'] }
|
315
|
+
|
316
|
+
stub_requests @client.connection do |stub|
|
317
|
+
stub.get('/api/tags/') do
|
318
|
+
[200, {}, Yajl::Encoder.encode(response_body)]
|
319
|
+
end
|
320
|
+
end
|
321
|
+
|
322
|
+
response = @client.tags
|
323
|
+
assert_equal response_body, response
|
324
|
+
end
|
325
|
+
|
326
|
+
test '#modify_device_token_on_tag' do
|
327
|
+
tag_name = 'jimmy.page'
|
328
|
+
device_token = 'CAFEBABE'
|
329
|
+
|
330
|
+
stub_requests @client.connection do |stub|
|
331
|
+
stub.post("/api/tags/#{tag_name}") do
|
332
|
+
[200, {}, 'OK']
|
333
|
+
end
|
334
|
+
end
|
335
|
+
|
336
|
+
response = @client.modify_device_tokens_on_tag(tag_name, { 'device_tokens' => { 'add' => [device_token] } })
|
337
|
+
assert response
|
338
|
+
end
|
339
|
+
|
307
340
|
test '#add_tag' do
|
308
341
|
tag_name = 'chunky.bacon'
|
309
342
|
|
@@ -343,6 +376,33 @@ class ZeppelinTest < Zeppelin::TestCase
|
|
343
376
|
refute response
|
344
377
|
end
|
345
378
|
|
379
|
+
test '#device_tags with existing device' do
|
380
|
+
device_token = 'CAFEBABE'
|
381
|
+
response_body = { 'tags' => ['tag1', 'some_tag'] }
|
382
|
+
|
383
|
+
stub_requests @client.connection do |stub|
|
384
|
+
stub.get("/api/device_tokens/#{device_token}/tags/") do
|
385
|
+
[200, {}, Yajl::Encoder.encode(response_body)]
|
386
|
+
end
|
387
|
+
end
|
388
|
+
|
389
|
+
response = @client.device_tags(device_token)
|
390
|
+
assert_equal response_body, response
|
391
|
+
end
|
392
|
+
|
393
|
+
test '#device_tags with non-existant device' do
|
394
|
+
device_token = 'CAFEBABE'
|
395
|
+
|
396
|
+
stub_requests @client.connection do |stub|
|
397
|
+
stub.get("/api/device_tokens/#{device_token}/tags/") do
|
398
|
+
[404, {}, 'Not Found']
|
399
|
+
end
|
400
|
+
end
|
401
|
+
|
402
|
+
response = @client.device_tags(device_token)
|
403
|
+
refute response
|
404
|
+
end
|
405
|
+
|
346
406
|
test '#add_tag_to_device' do
|
347
407
|
tag_name = 'radio.head'
|
348
408
|
device_token = 'CAFEBABE'
|
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.
|
4
|
+
version: 0.4.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,11 +9,11 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2011-08-
|
12
|
+
date: 2011-08-19 00:00:00.000000000Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: faraday
|
16
|
-
requirement: &
|
16
|
+
requirement: &2165051200 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ! '>='
|
@@ -21,10 +21,10 @@ dependencies:
|
|
21
21
|
version: '0'
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *2165051200
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: yajl-ruby
|
27
|
-
requirement: &
|
27
|
+
requirement: &2165050780 !ruby/object:Gem::Requirement
|
28
28
|
none: false
|
29
29
|
requirements:
|
30
30
|
- - ! '>='
|
@@ -32,10 +32,10 @@ dependencies:
|
|
32
32
|
version: '0'
|
33
33
|
type: :runtime
|
34
34
|
prerelease: false
|
35
|
-
version_requirements: *
|
35
|
+
version_requirements: *2165050780
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
name: minitest
|
38
|
-
requirement: &
|
38
|
+
requirement: &2165050280 !ruby/object:Gem::Requirement
|
39
39
|
none: false
|
40
40
|
requirements:
|
41
41
|
- - ~>
|
@@ -43,10 +43,10 @@ dependencies:
|
|
43
43
|
version: '2.0'
|
44
44
|
type: :development
|
45
45
|
prerelease: false
|
46
|
-
version_requirements: *
|
46
|
+
version_requirements: *2165050280
|
47
47
|
- !ruby/object:Gem::Dependency
|
48
48
|
name: journo
|
49
|
-
requirement: &
|
49
|
+
requirement: &2165049860 !ruby/object:Gem::Requirement
|
50
50
|
none: false
|
51
51
|
requirements:
|
52
52
|
- - ! '>='
|
@@ -54,10 +54,10 @@ dependencies:
|
|
54
54
|
version: '0'
|
55
55
|
type: :development
|
56
56
|
prerelease: false
|
57
|
-
version_requirements: *
|
57
|
+
version_requirements: *2165049860
|
58
58
|
- !ruby/object:Gem::Dependency
|
59
59
|
name: mocha
|
60
|
-
requirement: &
|
60
|
+
requirement: &2165049400 !ruby/object:Gem::Requirement
|
61
61
|
none: false
|
62
62
|
requirements:
|
63
63
|
- - ! '>='
|
@@ -65,10 +65,10 @@ dependencies:
|
|
65
65
|
version: '0'
|
66
66
|
type: :development
|
67
67
|
prerelease: false
|
68
|
-
version_requirements: *
|
68
|
+
version_requirements: *2165049400
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
70
|
name: test_declarative
|
71
|
-
requirement: &
|
71
|
+
requirement: &2165048980 !ruby/object:Gem::Requirement
|
72
72
|
none: false
|
73
73
|
requirements:
|
74
74
|
- - ! '>='
|
@@ -76,7 +76,7 @@ dependencies:
|
|
76
76
|
version: '0'
|
77
77
|
type: :development
|
78
78
|
prerelease: false
|
79
|
-
version_requirements: *
|
79
|
+
version_requirements: *2165048980
|
80
80
|
description: Ruby client for the Urban Airship Push Notification API
|
81
81
|
email:
|
82
82
|
- alex@kernul.com
|