zeppelin 0.7.0 → 0.8.1
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/Changelog.md +12 -0
- data/Gemfile +2 -0
- data/lib/zeppelin.rb +79 -37
- data/lib/zeppelin/version.rb +1 -1
- data/spec/spec_helper.rb +8 -0
- data/spec/zeppelin_spec.rb +107 -0
- metadata +10 -10
data/Changelog.md
CHANGED
data/Gemfile
CHANGED
data/lib/zeppelin.rb
CHANGED
@@ -31,7 +31,7 @@ class Zeppelin
|
|
31
31
|
@connection = initialize_connection
|
32
32
|
end
|
33
33
|
|
34
|
-
# Registers
|
34
|
+
# Registers an iPhone device token.
|
35
35
|
#
|
36
36
|
# @param [String] device_token
|
37
37
|
# @param [Hash] payload the payload to send during registration
|
@@ -44,58 +44,47 @@ class Zeppelin
|
|
44
44
|
put_request(uri, payload)
|
45
45
|
end
|
46
46
|
|
47
|
-
#
|
48
|
-
#
|
49
|
-
# @param [String] device_token
|
50
|
-
# @return [Hash, nil]
|
51
|
-
#
|
52
|
-
# @raise [Zeppelin::ResourceNotFound] invalid device token provided
|
53
|
-
def device_token(device_token)
|
54
|
-
uri = device_token_uri(device_token)
|
55
|
-
get_request(uri)
|
56
|
-
end
|
57
|
-
|
58
|
-
# Deletes a device token.
|
59
|
-
#
|
60
|
-
# @param [String] device_token
|
61
|
-
#
|
62
|
-
# @return [Boolean] whether or not the deletion was successful
|
63
|
-
#
|
64
|
-
# @raise [Zeppelin::ResourceNotFound] invalid device token provided
|
65
|
-
def delete_device_token(device_token)
|
66
|
-
uri = device_token_uri(device_token)
|
67
|
-
delete_request(uri)
|
68
|
-
end
|
69
|
-
|
70
|
-
# Retrieve a page of device tokens
|
47
|
+
# Registers an Android APID.
|
71
48
|
#
|
72
|
-
# @param [
|
49
|
+
# @param [String] apid
|
73
50
|
#
|
74
|
-
# @
|
51
|
+
# @param [Hash] payload the payload to send during registration
|
75
52
|
#
|
76
|
-
# @
|
77
|
-
# raw URI to request for the next page
|
53
|
+
# @return [Boolean] whether or not the registration was successful
|
78
54
|
#
|
79
|
-
# @raise [Zeppelin::ClientError] invalid
|
80
|
-
def
|
81
|
-
uri =
|
82
|
-
|
55
|
+
# @raise [Zeppelin::ClientError] invalid payload format
|
56
|
+
def register_apid(apid, payload = {})
|
57
|
+
uri = apid_uri(apid)
|
58
|
+
put_request(uri, payload)
|
83
59
|
end
|
84
60
|
|
85
|
-
# Registers
|
61
|
+
# Registers a Blackberry PIN
|
86
62
|
#
|
87
|
-
# @param [String]
|
63
|
+
# @param [String] pin
|
88
64
|
#
|
89
65
|
# @param [Hash] payload the payload to send during registration
|
90
66
|
#
|
91
67
|
# @return [Boolean] whether or not the registration was successful
|
92
68
|
#
|
93
69
|
# @raise [Zeppelin::ClientError] invalid payload format
|
94
|
-
|
95
|
-
|
70
|
+
#
|
71
|
+
# @see http://urbanairship.com/docs/blackberry.html#registration
|
72
|
+
def register_pin(pin, payload = {})
|
73
|
+
uri = pin_uri(pin)
|
96
74
|
put_request(uri, payload)
|
97
75
|
end
|
98
76
|
|
77
|
+
# Retrieves information on a device token.
|
78
|
+
#
|
79
|
+
# @param [String] device_token
|
80
|
+
# @return [Hash, nil]
|
81
|
+
#
|
82
|
+
# @raise [Zeppelin::ResourceNotFound] invalid device token provided
|
83
|
+
def device_token(device_token)
|
84
|
+
uri = device_token_uri(device_token)
|
85
|
+
get_request(uri)
|
86
|
+
end
|
87
|
+
|
99
88
|
# Retrieves information on an APID.
|
100
89
|
#
|
101
90
|
# @param [String] apid
|
@@ -108,6 +97,28 @@ class Zeppelin
|
|
108
97
|
get_request(uri)
|
109
98
|
end
|
110
99
|
|
100
|
+
# @param [String] pin
|
101
|
+
#
|
102
|
+
# @return [Hash, nil]
|
103
|
+
#
|
104
|
+
# @raise [Zeppelin::ResourceNotFound] invalid PIN provided
|
105
|
+
def pin(pin)
|
106
|
+
uri = pin_uri(pin)
|
107
|
+
get_request(uri)
|
108
|
+
end
|
109
|
+
|
110
|
+
# Deletes a device token.
|
111
|
+
#
|
112
|
+
# @param [String] device_token
|
113
|
+
#
|
114
|
+
# @return [Boolean] whether or not the deletion was successful
|
115
|
+
#
|
116
|
+
# @raise [Zeppelin::ResourceNotFound] invalid device token provided
|
117
|
+
def delete_device_token(device_token)
|
118
|
+
uri = device_token_uri(device_token)
|
119
|
+
delete_request(uri)
|
120
|
+
end
|
121
|
+
|
111
122
|
# Deletes an APID.
|
112
123
|
#
|
113
124
|
# @param [String] apid
|
@@ -120,6 +131,33 @@ class Zeppelin
|
|
120
131
|
delete_request(uri)
|
121
132
|
end
|
122
133
|
|
134
|
+
# Deletes a PIN
|
135
|
+
#
|
136
|
+
# @param [String] pin
|
137
|
+
#
|
138
|
+
# @return [Boolean] whether or not deletion was successful
|
139
|
+
#
|
140
|
+
# @raise [Zeppelin::ResourceNotFound] invalid PIN provided
|
141
|
+
def delete_pin(pin)
|
142
|
+
uri = pin_uri(pin)
|
143
|
+
delete_request(uri)
|
144
|
+
end
|
145
|
+
|
146
|
+
# Retrieve a page of device tokens
|
147
|
+
#
|
148
|
+
# @param [Integer] page (nil) Page of device tokens to retrieve
|
149
|
+
#
|
150
|
+
# @return [Hash] result set. See documentation for details
|
151
|
+
#
|
152
|
+
# @Note that the next page number is included in the result set instead of the
|
153
|
+
# raw URI to request for the next page
|
154
|
+
#
|
155
|
+
# @raise [Zeppelin::ClientError] invalid request
|
156
|
+
def device_tokens(page=nil)
|
157
|
+
uri = device_token_uri(nil, :page => page)
|
158
|
+
get_paged_request(uri)
|
159
|
+
end
|
160
|
+
|
123
161
|
# Retrieve a page of APIDs
|
124
162
|
#
|
125
163
|
# @param [Integer] page (nil) Page of APIDs to retrieve
|
@@ -339,6 +377,10 @@ class Zeppelin
|
|
339
377
|
def device_tag_uri(device_token, tag_name)
|
340
378
|
device_token_uri(device_token) + "/tags/#{tag_name}"
|
341
379
|
end
|
380
|
+
|
381
|
+
def pin_uri(pin)
|
382
|
+
"/api/device_pins/#{pin}/"
|
383
|
+
end
|
342
384
|
end
|
343
385
|
|
344
386
|
require 'zeppelin/middleware'
|
data/lib/zeppelin/version.rb
CHANGED
data/spec/spec_helper.rb
CHANGED
@@ -1,6 +1,14 @@
|
|
1
1
|
require 'rubygems'
|
2
2
|
require 'bundler/setup'
|
3
3
|
|
4
|
+
if RUBY_VERSION =~ /^1.9/ && RUBY_DESCRIPTION =~ /jruby|enterprise/i
|
5
|
+
require 'simplecov'
|
6
|
+
|
7
|
+
SimpleCov.start do
|
8
|
+
add_filter '/spec/'
|
9
|
+
end
|
10
|
+
end
|
11
|
+
|
4
12
|
require 'zeppelin'
|
5
13
|
|
6
14
|
RSpec.configure do |config|
|
data/spec/zeppelin_spec.rb
CHANGED
@@ -551,6 +551,113 @@ describe Zeppelin do
|
|
551
551
|
end
|
552
552
|
end
|
553
553
|
|
554
|
+
describe '#tags' do
|
555
|
+
let(:uri) { '/api/tags/' }
|
556
|
+
|
557
|
+
let(:response_body) { { :tags => %w[foo bar baz] } }
|
558
|
+
|
559
|
+
it 'is true when request is successful' do
|
560
|
+
stub_requests do |stub|
|
561
|
+
stub.get(uri) { [200, { 'Content-Type' => 'application/json' }, MultiJson.encode(response_body)] }
|
562
|
+
end
|
563
|
+
|
564
|
+
subject.tags
|
565
|
+
end
|
566
|
+
|
567
|
+
it 'raises an error when the request fails' do
|
568
|
+
stub_requests do |stub|
|
569
|
+
stub.get(uri) { [500, {}, ''] }
|
570
|
+
end
|
571
|
+
|
572
|
+
expect {
|
573
|
+
subject.tags
|
574
|
+
}.to raise_error(Zeppelin::ClientError)
|
575
|
+
end
|
576
|
+
end
|
577
|
+
|
578
|
+
describe '#register_pin' do
|
579
|
+
let(:pin) { '12345678' }
|
580
|
+
|
581
|
+
let(:uri) { "/api/device_pins/#{pin}/" }
|
582
|
+
|
583
|
+
it 'is true when the request is successful' do
|
584
|
+
stub_requests do |stub|
|
585
|
+
stub.put(uri) { [201, {}, ''] }
|
586
|
+
end
|
587
|
+
|
588
|
+
subject.register_pin(pin).should be_true
|
589
|
+
end
|
590
|
+
|
591
|
+
it 'raises an error when the request fails' do
|
592
|
+
stub_requests do |stub|
|
593
|
+
stub.put(uri) { [500, {}, ''] }
|
594
|
+
end
|
595
|
+
|
596
|
+
expect {
|
597
|
+
subject.register_pin(pin)
|
598
|
+
}.to raise_error(Zeppelin::ClientError)
|
599
|
+
end
|
600
|
+
end
|
601
|
+
|
602
|
+
describe '#pin' do
|
603
|
+
let(:pin) { '12345678' }
|
604
|
+
|
605
|
+
let(:uri) { "/api/device_pins/#{pin}/" }
|
606
|
+
|
607
|
+
let(:response_body) {
|
608
|
+
{
|
609
|
+
:device_pin => pin,
|
610
|
+
:alias => 'my alias',
|
611
|
+
:last_registration => Time.mktime(2009, 11, 6, 20, 41, 6),
|
612
|
+
:created => Time.mktime(2009, 11, 6, 20, 41, 6),
|
613
|
+
:active => true,
|
614
|
+
:tags => %w[one two]
|
615
|
+
}
|
616
|
+
}
|
617
|
+
|
618
|
+
it 'responds with information about a device with a PIN when successful' do
|
619
|
+
stub_requests do |stub|
|
620
|
+
stub.get(uri) { [200, { 'Content-Type' => 'application/json' }, response_body] }
|
621
|
+
end
|
622
|
+
|
623
|
+
subject.pin(pin).should eql(response_body)
|
624
|
+
end
|
625
|
+
|
626
|
+
it 'raises an error when the PIN resource cannot be found' do
|
627
|
+
stub_requests do |stub|
|
628
|
+
stub.get(uri) { [404, {}, ''] }
|
629
|
+
end
|
630
|
+
|
631
|
+
expect {
|
632
|
+
subject.pin(pin)
|
633
|
+
}.to raise_error(Zeppelin::ResourceNotFound)
|
634
|
+
end
|
635
|
+
end
|
636
|
+
|
637
|
+
describe '#delete_pin' do
|
638
|
+
let(:pin) { '12345678' }
|
639
|
+
|
640
|
+
let(:uri) { "/api/device_pins/#{pin}/" }
|
641
|
+
|
642
|
+
it 'is true when the request succeeds' do
|
643
|
+
stub_requests do |stub|
|
644
|
+
stub.delete(uri) { [204, {}, ''] }
|
645
|
+
end
|
646
|
+
|
647
|
+
subject.delete_pin(pin).should be_true
|
648
|
+
end
|
649
|
+
|
650
|
+
it 'raises an error when the request fails' do
|
651
|
+
stub_requests do |stub|
|
652
|
+
stub.delete(uri) { [404, {}, ''] }
|
653
|
+
end
|
654
|
+
|
655
|
+
expect {
|
656
|
+
subject.delete_pin(pin)
|
657
|
+
}.to raise_error(Zeppelin::ResourceNotFound)
|
658
|
+
end
|
659
|
+
end
|
660
|
+
|
554
661
|
def stub_requests
|
555
662
|
subject.connection.builder.handlers.delete(Faraday::Adapter::NetHttp)
|
556
663
|
subject.connection.adapter :test do |stubs|
|
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.8.1
|
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-02
|
13
|
+
date: 2012-03-02 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: faraday
|
17
|
-
requirement: &
|
17
|
+
requirement: &70331113343920 !ruby/object:Gem::Requirement
|
18
18
|
none: false
|
19
19
|
requirements:
|
20
20
|
- - ! '>='
|
@@ -22,10 +22,10 @@ dependencies:
|
|
22
22
|
version: '0'
|
23
23
|
type: :runtime
|
24
24
|
prerelease: false
|
25
|
-
version_requirements: *
|
25
|
+
version_requirements: *70331113343920
|
26
26
|
- !ruby/object:Gem::Dependency
|
27
27
|
name: multi_json
|
28
|
-
requirement: &
|
28
|
+
requirement: &70331113343360 !ruby/object:Gem::Requirement
|
29
29
|
none: false
|
30
30
|
requirements:
|
31
31
|
- - ~>
|
@@ -33,10 +33,10 @@ dependencies:
|
|
33
33
|
version: '1.1'
|
34
34
|
type: :runtime
|
35
35
|
prerelease: false
|
36
|
-
version_requirements: *
|
36
|
+
version_requirements: *70331113343360
|
37
37
|
- !ruby/object:Gem::Dependency
|
38
38
|
name: rspec
|
39
|
-
requirement: &
|
39
|
+
requirement: &70331113342860 !ruby/object:Gem::Requirement
|
40
40
|
none: false
|
41
41
|
requirements:
|
42
42
|
- - ! '>='
|
@@ -44,10 +44,10 @@ dependencies:
|
|
44
44
|
version: '0'
|
45
45
|
type: :development
|
46
46
|
prerelease: false
|
47
|
-
version_requirements: *
|
47
|
+
version_requirements: *70331113342860
|
48
48
|
- !ruby/object:Gem::Dependency
|
49
49
|
name: rake
|
50
|
-
requirement: &
|
50
|
+
requirement: &70331113342360 !ruby/object:Gem::Requirement
|
51
51
|
none: false
|
52
52
|
requirements:
|
53
53
|
- - ! '>='
|
@@ -55,7 +55,7 @@ dependencies:
|
|
55
55
|
version: '0'
|
56
56
|
type: :development
|
57
57
|
prerelease: false
|
58
|
-
version_requirements: *
|
58
|
+
version_requirements: *70331113342360
|
59
59
|
description: Ruby client for the Urban Airship Push Notification API
|
60
60
|
email:
|
61
61
|
- alex@kernul.com
|