grocer 0.0.5 → 0.0.6

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/.travis.yml CHANGED
@@ -3,6 +3,5 @@ rvm:
3
3
  - 1.9.2
4
4
  - 1.9.3
5
5
  - ruby-head
6
- # - rbx-19mode
6
+ - rbx-19mode
7
7
  # - jruby-19mode
8
-
data/README.md CHANGED
@@ -10,6 +10,10 @@ to send push notifications to iOS devices.
10
10
  There are other gems out there to do this, but **grocer** plans to be the
11
11
  cleanest, most extensible, and friendliest.
12
12
 
13
+ ## Requirements
14
+
15
+ * Ruby/MRI 1.9.x *or* Rubinius in 1.9 mode (JRuby in 1.9 is broken due to some problem with 'json' not being in the stdlib?)
16
+
13
17
  ## Installation
14
18
 
15
19
  Add this line to your application's Gemfile:
@@ -75,6 +79,25 @@ notifications.each do |notification|
75
79
  end
76
80
  ```
77
81
 
82
+ #### Custom Payloads
83
+
84
+ The Apple documentation says "Providers can specify custom payload values
85
+ outside the Apple-reserved aps namespace." To specify a custom payload, set
86
+ `Grocer::Notification#custom`.
87
+
88
+ ```ruby
89
+ notification = Grocer::Notification.new(
90
+ device_token: "...",
91
+ alert: "Hello from Grocer",
92
+ custom: {
93
+ "acme2": ["bang", "whiz"]
94
+ }
95
+ )
96
+
97
+ # Generates a JSON payload like:
98
+ # {"aps": {"alert": "Hello from Grocer"}, "acme2": ["bang", "whiz"]}
99
+ ```
100
+
78
101
  ### Feedback
79
102
 
80
103
  ```ruby
@@ -3,7 +3,8 @@ require_relative 'no_payload_error'
3
3
 
4
4
  module Grocer
5
5
  class Notification
6
- attr_accessor :identifier, :expiry, :device_token, :alert, :badge, :sound
6
+ attr_accessor :identifier, :expiry, :device_token, :alert, :badge, :sound,
7
+ :custom
7
8
 
8
9
  def initialize(payload = {})
9
10
  @identifier = 0
@@ -36,7 +37,7 @@ module Grocer
36
37
  aps_hash[:badge] = badge if badge
37
38
  aps_hash[:sound] = sound if sound
38
39
 
39
- { aps: aps_hash }
40
+ { aps: aps_hash }.merge(custom || { })
40
41
  end
41
42
 
42
43
  def expiry_epoch_time
@@ -1,3 +1,3 @@
1
1
  module Grocer
2
- VERSION = '0.0.5'
2
+ VERSION = '0.0.6'
3
3
  end
@@ -99,7 +99,7 @@ describe Grocer::Connection do
99
99
 
100
100
  it "retries #write in the case of an #{error}" do
101
101
  ssl.stubs(:write).raises(error).then.returns(42)
102
- subject.write("abc123")
102
+ subject.write('abc123')
103
103
  end
104
104
 
105
105
  it 'raises the error if none of the retries work' do
@@ -4,7 +4,7 @@ require 'grocer/feedback_connection'
4
4
  describe Grocer::FeedbackConnection do
5
5
  subject { described_class.new(options) }
6
6
  let(:options) { { certificate: '/path/to/cert.pem' } }
7
- let(:connection) { stub("Connection") }
7
+ let(:connection) { stub('Connection') }
8
8
 
9
9
  it 'delegates reading to the Connection' do
10
10
  Grocer::Connection.any_instance.expects(:read).with(42, 'lolIO')
@@ -66,7 +66,10 @@ describe Grocer::Notification do
66
66
  payload_dictionary_from_bytes[:aps][:sound].should == 'siren.aiff'
67
67
  end
68
68
 
69
- it 'encodes custom payload attributes'
69
+ it 'encodes custom payload attributes' do
70
+ notification.custom = { :foo => 'bar' }
71
+ payload_dictionary_from_bytes[:foo].should == 'bar'
72
+ end
70
73
 
71
74
  context 'invalid payload' do
72
75
  let(:payload_options) { Hash.new }
@@ -4,7 +4,7 @@ require 'grocer/push_connection'
4
4
  describe Grocer::PushConnection do
5
5
  subject { described_class.new(options) }
6
6
  let(:options) { { certificate: '/path/to/cert.pem' } }
7
- let(:connection) { stub("Connection") }
7
+ let(:connection) { stub('Connection') }
8
8
 
9
9
  it 'delegates reading to the Connection' do
10
10
  Grocer::Connection.any_instance.expects(:read).with(42, 'lolIO')
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: grocer
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.5
4
+ version: 0.0.6
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -11,11 +11,11 @@ authors:
11
11
  autorequire:
12
12
  bindir: bin
13
13
  cert_chain: []
14
- date: 2012-04-03 00:00:00.000000000 Z
14
+ date: 2012-04-04 00:00:00.000000000 Z
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency
17
17
  name: rspec
18
- requirement: &70130881884800 !ruby/object:Gem::Requirement
18
+ requirement: &70100208337060 !ruby/object:Gem::Requirement
19
19
  none: false
20
20
  requirements:
21
21
  - - ~>
@@ -23,10 +23,10 @@ dependencies:
23
23
  version: 2.9.0
24
24
  type: :development
25
25
  prerelease: false
26
- version_requirements: *70130881884800
26
+ version_requirements: *70100208337060
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: pry
29
- requirement: &70130881884240 !ruby/object:Gem::Requirement
29
+ requirement: &70100208503620 !ruby/object:Gem::Requirement
30
30
  none: false
31
31
  requirements:
32
32
  - - ~>
@@ -34,10 +34,10 @@ dependencies:
34
34
  version: 0.9.8
35
35
  type: :development
36
36
  prerelease: false
37
- version_requirements: *70130881884240
37
+ version_requirements: *70100208503620
38
38
  - !ruby/object:Gem::Dependency
39
39
  name: mocha
40
- requirement: &70130881880580 !ruby/object:Gem::Requirement
40
+ requirement: &70100208502540 !ruby/object:Gem::Requirement
41
41
  none: false
42
42
  requirements:
43
43
  - - ! '>='
@@ -45,10 +45,10 @@ dependencies:
45
45
  version: '0'
46
46
  type: :development
47
47
  prerelease: false
48
- version_requirements: *70130881880580
48
+ version_requirements: *70100208502540
49
49
  - !ruby/object:Gem::Dependency
50
50
  name: bourne
51
- requirement: &70130881880060 !ruby/object:Gem::Requirement
51
+ requirement: &70100208497180 !ruby/object:Gem::Requirement
52
52
  none: false
53
53
  requirements:
54
54
  - - ! '>='
@@ -56,10 +56,10 @@ dependencies:
56
56
  version: '0'
57
57
  type: :development
58
58
  prerelease: false
59
- version_requirements: *70130881880060
59
+ version_requirements: *70100208497180
60
60
  - !ruby/object:Gem::Dependency
61
61
  name: rake
62
- requirement: &70130881879360 !ruby/object:Gem::Requirement
62
+ requirement: &70100208581300 !ruby/object:Gem::Requirement
63
63
  none: false
64
64
  requirements:
65
65
  - - ! '>='
@@ -67,7 +67,7 @@ dependencies:
67
67
  version: '0'
68
68
  type: :development
69
69
  prerelease: false
70
- version_requirements: *70130881879360
70
+ version_requirements: *70100208581300
71
71
  description: ! " Grocer interfaces with the Apple Push\n
72
72
  \ Notification Service to send push\n notifications
73
73
  to iOS devices and collect\n notification feedback via
@@ -130,15 +130,21 @@ required_ruby_version: !ruby/object:Gem::Requirement
130
130
  - - ! '>='
131
131
  - !ruby/object:Gem::Version
132
132
  version: '0'
133
+ segments:
134
+ - 0
135
+ hash: -942820174361288389
133
136
  required_rubygems_version: !ruby/object:Gem::Requirement
134
137
  none: false
135
138
  requirements:
136
139
  - - ! '>='
137
140
  - !ruby/object:Gem::Version
138
141
  version: '0'
142
+ segments:
143
+ - 0
144
+ hash: -942820174361288389
139
145
  requirements: []
140
146
  rubyforge_project:
141
- rubygems_version: 1.8.17
147
+ rubygems_version: 1.8.15
142
148
  signing_key:
143
149
  specification_version: 3
144
150
  summary: Pushing Apple notifications since 2012.