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 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