zero_push 1.3.0 → 2.0.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.
checksums.yaml ADDED
@@ -0,0 +1,15 @@
1
+ ---
2
+ !binary "U0hBMQ==":
3
+ metadata.gz: !binary |-
4
+ NjA2Zjk0NTY1M2Q1NWU1NzVhMGRhZDQ3ZDNhNTQyZDM1MjBiNTM2Mg==
5
+ data.tar.gz: !binary |-
6
+ MzU5OTI3NWVjODFkNjAzZjUxZTlmZDVlMGJjZDM1MjNkMmZiNWJkZQ==
7
+ SHA512:
8
+ metadata.gz: !binary |-
9
+ OWRlZTk1MjJhYmU4MDBlZjlkOThkZjgzYjlhMmQ2YmE2OTQ1MTk0Mzk2NjVk
10
+ MGRiNzg2YjhmYWJlZjc4ZGNlMzQ1M2FlNDIzZmJmMWIyNWYwZmJkMjNlYjBl
11
+ OGE4NjExYmEwNjU3YTdmMjkxNzE4MTVmYjFjMzE5NTNkNGNiZjE=
12
+ data.tar.gz: !binary |-
13
+ NWI0YjZmMmI4NDVmNTZjNDgyNDhjYmM1ZWQwNWNkMTcxMzg5MGIwMTlhOGZl
14
+ NGFkYTRhZDM1ZmRlMmRmMzM3NDc2NmE1MTE0NTFmOTI3M2YxNmM3YjJkNzM5
15
+ OGRkZmYxNmQ5MTFlZGM2MDJjYWJjMmU0MzUzZTU2MDNmZmNiOTM=
data/.travis.yml CHANGED
@@ -9,10 +9,3 @@ notifications:
9
9
  email:
10
10
  - adam.v.duke@gmail.com
11
11
  - stefan.natchev@gmail.com
12
- env:
13
- global:
14
- - secure: ! 'ILUUZU0RUJoOGipo5mpWFGz9rvherA9WBpEdrkQMQBXgGYz0BqqO3hVvdt6l
15
-
16
- 2A7p4RxNNxXlOaQ+XUs0s+5WU7O0ni4+QmGrqEWxDdatdd1rSmet7YWUj+H5
17
-
18
- hIJmFtPYbk/ik89NCTYe+XW/RZrTTaUgfPSsYFifl/JanFRa/bE='
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- zero_push (1.3.0)
4
+ zero_push (2.0.0)
5
5
  faraday (~> 0.8.5)
6
6
  faraday_middleware (~> 0.9.0)
7
7
 
data/README.md CHANGED
@@ -18,10 +18,29 @@ Or install it yourself as:
18
18
 
19
19
  ## Usage
20
20
 
21
+ ### Rails Generator
21
22
  Generate the ZeroPush initializer if you are using Ruby on Rails.
22
23
 
23
24
  $ rails g zero_push:install
24
25
 
26
+ ### API Client
27
+
28
+ The easiest way to use the API client is to set the auth token at the module level and call methods on the ZeroPush module.
29
+
30
+ ZeroPush.auth_token = 'your-auth-token'
31
+ ZeroPush.verify_credentials
32
+ => true
33
+
34
+ If your application requires multiple API client instances, that can be achieved as well.
35
+
36
+ client_1 = ZeroPush.client('auth-token-1')
37
+ client_1.verify_credentials
38
+ => true
39
+
40
+ client_2 = ZeroPush.client('auth-token-2')
41
+ client_2.verify_credentials
42
+ => true
43
+
25
44
  For more documentation, check our [Getting Started Guide with ZeroPush](https://zeropush.com/documentation)
26
45
 
27
46
  ## Contributing
@@ -2,38 +2,111 @@ require 'faraday_middleware'
2
2
 
3
3
  module ZeroPush
4
4
  class Client
5
+ URL = 'https://api.zeropush.com'.freeze
6
+
7
+ attr_accessor :auth_token
5
8
 
6
9
  def initialize(auth_token)
7
- @faraday = Faraday.new(url: ZeroPush::URL) do |c|
8
- c.token_auth auth_token # Set the Authorization header
9
- c.request :url_encoded # form-encode POST params
10
- c.response :json, :content_type => /\bjson$/ # parse responses to JSON
11
- c.adapter Faraday.default_adapter # Net::HTTP
12
- end
10
+ self.auth_token = auth_token
13
11
  end
14
12
 
13
+ # verifies credentials
14
+ #
15
+ # @return [Boolean]
15
16
  def verify_credentials
16
- response = faraday.get('/verify_credentials')
17
+ response = client.get('/verify_credentials')
17
18
  response.status == 200
18
19
  end
19
20
 
21
+ # Sends a notification to the list of devices
22
+ #
23
+ # @param params [Hash]
24
+ #
25
+ # Ex.
26
+ # {"sent_count":10,"inactive_tokens":[],"unregistered_tokens":["abc"]}
20
27
  def notify(params)
21
- faraday.post('/notify', params)
28
+ client.post('/notify', params)
29
+ end
30
+
31
+ # Sends a notification to all of the devices registered with the ZeroPush backend
32
+ #
33
+ # @param params [Hash]
34
+ #
35
+ # Ex.
36
+ # {"sent_count":10}
37
+ def broadcast(params)
38
+ client.post('/broadcast', params)
39
+ end
40
+
41
+ # Subscribes a device to a particular notification channel
42
+ #
43
+ # @param device_token [String]
44
+ # @param channel [String]
45
+ #
46
+ # Ex.
47
+ # {"device_token":"abc", "channels":["foo"]}
48
+ def subscribe(device_token, channel)
49
+ client.post("/subscribe/#{channel}", device_token:device_token)
50
+ end
51
+
52
+ # Unsubscribes a device from a particular notification channel
53
+ #
54
+ # @param device_token [String]
55
+ # @param channel [String]
56
+ #
57
+ # Ex.
58
+ # {"device_token":"abc", "channels":[]}
59
+ def unsubscribe(device_token, channel)
60
+ client.delete("/subscribe/#{channel}", device_token:device_token)
22
61
  end
23
62
 
63
+ # Registers a device token with the ZeroPush backend
64
+ #
65
+ # @param device_token
66
+ #
67
+ # Ex.
68
+ # {"message":"ok"}
24
69
  def register(device_token)
25
- faraday.post('/register', device_token: device_token)
70
+ client.post('/register', device_token: device_token)
26
71
  end
27
72
 
73
+ # Sets the badge for a particular device
74
+ #
75
+ # @param device_token
76
+ # @param badge
77
+ #
78
+ # Ex.
79
+ # {"message":"ok"}
28
80
  def set_badge(device_token, badge)
29
- faraday.post('/set_badge', device_token: device_token, badge: badge)
81
+ client.post('/set_badge', device_token: device_token, badge: badge)
30
82
  end
31
83
 
84
+ # Returns a list of tokens that have been marked inactive
85
+ #
86
+ # Ex.
87
+ # [
88
+ # {
89
+ # "device_token":"238b8cb09011850cb4bd544dfe0c8f5eeab73d7eeaae9bdca59076db4ae49947",
90
+ # "marked_inactive_at":"2013-07-17T01:27:53-04:00"
91
+ # },
92
+ # {
93
+ # "device_token":"8c97be6643eea2143322005bc4c44a1aee5e549bce5e2bb2116114f45484ddaf",
94
+ # "marked_inactive_at":"2013-07-17T01:27:50-04:00"
95
+ # }
96
+ # ]
32
97
  def inactive_tokens
33
- faraday.get('/inactive_tokens')
98
+ client.get('/inactive_tokens')
34
99
  end
35
100
 
36
- private
37
- attr_reader :faraday
101
+ # the HTTP client configured for API requests
102
+ #
103
+ def client
104
+ Faraday.new(url: URL) do |c|
105
+ c.token_auth self.auth_token
106
+ c.request :url_encoded # form-encode POST params
107
+ c.response :json, :content_type => /\bjson$/ # parse responses to JSON
108
+ c.adapter Faraday.default_adapter # Net::HTTP
109
+ end
110
+ end
38
111
  end
39
112
  end
@@ -1,3 +1,3 @@
1
1
  module ZeroPush
2
- VERSION = "1.3.0"
2
+ VERSION = '2.0.0'.freeze
3
3
  end
data/lib/zero_push.rb CHANGED
@@ -1,61 +1,33 @@
1
- require 'faraday'
2
- require 'zero_push/client'
3
1
  require 'zero_push/version'
2
+ require 'zero_push/client'
3
+ require 'faraday'
4
4
 
5
5
  module ZeroPush
6
- URL = "https://api.zeropush.com"
7
-
8
6
  class << self
9
7
  attr_accessor :auth_token
10
8
 
11
- # verifies credentials
12
- #
13
- # @return [Boolean]
14
9
  def verify_credentials
15
- response = client.get('/verify_credentials')
16
- response.status == 200
10
+ client.verify_credentials
17
11
  end
18
12
 
19
- # Sends a notification to the list of devices
20
- #
21
- # @param params [Hash]
22
- # @return response
23
13
  def notify(params)
24
- client.post('/notify', params)
14
+ client.notify(params)
25
15
  end
26
16
 
27
- # Registers a device token with the ZeroPush backend
28
- #
29
- # @param device_token
30
- # @return response
31
17
  def register(device_token)
32
- client.post('/register', device_token: device_token)
18
+ client.register(device_token)
33
19
  end
34
20
 
35
- # Sets the badge for a particular device
36
- #
37
- # @param device_token
38
- # @param badge
39
- # @return response
40
21
  def set_badge(device_token, badge)
41
- client.post('/set_badge', device_token: device_token, badge: badge)
22
+ client.set_badge(device_token, badge)
42
23
  end
43
24
 
44
- # Returns a list of tokens that have been marked inactive
45
- #
46
- # @returns array
47
25
  def inactive_tokens
48
- client.get('/inactive_tokens')
26
+ client.inactive_tokens
49
27
  end
50
28
 
51
- # the HTTP client configured for API requests
52
- #
53
- def client
54
- Faraday.new(url: URL) do |c|
55
- c.token_auth self.auth_token
56
- c.request :url_encoded # form-encode POST params
57
- c.adapter Faraday.default_adapter # Net::HTTP
58
- end
29
+ def client(auth_token = self.auth_token)
30
+ ZeroPush::Client.new(auth_token)
59
31
  end
60
32
  end
61
33
  end
@@ -0,0 +1,57 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: post
5
+ uri: https://api.zeropush.com/broadcast
6
+ body:
7
+ encoding: US-ASCII
8
+ string: alert=hi
9
+ headers:
10
+ Authorization:
11
+ - Token token="test_token"
12
+ User-Agent:
13
+ - Faraday v0.8.8
14
+ Content-Type:
15
+ - application/x-www-form-urlencoded
16
+ response:
17
+ status:
18
+ code: 200
19
+ message:
20
+ headers:
21
+ server:
22
+ - nginx/1.2.6
23
+ date:
24
+ - Thu, 06 Jun 2013 20:13:18 GMT
25
+ content-type:
26
+ - application/json; charset=utf-8
27
+ transfer-encoding:
28
+ - chunked
29
+ connection:
30
+ - close
31
+ status:
32
+ - 200 OK
33
+ strict-transport-security:
34
+ - max-age=31536000
35
+ x-ua-compatible:
36
+ - IE=Edge,chrome=1
37
+ etag:
38
+ - ! '"58f271cd44a149e655e5c75c6ac3d588"'
39
+ cache-control:
40
+ - max-age=0, private, must-revalidate
41
+ set-cookie:
42
+ - _zero-push-session=BAh7BkkiD3Nlc3Npb25faWQGOgZFRkkiJTAyN2ZlNmZiYmE2NDAwZTAwNDhkZjljMDhjOTk5MDMzBjsAVA%3D%3D--123a1dc1afeac26db5bea15eea8574e82e0d91b2;
43
+ path=/; secure; HttpOnly
44
+ x-request-id:
45
+ - cb7a26e273628f7f0c9f3c4bbcfb5007
46
+ x-runtime:
47
+ - '0.045243'
48
+ x-rack-cache:
49
+ - invalidate, pass
50
+ x-powered-by:
51
+ - Phusion Passenger 4.0.2
52
+ body:
53
+ encoding: US-ASCII
54
+ string: ! '{"sent_count":10}'
55
+ http_version:
56
+ recorded_at: Thu, 06 Jun 2013 20:13:18 GMT
57
+ recorded_with: VCR 2.4.0
@@ -0,0 +1,46 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: post
5
+ uri: https://api.zeropush.com/subscribe/foo_channel
6
+ body:
7
+ encoding: US-ASCII
8
+ string: device_token=abc
9
+ headers:
10
+ Authorization:
11
+ - Token token="test_token"
12
+ User-Agent:
13
+ - Faraday v0.8.8
14
+ Content-Type:
15
+ - application/x-www-form-urlencoded
16
+ response:
17
+ status:
18
+ code: 200
19
+ message:
20
+ headers:
21
+ server:
22
+ - nginx/1.2.6
23
+ date:
24
+ - Tue, 24 Sep 2013 21:04:42 GMT
25
+ content-type:
26
+ - application/json; charset=utf-8
27
+ transfer-encoding:
28
+ - chunked
29
+ connection:
30
+ - close
31
+ status:
32
+ - 200 OK
33
+ strict-transport-security:
34
+ - max-age=31536000
35
+ etag:
36
+ - "\"87bf21d9412e1d8611e6bdbe67ee3701\""
37
+ cache-control:
38
+ - max-age=0, private, must-revalidate
39
+ x-request-id:
40
+ - 79f5fe32-7d1e-4ffd-b90f-d17eaa7547da
41
+ body:
42
+ encoding: US-ASCII
43
+ string: "{\"device_token\":\"abc\",\"channels\":[\"foo_channel\"]}"
44
+ http_version:
45
+ recorded_at: Tue, 24 Sep 2013 21:04:42 GMT
46
+ recorded_with: VCR 2.4.0
@@ -0,0 +1,44 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: delete
5
+ uri: https://api.zeropush.com/subscribe/foo_channel?device_token=abc
6
+ body:
7
+ encoding: US-ASCII
8
+ string: ""
9
+ headers:
10
+ Authorization:
11
+ - Token token="test_token"
12
+ User-Agent:
13
+ - Faraday v0.8.8
14
+ response:
15
+ status:
16
+ code: 200
17
+ message:
18
+ headers:
19
+ server:
20
+ - nginx/1.2.6
21
+ date:
22
+ - Tue, 24 Sep 2013 21:04:42 GMT
23
+ content-type:
24
+ - application/json; charset=utf-8
25
+ transfer-encoding:
26
+ - chunked
27
+ connection:
28
+ - close
29
+ status:
30
+ - 200 OK
31
+ strict-transport-security:
32
+ - max-age=31536000
33
+ etag:
34
+ - "\"87bf21d9412e1d8611e6bdbe67ee3701\""
35
+ cache-control:
36
+ - max-age=0, private, must-revalidate
37
+ x-request-id:
38
+ - 79f5fe32-7d1e-4ffd-b90f-d17eaa7547da
39
+ body:
40
+ encoding: US-ASCII
41
+ string: "{\"device_token\":\"abc\",\"channels\":[]}"
42
+ http_version:
43
+ recorded_at: Tue, 24 Sep 2013 21:04:42 GMT
44
+ recorded_with: VCR 2.4.0
@@ -15,7 +15,7 @@ class ZeroPush::GeneratorTest < Rails::Generators::TestCase
15
15
  production_config = %Q|ZeroPush.auth_token = '#{production_token}'|
16
16
  assert(initializer.include?(production_config), "The initializer doesn't include the production configuration")
17
17
 
18
- development_config = %Q|ZeroPush.auth_token = '#{development_token}|
18
+ development_config = %Q|ZeroPush.auth_token = '#{development_token}'|
19
19
  assert(initializer.include?(development_config), "The initializer doesn't include the development configuration")
20
20
  end
21
21
  end
@@ -2,129 +2,168 @@ require 'spec_helper'
2
2
 
3
3
  describe ZeroPush::Client do
4
4
 
5
- let(:auth_token){ENV["AUTH_TOKEN"] || "test_token"}
6
- let(:verified_client){ZeroPush::Client.new(auth_token)}
7
- let(:unverified_client){ZeroPush::Client.new("not a valid token")}
5
+ let(:auth_token){ENV['AUTH_TOKEN'] || 'test_token'}
6
+ let(:client){ZeroPush.client(auth_token)}
8
7
 
9
- describe "#verify_credentials" do
8
+ describe '#verify_credentials' do
10
9
  before do
11
- VCR.insert_cassette "verify_credentials"
10
+ VCR.insert_cassette 'verify_credentials'
12
11
  end
13
12
 
14
13
  after do
15
14
  VCR.eject_cassette
16
15
  end
17
16
 
18
- describe "for a verified client" do
19
- let(:response){verified_client.verify_credentials}
20
-
21
- it "should verify credentials successfully" do
22
- response.must_equal true
23
- end
17
+ it 'should verify credentials successfully' do
18
+ client.verify_credentials.must_equal true
24
19
  end
25
20
 
26
- describe "for an unverified client" do
27
- let(:response){unverified_client.verify_credentials}
28
-
29
- it "should fail to verify credentials" do
30
- response.must_equal false
31
- end
21
+ it 'should fail to verify credentials' do
22
+ client = ZeroPush.client('not a valid token')
23
+ client.verify_credentials.must_equal false
32
24
  end
33
25
  end
34
26
 
35
- describe "#notify" do
27
+ describe '#notify' do
36
28
  before do
37
- VCR.insert_cassette "notify"
29
+ VCR.insert_cassette 'notify'
38
30
  end
39
31
 
40
32
  after do
41
33
  VCR.eject_cassette
42
34
  end
43
35
 
44
- let(:response){verified_client.notify(device_tokens: ['abc'], alert: 'hi')}
36
+ let(:response){client.notify(device_tokens: ['abc'], alert: 'hi')}
45
37
 
46
- it "should return a Faraday::Response" do
47
- response.class.must_equal Faraday::Response
48
- end
49
-
50
- it "should return a Hash for a response body" do
38
+ it 'should return a hash' do
51
39
  response.body.class.must_equal Hash
52
40
  end
53
41
 
54
- it "should be successful" do
55
- response.status.must_equal 200
42
+ it 'should construct the request' do
43
+ response.body['sent_count'].must_equal 0
44
+ response.body['inactive_tokens'].must_equal []
56
45
  end
57
46
  end
58
47
 
59
- describe "#register" do
48
+ describe '#register' do
60
49
  before do
61
- VCR.insert_cassette "register"
50
+ VCR.insert_cassette 'register'
62
51
  end
63
52
 
64
53
  after do
65
54
  VCR.eject_cassette
66
55
  end
67
56
 
68
- let(:response){verified_client.register('abc')}
57
+ let(:response){client.register('abc')}
58
+
59
+ it 'should return a hash' do
60
+ response.body.class.must_equal Hash
61
+ end
62
+
63
+ it 'should register the device' do
64
+ response.body['message'].must_equal 'ok'
65
+ end
66
+ end
67
+
68
+ describe '#subscribe' do
69
+ before do
70
+ VCR.insert_cassette 'subscribe'
71
+ end
69
72
 
70
- it "should return a Faraday::Response" do
71
- response.class.must_equal Faraday::Response
73
+ after do
74
+ VCR.eject_cassette
72
75
  end
73
76
 
74
- it "should return a Hash for a response body" do
77
+ let(:response){client.subscribe('abc', 'foo_channel')}
78
+
79
+ it 'should return a hash' do
75
80
  response.body.class.must_equal Hash
76
81
  end
77
82
 
78
- it "should register the device" do
79
- response.status.must_equal 200
83
+ it 'should subscribe a device to a channel' do
84
+ response.body['device_token'].must_equal 'abc'
85
+ response.body['channels'].must_equal ['foo_channel']
80
86
  end
81
87
  end
82
88
 
83
- describe "#set_badge" do
89
+ describe '#unsubscribe' do
84
90
  before do
85
- VCR.insert_cassette "set_badge"
91
+ VCR.insert_cassette 'unsubscribe'
86
92
  end
87
93
 
88
94
  after do
89
95
  VCR.eject_cassette
90
96
  end
91
97
 
92
- let(:response){verified_client.set_badge('abc', 10)}
98
+ let(:response){client.unsubscribe('abc', 'foo_channel')}
99
+
100
+ it 'should return a hash' do
101
+ response.body.class.must_equal Hash
102
+ end
103
+
104
+ it 'should subscribe a device to a channel' do
105
+ response.body['device_token'].must_equal 'abc'
106
+ response.body['channels'].must_equal []
107
+ end
108
+ end
109
+
110
+ describe '#broadcast' do
111
+ before do
112
+ VCR.insert_cassette 'broadcast'
113
+ end
93
114
 
94
- it "should return a Faraday::Response" do
95
- response.class.must_equal Faraday::Response
115
+ after do
116
+ VCR.eject_cassette
96
117
  end
97
118
 
98
- it "should return a Hash for a response body" do
119
+ let(:response){client.broadcast(alert:'hi')}
120
+
121
+ it 'should return a hash' do
99
122
  response.body.class.must_equal Hash
100
123
  end
101
124
 
102
- it "should set the device's badge" do
103
- response.status.must_equal 200
125
+ it 'should broadcast a notification to all the devices' do
126
+ response.body['sent_count'].must_equal 10
104
127
  end
105
128
  end
106
129
 
107
- describe "#inactive_tokens" do
130
+ describe '#set_badge' do
108
131
  before do
109
- VCR.insert_cassette "inactive_tokens"
132
+ VCR.insert_cassette 'set_badge'
110
133
  end
111
134
 
112
135
  after do
113
136
  VCR.eject_cassette
114
137
  end
115
138
 
116
- let(:response){verified_client.inactive_tokens}
139
+ let(:response){client.set_badge('abc', 10)}
140
+
141
+ it 'should return a hash' do
142
+ response.body.class.must_equal Hash
143
+ end
144
+
145
+ it 'should set the device\'s badge' do
146
+ response.body['message'].must_equal 'ok'
147
+ end
148
+ end
149
+
150
+ describe '#inactive_tokens' do
151
+ before do
152
+ VCR.insert_cassette 'inactive_tokens'
153
+ end
117
154
 
118
- it "should return a Faraday::Response" do
119
- response.class.must_equal Faraday::Response
155
+ after do
156
+ VCR.eject_cassette
120
157
  end
121
158
 
122
- it "should return an Array for a response body" do
159
+ let(:response){client.inactive_tokens}
160
+
161
+ it 'should return an array' do
123
162
  response.body.class.must_equal Array
124
163
  end
125
164
 
126
- it "should get a list of inactive tokens" do
127
- response.status.must_equal 200
165
+ it 'should get a list of inactive tokens' do
166
+ response.body.count.must_equal 2
128
167
  end
129
168
  end
130
169
  end
@@ -1,134 +1,13 @@
1
1
  require 'spec_helper'
2
- require 'json'
3
2
 
4
3
  describe ZeroPush do
5
4
  before do
6
- ZeroPush.auth_token = ENV["AUTH_TOKEN"] || "test_token"
5
+ ZeroPush.auth_token = ENV['AUTH_TOKEN'] || 'test_token'
7
6
  end
8
7
 
9
- describe ".client" do
10
-
11
- let(:client){ZeroPush.client}
12
-
13
- it "should return a Faraday client" do
14
- client.class.must_equal Faraday::Connection
15
- end
16
- end
17
-
18
- describe ".verify_credentials" do
19
- before do
20
- VCR.insert_cassette "verify_credentials"
21
- end
22
-
23
- after do
24
- VCR.eject_cassette
25
- end
26
-
27
- let(:response){ZeroPush.verify_credentials}
28
-
29
- it "should verify credentials successfully" do
30
- response.must_equal true
31
- end
32
-
33
- it "should fail to verify credentials" do
34
- ZeroPush.auth_token = "not a valid token"
35
- response.must_equal false
36
- end
37
- end
38
-
39
- describe ".notify" do
40
- before do
41
- VCR.insert_cassette "notify"
42
- end
43
-
44
- after do
45
- VCR.eject_cassette
46
- end
47
-
48
- let(:response){ZeroPush.notify(device_tokens: ['abc'], alert: 'hi')}
49
-
50
- it "should return a Faraday::Response" do
51
- response.class.must_equal Faraday::Response
52
- end
53
-
54
- it "should return a response with a body that can be parsed into a Hash" do
55
- JSON.parse(response.body).class.must_equal Hash
56
- end
57
-
58
- it "should be successful" do
59
- response.status.must_equal 200
60
- end
61
- end
62
-
63
- describe ".register" do
64
- before do
65
- VCR.insert_cassette "register"
66
- end
67
-
68
- after do
69
- VCR.eject_cassette
70
- end
71
-
72
- let(:response){ZeroPush.register('abc')}
73
-
74
- it "should return a Faraday::Response" do
75
- response.class.must_equal Faraday::Response
76
- end
77
-
78
- it "should return a response with a body that can be parsed into a Hash" do
79
- JSON.parse(response.body).class.must_equal Hash
80
- end
81
-
82
- it "should register the device" do
83
- response.status.must_equal 200
84
- end
85
- end
86
-
87
- describe ".set_badge" do
88
- before do
89
- VCR.insert_cassette "set_badge"
90
- end
91
-
92
- after do
93
- VCR.eject_cassette
94
- end
95
-
96
- let(:response){ZeroPush.set_badge('abc', 10)}
97
-
98
- it "should return a Faraday::Response" do
99
- response.class.must_equal Faraday::Response
100
- end
101
-
102
- it "should return a response with a body that can be parsed into a Hash" do
103
- JSON.parse(response.body).class.must_equal Hash
104
- end
105
-
106
- it "should set the device's badge" do
107
- response.status.must_equal 200
108
- end
109
- end
110
-
111
- describe ".inactive_tokens" do
112
- before do
113
- VCR.insert_cassette "inactive_tokens"
114
- end
115
-
116
- after do
117
- VCR.eject_cassette
118
- end
119
-
120
- let(:response){ZeroPush.inactive_tokens}
121
-
122
- it "should return a Faraday::Response" do
123
- response.class.must_equal Faraday::Response
124
- end
125
-
126
- it "should return a response with a body that can be parsed into an Array" do
127
- JSON.parse(response.body).class.must_equal Array
128
- end
129
-
130
- it "should get a list of inactive tokens" do
131
- response.status.must_equal 200
8
+ describe '.client' do
9
+ it 'should return a client instance' do
10
+ ZeroPush.client.class.must_equal ZeroPush::Client
132
11
  end
133
12
  end
134
13
  end
data/zero_push.gemspec CHANGED
@@ -11,6 +11,7 @@ Gem::Specification.new do |gem|
11
11
  gem.summary = %q{A gem for interacting with the ZeroPush API. (http://zeropush.com)}
12
12
  gem.description = %q{ZeroPush is a simple service for sending iOS push notifications. (http://zeropush.com)}
13
13
  gem.homepage = "https://zeropush.com"
14
+ gem.license = 'MIT'
14
15
 
15
16
  gem.files = `git ls-files`.split($/)
16
17
  gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
@@ -19,7 +20,7 @@ Gem::Specification.new do |gem|
19
20
  gem.required_ruby_version = '>= 1.9'
20
21
 
21
22
  gem.add_dependency "faraday", "~> 0.8.5"
22
- gem.add_dependency "faraday_middleware", "~> 0.9.0"
23
+ gem.add_dependency "faraday_middleware", "~> 0.9.0"
23
24
 
24
25
  gem.add_development_dependency 'actionpack', '~> 3.2.11'
25
26
  gem.add_development_dependency 'activesupport', '~> 3.2.11'
metadata CHANGED
@@ -1,8 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: zero_push
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.3.0
5
- prerelease:
4
+ version: 2.0.0
6
5
  platform: ruby
7
6
  authors:
8
7
  - Stefan Natchev
@@ -10,12 +9,11 @@ authors:
10
9
  autorequire:
11
10
  bindir: bin
12
11
  cert_chain: []
13
- date: 2013-08-20 00:00:00.000000000 Z
12
+ date: 2013-09-24 00:00:00.000000000 Z
14
13
  dependencies:
15
14
  - !ruby/object:Gem::Dependency
16
15
  name: faraday
17
16
  requirement: !ruby/object:Gem::Requirement
18
- none: false
19
17
  requirements:
20
18
  - - ~>
21
19
  - !ruby/object:Gem::Version
@@ -23,7 +21,6 @@ dependencies:
23
21
  type: :runtime
24
22
  prerelease: false
25
23
  version_requirements: !ruby/object:Gem::Requirement
26
- none: false
27
24
  requirements:
28
25
  - - ~>
29
26
  - !ruby/object:Gem::Version
@@ -31,7 +28,6 @@ dependencies:
31
28
  - !ruby/object:Gem::Dependency
32
29
  name: faraday_middleware
33
30
  requirement: !ruby/object:Gem::Requirement
34
- none: false
35
31
  requirements:
36
32
  - - ~>
37
33
  - !ruby/object:Gem::Version
@@ -39,7 +35,6 @@ dependencies:
39
35
  type: :runtime
40
36
  prerelease: false
41
37
  version_requirements: !ruby/object:Gem::Requirement
42
- none: false
43
38
  requirements:
44
39
  - - ~>
45
40
  - !ruby/object:Gem::Version
@@ -47,7 +42,6 @@ dependencies:
47
42
  - !ruby/object:Gem::Dependency
48
43
  name: actionpack
49
44
  requirement: !ruby/object:Gem::Requirement
50
- none: false
51
45
  requirements:
52
46
  - - ~>
53
47
  - !ruby/object:Gem::Version
@@ -55,7 +49,6 @@ dependencies:
55
49
  type: :development
56
50
  prerelease: false
57
51
  version_requirements: !ruby/object:Gem::Requirement
58
- none: false
59
52
  requirements:
60
53
  - - ~>
61
54
  - !ruby/object:Gem::Version
@@ -63,7 +56,6 @@ dependencies:
63
56
  - !ruby/object:Gem::Dependency
64
57
  name: activesupport
65
58
  requirement: !ruby/object:Gem::Requirement
66
- none: false
67
59
  requirements:
68
60
  - - ~>
69
61
  - !ruby/object:Gem::Version
@@ -71,7 +63,6 @@ dependencies:
71
63
  type: :development
72
64
  prerelease: false
73
65
  version_requirements: !ruby/object:Gem::Requirement
74
- none: false
75
66
  requirements:
76
67
  - - ~>
77
68
  - !ruby/object:Gem::Version
@@ -79,7 +70,6 @@ dependencies:
79
70
  - !ruby/object:Gem::Dependency
80
71
  name: minitest
81
72
  requirement: !ruby/object:Gem::Requirement
82
- none: false
83
73
  requirements:
84
74
  - - ~>
85
75
  - !ruby/object:Gem::Version
@@ -87,7 +77,6 @@ dependencies:
87
77
  type: :development
88
78
  prerelease: false
89
79
  version_requirements: !ruby/object:Gem::Requirement
90
- none: false
91
80
  requirements:
92
81
  - - ~>
93
82
  - !ruby/object:Gem::Version
@@ -95,7 +84,6 @@ dependencies:
95
84
  - !ruby/object:Gem::Dependency
96
85
  name: mocha
97
86
  requirement: !ruby/object:Gem::Requirement
98
- none: false
99
87
  requirements:
100
88
  - - ~>
101
89
  - !ruby/object:Gem::Version
@@ -103,7 +91,6 @@ dependencies:
103
91
  type: :development
104
92
  prerelease: false
105
93
  version_requirements: !ruby/object:Gem::Requirement
106
- none: false
107
94
  requirements:
108
95
  - - ~>
109
96
  - !ruby/object:Gem::Version
@@ -111,7 +98,6 @@ dependencies:
111
98
  - !ruby/object:Gem::Dependency
112
99
  name: rake
113
100
  requirement: !ruby/object:Gem::Requirement
114
- none: false
115
101
  requirements:
116
102
  - - ~>
117
103
  - !ruby/object:Gem::Version
@@ -119,7 +105,6 @@ dependencies:
119
105
  type: :development
120
106
  prerelease: false
121
107
  version_requirements: !ruby/object:Gem::Requirement
122
- none: false
123
108
  requirements:
124
109
  - - ~>
125
110
  - !ruby/object:Gem::Version
@@ -127,7 +112,6 @@ dependencies:
127
112
  - !ruby/object:Gem::Dependency
128
113
  name: railties
129
114
  requirement: !ruby/object:Gem::Requirement
130
- none: false
131
115
  requirements:
132
116
  - - ~>
133
117
  - !ruby/object:Gem::Version
@@ -135,7 +119,6 @@ dependencies:
135
119
  type: :development
136
120
  prerelease: false
137
121
  version_requirements: !ruby/object:Gem::Requirement
138
- none: false
139
122
  requirements:
140
123
  - - ~>
141
124
  - !ruby/object:Gem::Version
@@ -143,7 +126,6 @@ dependencies:
143
126
  - !ruby/object:Gem::Dependency
144
127
  name: vcr
145
128
  requirement: !ruby/object:Gem::Requirement
146
- none: false
147
129
  requirements:
148
130
  - - ~>
149
131
  - !ruby/object:Gem::Version
@@ -151,7 +133,6 @@ dependencies:
151
133
  type: :development
152
134
  prerelease: false
153
135
  version_requirements: !ruby/object:Gem::Requirement
154
- none: false
155
136
  requirements:
156
137
  - - ~>
157
138
  - !ruby/object:Gem::Version
@@ -176,10 +157,13 @@ files:
176
157
  - lib/zero_push.rb
177
158
  - lib/zero_push/client.rb
178
159
  - lib/zero_push/version.rb
160
+ - spec/fixtures/broadcast.yml
179
161
  - spec/fixtures/inactive_tokens.yml
180
162
  - spec/fixtures/notify.yml
181
163
  - spec/fixtures/register.yml
182
164
  - spec/fixtures/set_badge.yml
165
+ - spec/fixtures/subscribe.yml
166
+ - spec/fixtures/unsubscribe.yml
183
167
  - spec/fixtures/verify_credentials.yml
184
168
  - spec/generator_spec.rb
185
169
  - spec/spec_helper.rb
@@ -188,37 +172,39 @@ files:
188
172
  - zero_push.gemspec
189
173
  - zeropush-header.png
190
174
  homepage: https://zeropush.com
191
- licenses: []
175
+ licenses:
176
+ - MIT
177
+ metadata: {}
192
178
  post_install_message:
193
179
  rdoc_options: []
194
180
  require_paths:
195
181
  - lib
196
182
  required_ruby_version: !ruby/object:Gem::Requirement
197
- none: false
198
183
  requirements:
199
184
  - - ! '>='
200
185
  - !ruby/object:Gem::Version
201
186
  version: '1.9'
202
187
  required_rubygems_version: !ruby/object:Gem::Requirement
203
- none: false
204
188
  requirements:
205
189
  - - ! '>='
206
190
  - !ruby/object:Gem::Version
207
191
  version: '0'
208
192
  requirements: []
209
193
  rubyforge_project:
210
- rubygems_version: 1.8.24
194
+ rubygems_version: 2.1.0
211
195
  signing_key:
212
- specification_version: 3
196
+ specification_version: 4
213
197
  summary: A gem for interacting with the ZeroPush API. (http://zeropush.com)
214
198
  test_files:
199
+ - spec/fixtures/broadcast.yml
215
200
  - spec/fixtures/inactive_tokens.yml
216
201
  - spec/fixtures/notify.yml
217
202
  - spec/fixtures/register.yml
218
203
  - spec/fixtures/set_badge.yml
204
+ - spec/fixtures/subscribe.yml
205
+ - spec/fixtures/unsubscribe.yml
219
206
  - spec/fixtures/verify_credentials.yml
220
207
  - spec/generator_spec.rb
221
208
  - spec/spec_helper.rb
222
209
  - spec/zero_push_client_spec.rb
223
210
  - spec/zero_push_spec.rb
224
- has_rdoc: