apn_client 0.0.2 → 0.0.3

Sign up to get free protection for your applications and to get access to all the features.
data/README.md CHANGED
@@ -13,6 +13,8 @@ This is a RubyGem that allows sending of Apple Push Notifications to iOS devices
13
13
  ### Delivering Your Messages
14
14
 
15
15
  ```
16
+ require 'apn_client'
17
+
16
18
  message1 = ApnClient::Message.new(1,
17
19
  :device_token => "7b7b8de5888bb742ba744a2a5c8e52c6481d1deeecc283e830533b7c6bf1d099",
18
20
  :alert => "New version of the app is out. Get it now in the app store!",
@@ -26,7 +28,7 @@ message2 = ApnClient::Message.new(2,
26
28
  delivery = ApnClient::Delivery.new([message1, message2],
27
29
  :callbacks => {
28
30
  :on_write => lambda { |d, m| puts "Wrote message #{m}" },
29
- :on_exception => lambda { |d, m, e| puts "Exception #{e} raised when delivering message #{m}" },
31
+ :on_exception => lambda { |d, e| puts "Exception #{e} raised when delivering message #{m}" },
30
32
  :on_failure => lambda { |d, m| puts "Skipping failed message #{m}" },
31
33
  :on_error => lambda { |d, message_id, error_code| puts "Received error code #{error_code} from Apple for message #{message_id}" }
32
34
  },
@@ -1,6 +1,5 @@
1
1
  require 'socket'
2
2
  require 'openssl'
3
- require 'apn_client/named_args'
4
3
 
5
4
  module ApnClient
6
5
  class Connection
@@ -1,7 +1,3 @@
1
- require 'apn_client/named_args'
2
- require 'apn_client/message'
3
- require 'apn_client/connection'
4
-
5
1
  module ApnClient
6
2
  class Delivery
7
3
  attr_accessor :messages, :callbacks, :consecutive_failure_limit, :exception_limit, :sleep_on_exception, :connection_config,
@@ -1,5 +1,3 @@
1
- require 'apn_client/named_args'
2
-
3
1
  module ApnClient
4
2
  class Message
5
3
  attr_accessor :message_id, :device_token, :alert, :badge, :sound, :content_available, :custom_properties
@@ -29,6 +27,10 @@ module ApnClient
29
27
  [1, message_id, self.class.expires_at, 0, 32, device_token, 0, payload_size, payload].pack('ciiccH*cca*')
30
28
  end
31
29
 
30
+ def ==(other_message)
31
+ other_message && other_message.is_a?(self.class) && other_message.message_id == self.message_id
32
+ end
33
+
32
34
  def self.error_codes
33
35
  {
34
36
  :no_errors_encountered => 0,
@@ -1,3 +1,3 @@
1
1
  module ApnClient
2
- VERSION = "0.0.2"
2
+ VERSION = "0.0.3"
3
3
  end
data/lib/apn_client.rb CHANGED
@@ -1,5 +1,5 @@
1
- require "apn_client/version"
2
-
3
- module ApnClient
4
- # Your code goes here...
5
- end
1
+ require 'apn_client/version'
2
+ require 'apn_client/named_args'
3
+ require 'apn_client/connection'
4
+ require 'apn_client/message'
5
+ require 'apn_client/delivery'
@@ -1,7 +1,5 @@
1
1
  require 'spec_helper'
2
2
 
3
- require 'apn_client/connection'
4
-
5
3
  describe ApnClient::Connection do
6
4
  describe "#initialize" do
7
5
  it "opens an SSL connection given host, port, certificate, and certificate_passphrase" do
@@ -1,7 +1,5 @@
1
1
  require 'spec_helper'
2
2
 
3
- require 'apn_client/delivery'
4
-
5
3
  describe ApnClient::Delivery do
6
4
  before(:each) do
7
5
  @message1 = ApnClient::Message.new(1,
data/spec/message_spec.rb CHANGED
@@ -1,10 +1,9 @@
1
1
  require 'spec_helper'
2
2
 
3
- require 'apn_client/message'
4
-
5
3
  describe ApnClient::Message do
6
4
  before(:each) do
7
5
  @device_token = "7b7b8de5888bb742ba744a2a5c8e52c6481d1deeecc283e830533b7c6bf1d099"
6
+ @other_device_token = "8c7b8de5888bb742ba744a2a5c8e52c6481d1deeecc283e830533b7c6bf5e699"
8
7
  @alert = "Hello, check out version 9.5 of our awesome app in the app store"
9
8
  @badge = 3
10
9
  end
@@ -43,13 +42,37 @@ describe ApnClient::Message do
43
42
  end
44
43
  end
45
44
 
45
+ describe "#==" do
46
+ before(:each) do
47
+ @message = create_message(3, :device_token => @device_token)
48
+ @other_message = create_message(5, :device_token => @other_device_token)
49
+ end
50
+
51
+ it "returns false for nil" do
52
+ @message.should_not == nil
53
+ end
54
+
55
+ it "returns false for an object that is not a Message" do
56
+ @message.should_not == "foobar"
57
+ end
58
+
59
+ it "returns false for a Message with a different message_id" do
60
+ @message.should_not == @other_message
61
+ end
62
+
63
+ it "returns true for a Message with the same message_id" do
64
+ @other_message.message_id = @message.message_id
65
+ @message.should == @other_message
66
+ end
67
+ end
68
+
46
69
  describe "#payload_size" do
47
70
  it "returns number of bytes in the payload"
48
71
  end
49
72
 
50
73
  def create_message(message_id, config = {})
51
74
  message = ApnClient::Message.new(message_id, config)
52
- message.message_id.should == 1
75
+ message.message_id.should == message_id
53
76
  [:device_token, :alert, :badge, :sound, :content_available].each do |attribute|
54
77
  message.send(attribute).should == config[attribute]
55
78
  end
@@ -1,7 +1,5 @@
1
1
  require 'spec_helper'
2
2
 
3
- require 'apn_client/named_args'
4
-
5
3
  describe ApnClient::NamedArgs do
6
4
  describe ".assert_allowed!" do
7
5
  it "raises an exception if the argument hash contains a key not in the allowed list" do
data/spec/spec_helper.rb CHANGED
@@ -1,4 +1,5 @@
1
1
  require 'json'
2
+ require 'apn_client'
2
3
 
3
4
  RSpec.configure do |config|
4
5
  config.mock_with :mocha
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.2
4
+ version: 0.0.3
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -13,7 +13,7 @@ date: 2011-12-05 00:00:00.000000000Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: json
16
- requirement: &70265276321200 !ruby/object:Gem::Requirement
16
+ requirement: &70265547611420 !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: *70265276321200
24
+ version_requirements: *70265547611420
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: rspec
27
- requirement: &70265276320780 !ruby/object:Gem::Requirement
27
+ requirement: &70265547611000 !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: *70265276320780
35
+ version_requirements: *70265547611000
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: mocha
38
- requirement: &70265276320360 !ruby/object:Gem::Requirement
38
+ requirement: &70265547610580 !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: *70265276320360
46
+ version_requirements: *70265547610580
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: yard
49
- requirement: &70265276319940 !ruby/object:Gem::Requirement
49
+ requirement: &70265547610160 !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: *70265276319940
57
+ version_requirements: *70265547610160
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.