push_bot 0.4.0 → 0.4.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: e065854bc27948088fbb46998f9d938540739268
4
- data.tar.gz: 3c4f45347da77397b8a3f40ea04df2b2c76517a5
3
+ metadata.gz: 2a18a2a8074b095dc89b6967c33cb7a01f75c549
4
+ data.tar.gz: 238aa353d064729a861f86c4b5888fdf99fd3912
5
5
  SHA512:
6
- metadata.gz: 1e24692a953b753c62b614cdcfc3febb768857223c56d4242ee916eead25f3967e549561768d7a3ae8d8a589ec68e8453cd4ae5c5573a669c9efa9a3f8dc0729
7
- data.tar.gz: 40ca316c939f63c13cddac4ff62dbab1e565522c2e3770a58e762d2ce4c2a3c17ffb801297d2c31ff5933c532e1a288b94333405bc79d01150c24f6657fc6b55
6
+ metadata.gz: 8629003eec5a8a0ae9e8ec7efc4a4c4d0b6ab8a8002be35d6f7810ed12564e5f37e374e1c34d8136af53b66f78bed934a0e35289d3860087ed966eb05c5ae664
7
+ data.tar.gz: 59a53aac57c678831e176312819ca7d6ed52226afbbd65b6903d84de030b4b3d21398ee7c9eb4e357e18a632e0aea9741cb3b0058ac2a9271d239076a51d6dc2
data/.rspec ADDED
@@ -0,0 +1,2 @@
1
+ --color
2
+ --require spec_helper
data/Gemfile.lock CHANGED
@@ -1,16 +1,29 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- push_bot (0.4.0)
4
+ push_bot (0.4.1)
5
5
  typhoeus (~> 0.6)
6
6
 
7
7
  GEM
8
8
  remote: https://rubygems.org/
9
9
  specs:
10
+ diff-lcs (1.2.5)
10
11
  ethon (0.7.1)
11
12
  ffi (>= 1.3.0)
12
13
  ffi (1.9.5)
13
14
  rake (10.3.2)
15
+ rspec (3.1.0)
16
+ rspec-core (~> 3.1.0)
17
+ rspec-expectations (~> 3.1.0)
18
+ rspec-mocks (~> 3.1.0)
19
+ rspec-core (3.1.5)
20
+ rspec-support (~> 3.1.0)
21
+ rspec-expectations (3.1.2)
22
+ diff-lcs (>= 1.2.0, < 2.0)
23
+ rspec-support (~> 3.1.0)
24
+ rspec-mocks (3.1.2)
25
+ rspec-support (~> 3.1.0)
26
+ rspec-support (3.1.1)
14
27
  typhoeus (0.6.9)
15
28
  ethon (>= 0.7.1)
16
29
 
@@ -21,3 +34,4 @@ DEPENDENCIES
21
34
  bundler (~> 1.7)
22
35
  push_bot!
23
36
  rake (~> 10.0)
37
+ rspec (~> 3.1)
data/README.md CHANGED
@@ -35,6 +35,7 @@ end
35
35
  # push token is the token given my the phone's OS
36
36
  # platform is :ios or :android
37
37
 
38
+ device = PushBot::Device.new('USER TOKEN', :ios)
38
39
  device = PushBot::Device.new(user.push_token, user.platform)
39
40
  device.add
40
41
  ```
data/lib/push_bot.rb CHANGED
@@ -1,3 +1,5 @@
1
+ require 'forwardable'
2
+
1
3
  require 'push_bot/api'
2
4
  require 'push_bot/config'
3
5
  require 'push_bot/device'
@@ -11,14 +11,19 @@ module PushBot
11
11
  :platform => platform
12
12
  ), :batch
13
13
 
14
- if user?
14
+ if user? && !(Array === token)
15
15
  type = nil
16
16
  options[:token] = token
17
+ else
18
+ options[:tokens] = token
17
19
  end
18
20
 
19
21
  Request.new(:deviceToken).put(type, options)
20
22
  end
21
23
 
24
+ # Retrieve information about the device with this token
25
+ #
26
+ # @return {PushBot::Response}
22
27
  def info
23
28
  Request.new(:deviceToken).get(:one, :token => token)
24
29
  end
@@ -2,6 +2,10 @@ module PushBot
2
2
  class Platform
3
3
  VALUES = %w(ios android)
4
4
 
5
+ # Translate an array of :ios / :android into an array of integer strings
6
+ #
7
+ # @param platforms any of `:ios` and `:android`
8
+ # @return Array[<String>]
5
9
  def self.parse(*platforms)
6
10
  platforms = platforms.flatten.map! {|p| VALUES.index(p.to_s.downcase) }
7
11
  raise(ArgumentError, 'Platform must be ios or android') if platforms.any?(&:nil?)
@@ -28,7 +28,7 @@ module PushBot
28
28
  :headers => {
29
29
  :'X-PushBots-AppID' => Config.config.id,
30
30
  :'X-PushBots-Secret' => Config.config.secret,
31
- :'Content-Type' => 'application/json'
31
+ :'Content-Type' => :'application/json'
32
32
  }
33
33
  }
34
34
 
@@ -36,11 +36,9 @@ module PushBot
36
36
  request_options[:headers][:Token] = options[:token]
37
37
  end
38
38
 
39
- puts "Sending request:#{type} url:#{url} options:#{request_options.inspect}"
40
-
41
39
  request = Typhoeus::Request.new(url, request_options)
42
40
 
43
- Response.new(request)
41
+ Response.new { request.run }
44
42
  end
45
43
  end
46
44
  end
@@ -1,11 +1,11 @@
1
1
  module PushBot
2
2
  class Response
3
- attr_reader :raw_response, :error
3
+ extend Forwardable
4
4
 
5
- def initialize(request)
6
- @raw_response = request.run
5
+ attr_reader :raw_response, :error
7
6
 
8
- @success = raw_response.success?
7
+ def initialize
8
+ @raw_response = yield
9
9
  rescue => e
10
10
  @error = e
11
11
  end
@@ -15,20 +15,16 @@ module PushBot
15
15
  end
16
16
 
17
17
  # Did the request complete successfully or have issues
18
- def success?
19
- defined?(@success) && @success
20
- end
18
+ delegate :success? => :raw_response
19
+
20
+ # The raw response body string
21
+ delegate :body => :raw_response
21
22
 
22
23
  # Did the response complete with an error
23
24
  def error?
24
25
  defined?(@error) && @error
25
26
  end
26
27
 
27
- # The raw response body string
28
- def body
29
- raw_response.try(:body)
30
- end
31
-
32
28
  # The result of the request as a JSON Object
33
29
  #
34
30
  # @return [Hash, Array] the JSON Object
@@ -1,3 +1,3 @@
1
1
  module PushBot
2
- VERSION = '0.4.0'
2
+ VERSION = '0.4.1'
3
3
  end
data/push_bot.gemspec CHANGED
@@ -8,11 +8,10 @@ Gem::Specification.new do |spec|
8
8
  spec.version = PushBot::VERSION
9
9
  spec.authors = ['Brian Norton']
10
10
  spec.email = ['brian.nort@gmail.com']
11
- spec.summary = ''
12
- spec.description = ''
13
- spec.homepage = 'http://github.com/push_bot'
11
+ spec.summary = 'A Ruby interface to the PushBots API'
12
+ spec.description = 'Register, Push to and get information about devices on your account.'
13
+ spec.homepage = 'https://github.com/push_bot'
14
14
  spec.license = 'MIT'
15
-
16
15
  spec.files = `git ls-files -z`.split("\x0")
17
16
  spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
18
17
  spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
@@ -20,5 +19,6 @@ Gem::Specification.new do |spec|
20
19
 
21
20
  spec.add_development_dependency 'bundler', '~> 1.7'
22
21
  spec.add_development_dependency 'rake', '~> 10.0'
22
+ spec.add_development_dependency 'rspec', '~> 3.1'
23
23
  spec.add_runtime_dependency 'typhoeus', '~> 0.6'
24
24
  end
@@ -0,0 +1,76 @@
1
+ require 'spec_helper'
2
+
3
+ describe PushBot::Device do
4
+ let(:user_token) { 'user token' }
5
+
6
+ subject { described_class.new(user_token, :ios) }
7
+
8
+ let(:request) { double(PushBot::Request) }
9
+
10
+ describe '#add' do
11
+ let(:message) { 'Push Message' }
12
+ let(:options) { { :extra => 'value' } }
13
+
14
+ let(:add) { subject.add(options) }
15
+
16
+ before do
17
+ allow(PushBot::Request).to receive(:new).with(:deviceToken).and_return(request)
18
+ end
19
+
20
+ it 'should send the given attributes' do
21
+ expect(request).to receive(:put).with(nil, hash_including(:token => 'user token', :platform => '0'))
22
+
23
+ add
24
+ end
25
+
26
+ it 'should send the extra attributes' do
27
+ expect(request).to receive(:put).with(anything, hash_including(:extra => 'value'))
28
+
29
+ add
30
+ end
31
+
32
+ describe 'when given multiple tokens' do
33
+ let(:user_token) { %w(abc 123) }
34
+
35
+ it 'should send the batch request' do
36
+ expect(request).to receive(:put).with(:batch, hash_including(:tokens => %w(abc 123), :platform => '0'))
37
+
38
+ add
39
+ end
40
+
41
+ it 'should not send the token' do
42
+ expect(request).to receive(:put).with(anything, hash_excluding(:token))
43
+
44
+ add
45
+ end
46
+ end
47
+ end
48
+
49
+ describe '#info' do
50
+ let(:info) { subject.info }
51
+
52
+ before do
53
+ allow(PushBot::Request).to receive(:new).with(:deviceToken).and_return(request)
54
+ end
55
+
56
+ it 'should send request the information' do
57
+ expect(request).to receive(:get).with(:one, hash_including(:token => 'user token'))
58
+
59
+ info
60
+ end
61
+ end
62
+
63
+ describe '#remove' do
64
+ let(:remove) { subject.remove }
65
+
66
+ before do
67
+ allow(PushBot::Request).to receive(:new).with(:deviceToken).and_return(request)
68
+ end
69
+
70
+ it 'should send request the remove' do
71
+ expect(request).to receive(:put).with(:del, hash_including(:token => 'user token', :platform => '0'))
72
+
73
+ remove
74
+ end
75
+ end
76
+ end
@@ -0,0 +1,48 @@
1
+ require 'spec_helper'
2
+
3
+ describe PushBot::Push do
4
+ let(:user_token) { 'user token' }
5
+
6
+ subject { described_class.new(user_token, :ios) }
7
+
8
+ let(:request) { double(PushBot::Request) }
9
+
10
+ describe '#notify' do
11
+ let(:message) { 'Push Message' }
12
+ let(:options) { { } }
13
+
14
+ let(:notify) { subject.notify(message, options) }
15
+
16
+ before do
17
+ allow(PushBot::Request).to receive(:new).with(:push).and_return(request)
18
+ end
19
+
20
+ it 'should send the given attributes' do
21
+ expect(request).to receive(:post).with(:one, hash_including(:token => 'user token', :platform => '0', :badge => '0', :sound => ''))
22
+
23
+ notify
24
+ end
25
+
26
+ it 'should send the extra attributes' do
27
+ expect(request).to receive(:post).with(anything, hash_including(:msg => message))
28
+
29
+ notify
30
+ end
31
+
32
+ describe 'when the token is not given' do
33
+ let(:user_token) { nil }
34
+
35
+ it 'should send the batch request' do
36
+ expect(request).to receive(:post).with(:all, hash_including(:msg => message, :platform => ['0']))
37
+
38
+ notify
39
+ end
40
+
41
+ it 'should not send the token' do
42
+ expect(request).to receive(:post).with(anything, hash_excluding(:token))
43
+
44
+ notify
45
+ end
46
+ end
47
+ end
48
+ end
@@ -0,0 +1,18 @@
1
+ require 'push_bot'
2
+
3
+ RSpec.configure do |config|
4
+ config.run_all_when_everything_filtered = true
5
+ config.profile_examples = 1
6
+
7
+ config.expect_with :rspec do |expectations|
8
+ expectations.include_chain_clauses_in_custom_matcher_descriptions = true
9
+ end
10
+
11
+ config.mock_with :rspec do |mocks|
12
+ mocks.verify_partial_doubles = true
13
+ end
14
+
15
+ if config.files_to_run.one?
16
+ config.default_formatter = 'doc'
17
+ end
18
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: push_bot
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.0
4
+ version: 0.4.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Brian Norton
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-10-06 00:00:00.000000000 Z
11
+ date: 2014-10-07 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -38,6 +38,20 @@ dependencies:
38
38
  - - "~>"
39
39
  - !ruby/object:Gem::Version
40
40
  version: '10.0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: rspec
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '3.1'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '3.1'
41
55
  - !ruby/object:Gem::Dependency
42
56
  name: typhoeus
43
57
  requirement: !ruby/object:Gem::Requirement
@@ -52,7 +66,7 @@ dependencies:
52
66
  - - "~>"
53
67
  - !ruby/object:Gem::Version
54
68
  version: '0.6'
55
- description: ''
69
+ description: Register, Push to and get information about devices on your account.
56
70
  email:
57
71
  - brian.nort@gmail.com
58
72
  executables: []
@@ -60,6 +74,7 @@ extensions: []
60
74
  extra_rdoc_files: []
61
75
  files:
62
76
  - ".gitignore"
77
+ - ".rspec"
63
78
  - ".ruby-gemset"
64
79
  - ".ruby-version"
65
80
  - CONTRIBUTING.md
@@ -80,7 +95,10 @@ files:
80
95
  - lib/push_bot/tag.rb
81
96
  - lib/push_bot/version.rb
82
97
  - push_bot.gemspec
83
- homepage: http://github.com/push_bot
98
+ - spec/lib/device_spec.rb
99
+ - spec/lib/push_spec.rb
100
+ - spec/spec_helper.rb
101
+ homepage: https://github.com/push_bot
84
102
  licenses:
85
103
  - MIT
86
104
  metadata: {}
@@ -103,5 +121,8 @@ rubyforge_project:
103
121
  rubygems_version: 2.2.2
104
122
  signing_key:
105
123
  specification_version: 4
106
- summary: ''
107
- test_files: []
124
+ summary: A Ruby interface to the PushBots API
125
+ test_files:
126
+ - spec/lib/device_spec.rb
127
+ - spec/lib/push_spec.rb
128
+ - spec/spec_helper.rb