pntfr 0.0.1 → 0.1.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 +4 -4
- data/README.md +14 -6
- data/lib/pntfr/version.rb +1 -1
- data/lib/pntfr/virtual_session/android.rb +2 -2
- data/lib/pntfr/virtual_session/ios.rb +9 -0
- data/test/pntfr/device_session.rb +6 -0
- data/test/pntfr/ios_badge_test.rb +2 -2
- data/test/pntfr/ios_test.rb +25 -0
- data/test/pntfr/push_notifier_test.rb +5 -7
- metadata +5 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 881840f1cd5381a2e47d78f26b8abaa26cd2b02b
|
4
|
+
data.tar.gz: 9f8bb4c8aca929683314e84e203b8e6a9255b337
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 42006755a948b74d3f00b47c0db693d538278981d43ce1a383967cb95ab2d13efe61f016eb7b0dd6c38bc72c6bfefb602f0051e9d6aecefd619575f4399d827b
|
7
|
+
data.tar.gz: cd3fdf9794ec96cb0d38cec160eee42e26bab0cac6e71ff9925067982203de44524f8d65ef44d6113d6684883e0e3a52e5fabd30a29a96a681b91717928a4b55
|
data/README.md
CHANGED
@@ -47,17 +47,25 @@ The neutral model for the content of the messages is composed by a title and a d
|
|
47
47
|
this maps directly to Android notification's `data` content wile is concatenated with a newline
|
48
48
|
for Apns notificaitons.
|
49
49
|
|
50
|
-
Sending a notification is quite simple.
|
51
|
-
|
52
|
-
|
53
|
-
and
|
50
|
+
Sending a notification is quite simple.
|
51
|
+
- First, create a virtual session to manage each recipient's connection. This virtual
|
52
|
+
session is platform specific and will take care of the message structure for the
|
53
|
+
given platform and of connecting through the correct driver.
|
54
|
+
- Second, set the message to be sent
|
55
|
+
- Third, notify.
|
56
|
+
Your're done.
|
54
57
|
|
55
|
-
Given you have a DeviceSession model in your application. Then to send
|
58
|
+
Given you have a DeviceSession model in your application. Then to send notifications to a device do:
|
56
59
|
```ruby
|
57
60
|
# get device session
|
58
61
|
session= DeviceSession.new(platform: Pntfr::Platforms::IOS, push_id: '...')
|
59
|
-
# send notification to the given
|
62
|
+
# send notification to the given device
|
60
63
|
Pntfr::Notifier.to(session).msg({:title => 'Some Title', :description => 'A description'}).notify
|
64
|
+
|
65
|
+
#send many notifications to a given device
|
66
|
+
vsession= Pntfr::Notifier.to(session)
|
67
|
+
vsession.msg({:title => 'Some Title', :description => 'A description'}).notify
|
68
|
+
vsession.msg({:title => 'Some Other Title', :description => 'Another description', :sound => 'flipping-sound.aiff'}).notify
|
61
69
|
```
|
62
70
|
|
63
71
|
# Resources
|
data/lib/pntfr/version.rb
CHANGED
@@ -8,6 +8,7 @@ module Pntfr
|
|
8
8
|
def initialize session
|
9
9
|
super
|
10
10
|
@notification_key= Pntfr.config.gcm[:notification_key]
|
11
|
+
@gcm= GCM.new(@notification_key) unless Pntfr.test_env?
|
11
12
|
end
|
12
13
|
|
13
14
|
def msg content
|
@@ -22,8 +23,7 @@ module Pntfr
|
|
22
23
|
if Pntfr.test_env?
|
23
24
|
Pntfr.add_delivery(@push_id, options)
|
24
25
|
else
|
25
|
-
gcm
|
26
|
-
gcm.send_notification(@push_id, options)
|
26
|
+
@gcm.send_notification(@push_id, options)
|
27
27
|
end
|
28
28
|
end
|
29
29
|
|
@@ -5,6 +5,7 @@ module Pntfr
|
|
5
5
|
module VirtualSession
|
6
6
|
class Ios < Pntfr::VirtualSession::Base
|
7
7
|
def msg content
|
8
|
+
reset_msg
|
8
9
|
@alert= content[:title]
|
9
10
|
@alert+= "\n#{content[:description]}"
|
10
11
|
@sound= content[:sound]
|
@@ -28,8 +29,16 @@ module Pntfr
|
|
28
29
|
else
|
29
30
|
APNS.send_notification(@push_id, n)
|
30
31
|
end
|
32
|
+
end
|
33
|
+
|
34
|
+
#-------------------------------------------------
|
35
|
+
private
|
36
|
+
#-------------------------------------------------
|
31
37
|
|
38
|
+
def reset_msg
|
39
|
+
@alert= @sound= @badge= nil
|
32
40
|
end
|
41
|
+
|
33
42
|
end
|
34
43
|
end
|
35
44
|
end
|
@@ -0,0 +1,6 @@
|
|
1
|
+
# Pntfr's expected models to be used for testing purposes
|
2
|
+
|
3
|
+
# minimal expected session
|
4
|
+
Pntfr::DeviceSession= Struct.new(:platform, :push_id)
|
5
|
+
# session with num_notifs which will be autoincremented on each sent msg
|
6
|
+
Pntfr::IosDeviceSession= Struct.new(:platform, :push_id, :num_notifs)
|
@@ -1,10 +1,10 @@
|
|
1
|
+
require 'pntfr/device_session'
|
1
2
|
|
2
3
|
module Pntfr
|
3
4
|
module VirtualSession
|
4
5
|
class IosBadgeTest < Minitest::Test
|
5
6
|
def test_sending_a_notification_increments_session_notifications_num
|
6
|
-
|
7
|
-
session= clazz.new(Pntfr::Platforms::IOS, '1id2id3id4id5id', 0)
|
7
|
+
session= Pntfr::IosDeviceSession.new(Pntfr::Platforms::IOS, '1id2id3id4id5id', 0)
|
8
8
|
|
9
9
|
Pntfr::Notifier.to(session).msg({:title => 't', :description => 'd'}).notify
|
10
10
|
|
@@ -0,0 +1,25 @@
|
|
1
|
+
module Pntfr
|
2
|
+
module VirtualSession
|
3
|
+
class IosTest < Minitest::Test
|
4
|
+
def test_ios_information_from_previous_msg_should_be_reset_when_sending_a_new_msg
|
5
|
+
session= IosDeviceSession.new(Pntfr::Platforms::IOS, name, 3)
|
6
|
+
vsession= Pntfr::Notifier.to(session)
|
7
|
+
|
8
|
+
vsession.msg(title: 't1', description: 'd1', sound: 's1').notify
|
9
|
+
vsession.msg(title: 't2', description: 'd2').notify
|
10
|
+
|
11
|
+
notifs= Pntfr.deliveries[session.push_id]
|
12
|
+
assert_equal 5, session.num_notifs
|
13
|
+
assert_equal 2, notifs.size
|
14
|
+
notif= notifs.first
|
15
|
+
assert_equal "t1\nd1", notif[:alert]
|
16
|
+
assert_equal 's1', notif[:sound]
|
17
|
+
assert_equal 4, notif[:badge]
|
18
|
+
notif= notifs.last
|
19
|
+
assert_equal "t2\nd2", notif[:alert]
|
20
|
+
assert_equal 'default', notif[:sound]
|
21
|
+
assert_equal 5, notif[:badge]
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
@@ -1,23 +1,21 @@
|
|
1
|
+
require 'pntfr/device_session'
|
1
2
|
module Pntfr
|
2
3
|
class NotifierTest < Minitest::Test
|
3
4
|
def initialize method_name
|
4
5
|
super
|
5
6
|
Pntfr.configure {}
|
6
7
|
end
|
7
|
-
def setup
|
8
|
-
@PushSessionClass= Struct.new(:platform, :push_id)
|
9
|
-
end
|
10
8
|
|
11
9
|
#
|
12
10
|
# COMMON
|
13
11
|
#
|
14
12
|
def test_android_sessions_should_instantiate_android_virtual_sessions
|
15
|
-
session=
|
13
|
+
session= DeviceSession.new(Pntfr::Platforms::ANDROID)
|
16
14
|
vsess= Pntfr::Notifier.to(session)
|
17
15
|
assert vsess.is_a?(Pntfr::VirtualSession::Android)
|
18
16
|
end
|
19
17
|
def test_ios_sessions_should_instantiate_ios_virtual_sessions
|
20
|
-
session=
|
18
|
+
session= DeviceSession.new(Pntfr::Platforms::IOS)
|
21
19
|
vsess= Pntfr::Notifier.to(session)
|
22
20
|
assert vsess.is_a?(Pntfr::VirtualSession::Ios)
|
23
21
|
end
|
@@ -27,7 +25,7 @@ module Pntfr
|
|
27
25
|
#
|
28
26
|
def test_received_content_shoud_be_sent_to_gcm
|
29
27
|
push_id= 'ANDROIDANDROIDANDROIDANDROIDANDROIDANDROIDANDROIDANDROIDANDROID'
|
30
|
-
session=
|
28
|
+
session= DeviceSession.new(Pntfr::Platforms::ANDROID, push_id)
|
31
29
|
|
32
30
|
Pntfr::Notifier.to(session).msg({:title => 'Some Title', :description => 'A description'}).notify
|
33
31
|
|
@@ -43,7 +41,7 @@ module Pntfr
|
|
43
41
|
#
|
44
42
|
def test_received_content_shoud_be_ready_to_be_sent_to_apns
|
45
43
|
push_id= 'IOSiosIOSiosIOSiosIOSiosIOSiosIOSiosIOSiosIOSiosIOSiosIOSios'
|
46
|
-
session=
|
44
|
+
session= DeviceSession.new(Pntfr::Platforms::IOS, push_id)
|
47
45
|
|
48
46
|
Pntfr::Notifier.to(session).msg({:title => 'thatitle', :description => 'thadescription', :sound => 'click.aiff', :badge => 33}).notify
|
49
47
|
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: pntfr
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0
|
4
|
+
version: 0.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- oliver
|
@@ -103,7 +103,9 @@ files:
|
|
103
103
|
- nbproject/project.properties
|
104
104
|
- nbproject/project.xml
|
105
105
|
- pntfr.gemspec
|
106
|
+
- test/pntfr/device_session.rb
|
106
107
|
- test/pntfr/ios_badge_test.rb
|
108
|
+
- test/pntfr/ios_test.rb
|
107
109
|
- test/pntfr/platforms_test.rb
|
108
110
|
- test/pntfr/push_notifier_test.rb
|
109
111
|
- test/pntfr_configuration_test.rb
|
@@ -134,7 +136,9 @@ specification_version: 4
|
|
134
136
|
summary: Push notifier is a simple adapter for APNS and GCM gems, that way you can
|
135
137
|
use same api to send push notifications to both devices.
|
136
138
|
test_files:
|
139
|
+
- test/pntfr/device_session.rb
|
137
140
|
- test/pntfr/ios_badge_test.rb
|
141
|
+
- test/pntfr/ios_test.rb
|
138
142
|
- test/pntfr/platforms_test.rb
|
139
143
|
- test/pntfr/push_notifier_test.rb
|
140
144
|
- test/pntfr_configuration_test.rb
|