zeppelin 0.7.0 → 0.8.1

Sign up to get free protection for your applications and to get access to all the features.
data/Changelog.md CHANGED
@@ -1,3 +1,15 @@
1
+ # dev
2
+
3
+ # 0.8.1
4
+
5
+ * Fixes a problem running specs with JRuby and REE
6
+
7
+ # 0.8.0
8
+
9
+ ## Enhancements
10
+
11
+ * Support Blackberry API
12
+
1
13
  # 0.7.0
2
14
 
3
15
  ## Enhancements
data/Gemfile CHANGED
@@ -8,3 +8,5 @@ group :development do
8
8
  gem 'guard-bundler'
9
9
  gem 'guard-rspec'
10
10
  end
11
+
12
+ gem 'simplecov', :group => :test, :platforms => :mri_19, :require => false
data/lib/zeppelin.rb CHANGED
@@ -31,7 +31,7 @@ class Zeppelin
31
31
  @connection = initialize_connection
32
32
  end
33
33
 
34
- # Registers a device token.
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
- # Retrieves information on a device token.
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 [Integer] page (nil) Page of device tokens to retrieve
49
+ # @param [String] apid
73
50
  #
74
- # @return [Hash] result set. See documentation for details
51
+ # @param [Hash] payload the payload to send during registration
75
52
  #
76
- # @Note that the next page number is included in the result set instead of the
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 request
80
- def device_tokens(page=nil)
81
- uri = device_token_uri(nil, :page => page)
82
- get_paged_request(uri)
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 an APID.
61
+ # Registers a Blackberry PIN
86
62
  #
87
- # @param [String] apid
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
- def register_apid(apid, payload = {})
95
- uri = apid_uri(apid)
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'
@@ -1,3 +1,3 @@
1
1
  class Zeppelin
2
- VERSION = '0.7.0'
2
+ VERSION = '0.8.1'
3
3
  end
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|
@@ -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.7.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-28 00:00:00.000000000 Z
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: &70196652109980 !ruby/object:Gem::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: *70196652109980
25
+ version_requirements: *70331113343920
26
26
  - !ruby/object:Gem::Dependency
27
27
  name: multi_json
28
- requirement: &70196652109320 !ruby/object:Gem::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: *70196652109320
36
+ version_requirements: *70331113343360
37
37
  - !ruby/object:Gem::Dependency
38
38
  name: rspec
39
- requirement: &70196652108780 !ruby/object:Gem::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: *70196652108780
47
+ version_requirements: *70331113342860
48
48
  - !ruby/object:Gem::Dependency
49
49
  name: rake
50
- requirement: &70196652108000 !ruby/object:Gem::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: *70196652108000
58
+ version_requirements: *70331113342360
59
59
  description: Ruby client for the Urban Airship Push Notification API
60
60
  email:
61
61
  - alex@kernul.com