apn_client 0.0.1 → 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
data/.rvmrc CHANGED
@@ -4,7 +4,7 @@
4
4
  # development environment upon cd'ing into the directory
5
5
 
6
6
  # First we specify our desired <ruby>[@<gemset>], the @gemset name is optional.
7
- environment_id="ruby-1.9.2-p180@apn_client"
7
+ environment_id="ruby-1.9.2-p290@apn_client"
8
8
 
9
9
  #
10
10
  # Uncomment following line if you want options to be set only for given project.
data/README.md CHANGED
@@ -10,27 +10,7 @@ This is a RubyGem that allows sending of Apple Push Notifications to iOS devices
10
10
 
11
11
  ## Usage
12
12
 
13
- ### 1. Configure the Connection
14
-
15
- ```
16
-
17
- ApnClient::Delivery.connection_config = {
18
- :host => 'gateway.push.apple.com', # For sandbox, use: gateway.sandbox.push.apple.com
19
- :port => 2195,
20
- :certificate => IO.read("my_apn_certificate.pem"),
21
- :certificate_passphrase => '',
22
- }
23
-
24
- ApnClient::Feedback.connection_config = {
25
- :host => 'feedback.push.apple.com', # For sandbox, use: feedback.sandbox.push.apple.com
26
- :port => 2196,
27
- :certificate => IO.read("my_apn_certificate.pem"),
28
- :certificate_passphrase => '',
29
- }
30
-
31
- ```
32
-
33
- ### 2. Deliver Your Message
13
+ ### Delivering Your Messages
34
14
 
35
15
  ```
36
16
  message1 = ApnClient::Message.new(1,
@@ -51,7 +31,13 @@ delivery = ApnClient::Delivery.new([message1, message2],
51
31
  :on_error => lambda { |d, message_id, error_code| puts "Received error code #{error_code} from Apple for message #{message_id}" }
52
32
  },
53
33
  :consecutive_failure_limit => 10, # If more than 10 devices in a row fail, we abort the whole delivery
54
- :exception_limit => 3 # If a device raises an exception three times in a row we fail/skip the device and move on
34
+ :exception_limit => 3, # If a device raises an exception three times in a row we fail/skip the device and move on
35
+ :connection => {
36
+ :host => 'gateway.push.apple.com', # For sandbox, use: gateway.sandbox.push.apple.com
37
+ :port => 2195,
38
+ :certificate => IO.read("my_apn_certificate.pem"),
39
+ :certificate_passphrase => ''
40
+ }
55
41
  )
56
42
  delivery.process!
57
43
  puts "Delivered successfully to #{delivery.success_count} out of #{delivery.total_count} devices in #{delivery.elapsed} seconds"
@@ -61,7 +47,7 @@ One potential gotcha to watch out for is that the device token for a message is
61
47
  that different apps on the same device will have different tokens. The Apple documentation uses phone numbers as an analogy
62
48
  to explain what a device token is.
63
49
 
64
- ### 3. Check for Feedback
50
+ ### Checking for Feedback
65
51
 
66
52
  TODO
67
53
 
@@ -4,7 +4,7 @@ require 'apn_client/connection'
4
4
 
5
5
  module ApnClient
6
6
  class Delivery
7
- attr_accessor :messages, :callbacks, :consecutive_failure_limit, :exception_limit, :sleep_on_exception,
7
+ attr_accessor :messages, :callbacks, :consecutive_failure_limit, :exception_limit, :sleep_on_exception, :connection_config,
8
8
  :exception_count, :success_count, :failure_count, :consecutive_failure_count,
9
9
  :started_at, :finished_at
10
10
 
@@ -44,12 +44,15 @@ module ApnClient
44
44
  private
45
45
 
46
46
  def initialize_options(options)
47
- NamedArgs.assert_valid!(options, :optional => [:callbacks, :consecutive_failure_limit, :exception_limit, :sleep_on_exception])
47
+ NamedArgs.assert_valid!(options,
48
+ :optional => [:callbacks, :consecutive_failure_limit, :exception_limit, :sleep_on_exception],
49
+ :required => [:connection])
48
50
  NamedArgs.assert_valid!(options[:callbacks], :optional => [:on_write, :on_error, :on_nil_select, :on_read_exception, :on_exception, :on_failure])
49
51
  self.callbacks = options[:callbacks]
50
52
  self.consecutive_failure_limit = options[:consecutive_failure_limit] || 10
51
53
  self.exception_limit = options[:exception_limit] || 3
52
- self.sleep_on_exception = options[:sleep_on_exception] || 1
54
+ self.sleep_on_exception = options[:sleep_on_exception] || 1
55
+ self.connection_config = options[:connection]
53
56
  end
54
57
 
55
58
  def current_message
@@ -75,7 +78,7 @@ module ApnClient
75
78
  end
76
79
 
77
80
  def connection
78
- @connection ||= Connection.new(self.class.connection_config)
81
+ @connection ||= Connection.new(connection_config)
79
82
  end
80
83
 
81
84
  def close_connection
@@ -1,3 +1,3 @@
1
1
  module ApnClient
2
- VERSION = "0.0.1"
2
+ VERSION = "0.0.2"
3
3
  end
@@ -18,7 +18,7 @@ describe ApnClient::Delivery do
18
18
 
19
19
  describe "#initialize" do
20
20
  it "initializes counts and other attributes" do
21
- delivery = create_delivery([@message1, @message2])
21
+ delivery = create_delivery([@message1, @message2], :connection => {})
22
22
  end
23
23
  end
24
24
 
@@ -31,7 +31,7 @@ describe ApnClient::Delivery do
31
31
  :on_write => lambda { |d, m| written_messages << m },
32
32
  :on_nil_select => lambda { |d| nil_selects += 1 }
33
33
  }
34
- delivery = create_delivery(messages.dup, :callbacks => callbacks)
34
+ delivery = create_delivery(messages.dup, :callbacks => callbacks, :connection => {})
35
35
 
36
36
  connection = mock('connection')
37
37
  connection.expects(:write).with(@message1)
@@ -60,7 +60,7 @@ describe ApnClient::Delivery do
60
60
  :on_failure => lambda { |d, m| failures << m },
61
61
  :on_read_exception => lambda { |d, e| read_exceptions << e }
62
62
  }
63
- delivery = create_delivery(messages.dup, :callbacks => callbacks)
63
+ delivery = create_delivery(messages.dup, :callbacks => callbacks, :connection => {})
64
64
 
65
65
  connection = mock('connection')
66
66
  connection.expects(:write).with(@message1).times(3).raises(RuntimeError)
@@ -94,7 +94,7 @@ describe ApnClient::Delivery do
94
94
  :on_read_exception => lambda { |d, e| read_exceptions << e },
95
95
  :on_error => lambda { |d, message_id, error_code| errors << [message_id, error_code] }
96
96
  }
97
- delivery = create_delivery(messages.dup, :callbacks => callbacks)
97
+ delivery = create_delivery(messages.dup, :callbacks => callbacks, :connection => {})
98
98
 
99
99
  connection = mock('connection')
100
100
  connection.expects(:write).with(@message1)
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: apn_client
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.2
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,11 +9,11 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2011-12-02 00:00:00.000000000Z
12
+ date: 2011-12-05 00:00:00.000000000Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: json
16
- requirement: &70199261615240 !ruby/object:Gem::Requirement
16
+ requirement: &70265276321200 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: '0'
22
22
  type: :development
23
23
  prerelease: false
24
- version_requirements: *70199261615240
24
+ version_requirements: *70265276321200
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: rspec
27
- requirement: &70199261614820 !ruby/object:Gem::Requirement
27
+ requirement: &70265276320780 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ! '>='
@@ -32,10 +32,10 @@ dependencies:
32
32
  version: '0'
33
33
  type: :development
34
34
  prerelease: false
35
- version_requirements: *70199261614820
35
+ version_requirements: *70265276320780
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: mocha
38
- requirement: &70199261614400 !ruby/object:Gem::Requirement
38
+ requirement: &70265276320360 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
41
  - - ! '>='
@@ -43,10 +43,10 @@ dependencies:
43
43
  version: '0'
44
44
  type: :development
45
45
  prerelease: false
46
- version_requirements: *70199261614400
46
+ version_requirements: *70265276320360
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: yard
49
- requirement: &70199261613980 !ruby/object:Gem::Requirement
49
+ requirement: &70265276319940 !ruby/object:Gem::Requirement
50
50
  none: false
51
51
  requirements:
52
52
  - - ! '>='
@@ -54,7 +54,7 @@ dependencies:
54
54
  version: '0'
55
55
  type: :development
56
56
  prerelease: false
57
- version_requirements: *70199261613980
57
+ version_requirements: *70265276319940
58
58
  description: Uses the "enhanced format" Apple protocol and deals with errors and failures
59
59
  when broadcasting to many devices. Includes support for talking to the Apple Push
60
60
  Notification Feedback service for dealing with uninstalled apps.