j7w1 0.0.25 → 0.0.26
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/lib/j7w1/sns_push_client.rb +44 -6
- data/lib/j7w1/version.rb +1 -1
- metadata +17 -17
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 52a2b3685c81bfad527b4cb9bc43714b026c9796
|
4
|
+
data.tar.gz: ffd32b5f4a8215d1798aa1f94940ef13b4746858
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 2ea3959139837c519c972caae8fdb2fdd6d00a5a59830da65cf5a20b99b7ac9d2007a1e2af27e26ec35bf30bb057468198608aa27b4ae5822bb71bb494afd7d6
|
7
|
+
data.tar.gz: 32c522339222f1e91c614ef482f52e8d8d77effb19d61c2b3ad725cdcf23648720fe2901ff5f8d89cccb46f9ea6986f9a120c9b66a391a07048b84e1aa7d4aa0
|
data/lib/j7w1/sns_push_client.rb
CHANGED
@@ -4,7 +4,10 @@ module J7W1
|
|
4
4
|
AWS::SNS.new configuration.account
|
5
5
|
end
|
6
6
|
|
7
|
-
|
7
|
+
APNS_MAX_PAYLOAD = 256
|
8
|
+
|
9
|
+
SHORTEN_REPLACEMENT = '...'.freeze
|
10
|
+
SHORTEN_REPLACEMENT_LENGTH = SHORTEN_REPLACEMENT.length
|
8
11
|
|
9
12
|
INPUT_PAYLOAD_TABLE = {
|
10
13
|
ios: {
|
@@ -87,6 +90,20 @@ module J7W1
|
|
87
90
|
nil
|
88
91
|
end
|
89
92
|
|
93
|
+
def create_topic(name, options)
|
94
|
+
sns_client = options[:sns_client]
|
95
|
+
sns_client ||= create_sns_client(sns_configuration || J7W1.configuration)
|
96
|
+
|
97
|
+
sns_client.topics.create name
|
98
|
+
end
|
99
|
+
|
100
|
+
def subscribe_topic(topic_name, endpoint_arn, options)
|
101
|
+
sns_client = options[:sns_client]
|
102
|
+
sns_client ||= create_sns_client(sns_configuration || J7W1.configuration)
|
103
|
+
|
104
|
+
sns_client.topics[name]
|
105
|
+
end
|
106
|
+
|
90
107
|
def push(endpoint_arn, platform, options = {})
|
91
108
|
return unless endpoint_arn && platform
|
92
109
|
|
@@ -133,16 +150,37 @@ module J7W1
|
|
133
150
|
prefix = J7W1.configuration.ios_endpoint.sandbox? ?
|
134
151
|
:APNS_SANDBOX : :APNS
|
135
152
|
|
136
|
-
if message_value[:message] && message_value[:message].length > APNS_MAX_MESSAGE_SIZE
|
137
|
-
message_value[:message] = message_value[:message][0...(APNS_MAX_MESSAGE_SIZE - 3)] + '...'
|
138
|
-
end
|
139
|
-
|
140
153
|
content = {
|
141
154
|
aps: message_content(message_value, platform: :ios),
|
142
155
|
}
|
143
156
|
content.merge! data: data if data
|
144
157
|
|
145
|
-
{prefix => content
|
158
|
+
{prefix => ios_truncated_payload(content)}
|
159
|
+
end
|
160
|
+
|
161
|
+
def ios_truncated_payload(data)
|
162
|
+
payload = data.to_json
|
163
|
+
|
164
|
+
# Truncation is skipped when the payload is sufficiently lightweight.
|
165
|
+
return payload if (limit_break = payload.bytesize - APNX_MAX_PAYLOAD) >= 0
|
166
|
+
|
167
|
+
# Raise error if shortening of the alert cannot make the payload sufficiently short.
|
168
|
+
size_to_reduce = limit_break + SHORTEN_REPLACEMENT_LENGTH
|
169
|
+
raise "Payload is too heavy (#{payload.length})" unless
|
170
|
+
data[:alert] && data[:alert].bytesize > size_to_reduce
|
171
|
+
|
172
|
+
# Chopping the alert from its last -> first to avoid destroying the character's border
|
173
|
+
# and keep its content as long as possible.
|
174
|
+
chopped_length = 0
|
175
|
+
chopped_count = 0
|
176
|
+
while chopped_length < size_to_reduce
|
177
|
+
chopped_length += data[:alert][-1].bytesize
|
178
|
+
chopped_count += 1
|
179
|
+
end
|
180
|
+
data[:alert][-chopped_count..-1] = SHORTEN_REPLACEMENT
|
181
|
+
# Problem won't be occur because at least a character is truncated.
|
182
|
+
|
183
|
+
data.to_json
|
146
184
|
end
|
147
185
|
|
148
186
|
def android_payload_for(message_value, data)
|
data/lib/j7w1/version.rb
CHANGED
metadata
CHANGED
@@ -1,97 +1,97 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: j7w1
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.26
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- condor
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2015-01-26 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: aws-sdk
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- - ~>
|
17
|
+
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
19
|
version: '1.17'
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
|
-
- - ~>
|
24
|
+
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: '1.17'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: bundler
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
|
-
- - ~>
|
31
|
+
- - "~>"
|
32
32
|
- !ruby/object:Gem::Version
|
33
33
|
version: '1.3'
|
34
34
|
type: :development
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
|
-
- - ~>
|
38
|
+
- - "~>"
|
39
39
|
- !ruby/object:Gem::Version
|
40
40
|
version: '1.3'
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: rake
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
|
-
- -
|
45
|
+
- - ">="
|
46
46
|
- !ruby/object:Gem::Version
|
47
47
|
version: '0'
|
48
48
|
type: :development
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
|
-
- -
|
52
|
+
- - ">="
|
53
53
|
- !ruby/object:Gem::Version
|
54
54
|
version: '0'
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
56
|
name: rspec
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
58
58
|
requirements:
|
59
|
-
- -
|
59
|
+
- - ">="
|
60
60
|
- !ruby/object:Gem::Version
|
61
61
|
version: '0'
|
62
62
|
type: :development
|
63
63
|
prerelease: false
|
64
64
|
version_requirements: !ruby/object:Gem::Requirement
|
65
65
|
requirements:
|
66
|
-
- -
|
66
|
+
- - ">="
|
67
67
|
- !ruby/object:Gem::Version
|
68
68
|
version: '0'
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
70
|
name: activerecord
|
71
71
|
requirement: !ruby/object:Gem::Requirement
|
72
72
|
requirements:
|
73
|
-
- -
|
73
|
+
- - ">="
|
74
74
|
- !ruby/object:Gem::Version
|
75
75
|
version: '4.0'
|
76
76
|
type: :development
|
77
77
|
prerelease: false
|
78
78
|
version_requirements: !ruby/object:Gem::Requirement
|
79
79
|
requirements:
|
80
|
-
- -
|
80
|
+
- - ">="
|
81
81
|
- !ruby/object:Gem::Version
|
82
82
|
version: '4.0'
|
83
83
|
- !ruby/object:Gem::Dependency
|
84
84
|
name: simplecov
|
85
85
|
requirement: !ruby/object:Gem::Requirement
|
86
86
|
requirements:
|
87
|
-
- -
|
87
|
+
- - ">="
|
88
88
|
- !ruby/object:Gem::Version
|
89
89
|
version: '0'
|
90
90
|
type: :development
|
91
91
|
prerelease: false
|
92
92
|
version_requirements: !ruby/object:Gem::Requirement
|
93
93
|
requirements:
|
94
|
-
- -
|
94
|
+
- - ">="
|
95
95
|
- !ruby/object:Gem::Version
|
96
96
|
version: '0'
|
97
97
|
description: Mobile apps push client
|
@@ -135,17 +135,17 @@ require_paths:
|
|
135
135
|
- lib
|
136
136
|
required_ruby_version: !ruby/object:Gem::Requirement
|
137
137
|
requirements:
|
138
|
-
- -
|
138
|
+
- - ">="
|
139
139
|
- !ruby/object:Gem::Version
|
140
140
|
version: '0'
|
141
141
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
142
142
|
requirements:
|
143
|
-
- -
|
143
|
+
- - ">="
|
144
144
|
- !ruby/object:Gem::Version
|
145
145
|
version: '0'
|
146
146
|
requirements: []
|
147
147
|
rubyforge_project:
|
148
|
-
rubygems_version: 2.
|
148
|
+
rubygems_version: 2.4.5
|
149
149
|
signing_key:
|
150
150
|
specification_version: 4
|
151
151
|
summary: Mobile apps push client
|