pwush 0.1.4 → 0.1.5
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 +5 -5
- data/Gemfile.lock +18 -18
- data/lib/pwush/message.rb +93 -81
- data/lib/pwush/response.rb +3 -4
- data/lib/pwush/response/deffered.rb +2 -0
- data/lib/pwush/response/value.rb +3 -5
- data/lib/pwush/version.rb +1 -1
- data/pwush.gemspec +3 -3
- metadata +13 -13
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 167bc841bf6dcfcb6586b1a8c609abbb9e3e7d0ae68ba0f8e9cade81ba6a9fa7
|
4
|
+
data.tar.gz: 80f429072e2a6c31882def50b9990ec9b76ae892be0a4f3922b8fe0f86bfd6ff
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 81975b84e91988f0006e934a6222a892231031e910dd9796d97756bb6678bda817e540da02dc34465225138e7377b36cf48d55611f73f8bf77ff64aff90b5e46
|
7
|
+
data.tar.gz: 2e795ce936734b464200cddadb6e88b4714201da40f667493ce78697ad3f79fdf8533847616bd93f1d6c4851b834e670aa865464d594fbab0e94763afd966518
|
data/Gemfile.lock
CHANGED
@@ -1,10 +1,10 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
pwush (0.1.
|
5
|
-
dry-monads (~> 0
|
6
|
-
dry-struct (
|
7
|
-
dry-types (
|
4
|
+
pwush (0.1.4)
|
5
|
+
dry-monads (~> 1.0)
|
6
|
+
dry-struct (<= 0.5.1)
|
7
|
+
dry-types (<= 0.13.2)
|
8
8
|
http (~> 3.0)
|
9
9
|
oj (~> 3)
|
10
10
|
|
@@ -27,29 +27,30 @@ GEM
|
|
27
27
|
dry-container (0.6.0)
|
28
28
|
concurrent-ruby (~> 1.0)
|
29
29
|
dry-configurable (~> 0.1, >= 0.1.3)
|
30
|
-
dry-core (0.4.
|
30
|
+
dry-core (0.4.7)
|
31
31
|
concurrent-ruby (~> 1.0)
|
32
32
|
dry-equalizer (0.2.1)
|
33
|
+
dry-inflector (0.1.2)
|
33
34
|
dry-logic (0.4.2)
|
34
35
|
dry-container (~> 0.2, >= 0.2.6)
|
35
36
|
dry-core (~> 0.2)
|
36
37
|
dry-equalizer (~> 0.2)
|
37
|
-
dry-monads (0.
|
38
|
-
|
38
|
+
dry-monads (1.0.1)
|
39
|
+
concurrent-ruby (~> 1.0)
|
40
|
+
dry-core (~> 0.4, >= 0.4.4)
|
39
41
|
dry-equalizer
|
40
|
-
dry-struct (0.
|
41
|
-
dry-core (~> 0.4, >= 0.4.
|
42
|
+
dry-struct (0.5.1)
|
43
|
+
dry-core (~> 0.4, >= 0.4.3)
|
42
44
|
dry-equalizer (~> 0.2)
|
43
|
-
dry-types (~> 0.
|
45
|
+
dry-types (~> 0.13)
|
44
46
|
ice_nine (~> 0.11)
|
45
|
-
dry-types (0.
|
47
|
+
dry-types (0.13.2)
|
46
48
|
concurrent-ruby (~> 1.0)
|
47
|
-
dry-configurable (~> 0.1)
|
48
49
|
dry-container (~> 0.3)
|
49
|
-
dry-core (~> 0.
|
50
|
+
dry-core (~> 0.4, >= 0.4.4)
|
50
51
|
dry-equalizer (~> 0.2)
|
52
|
+
dry-inflector (~> 0.1, >= 0.1.2)
|
51
53
|
dry-logic (~> 0.4, >= 0.4.2)
|
52
|
-
inflecto (~> 0.0.0, >= 0.0.2)
|
53
54
|
hashdiff (0.3.7)
|
54
55
|
http (3.3.0)
|
55
56
|
addressable (~> 2.3)
|
@@ -58,13 +59,12 @@ GEM
|
|
58
59
|
http_parser.rb (~> 0.6.0)
|
59
60
|
http-cookie (1.0.3)
|
60
61
|
domain_name (~> 0.5)
|
61
|
-
http-form_data (2.1.
|
62
|
+
http-form_data (2.1.1)
|
62
63
|
http_parser.rb (0.6.0)
|
63
64
|
ice_nine (0.11.2)
|
64
|
-
inflecto (0.0.2)
|
65
65
|
json (2.1.0)
|
66
66
|
method_source (0.9.0)
|
67
|
-
oj (3.6.
|
67
|
+
oj (3.6.8)
|
68
68
|
pry (0.11.3)
|
69
69
|
coderay (~> 1.1.0)
|
70
70
|
method_source (~> 0.9.0)
|
@@ -116,4 +116,4 @@ DEPENDENCIES
|
|
116
116
|
webmock (~> 3.0)
|
117
117
|
|
118
118
|
BUNDLED WITH
|
119
|
-
1.16.
|
119
|
+
1.16.2
|
data/lib/pwush/message.rb
CHANGED
@@ -1,9 +1,10 @@
|
|
1
1
|
module Pwush
|
2
2
|
class Message < Dry::Struct
|
3
|
+
# transform_types do |type|
|
4
|
+
# type.constructor { |value| value.nil? ? Undefined : value }
|
5
|
+
# end
|
3
6
|
# https://www.pushwoosh.com/v1.0/reference#createmessage
|
4
7
|
|
5
|
-
constructor_type :strict_with_defaults
|
6
|
-
|
7
8
|
# YYYY-MM-DD HH:mm OR 'now'
|
8
9
|
attribute :send_date, Types::Strict::String.default('now')
|
9
10
|
|
@@ -11,11 +12,11 @@ module Pwush
|
|
11
12
|
|
12
13
|
# "timezone":"America/New_York", optional, if ignored UTC-0 is default in "send_date".
|
13
14
|
# See http://php.net/manual/timezones.php for supported timezones
|
14
|
-
attribute :timezone, Types::Strict::String.
|
15
|
+
attribute :timezone, Types::Strict::String.meta(omittable: true)
|
15
16
|
|
16
17
|
# "campaign":"CAMPAIGN_CODE", optional.
|
17
18
|
# Campaign code to which you want to assign this push message
|
18
|
-
attribute :campaign, Types::Strict::String.
|
19
|
+
attribute :campaign, Types::Strict::String.meta(omittable: true)
|
19
20
|
|
20
21
|
# "content":{
|
21
22
|
# "en":"English",
|
@@ -25,90 +26,96 @@ module Pwush
|
|
25
26
|
attribute :content, Types::Strict::String | Types::Hash
|
26
27
|
|
27
28
|
# "page_id": 39, optional. HTML Pages. integer
|
28
|
-
attribute :page_id, Types::Strict::
|
29
|
+
attribute :page_id, Types::Strict::Integer.meta(omittable: true)
|
29
30
|
|
30
31
|
# "rich_page_id": 42, optional. Rich Pages. integer
|
31
|
-
attribute :rich_page_id, Types::Strict::
|
32
|
+
attribute :rich_page_id, Types::Strict::Integer.meta(omittable: true)
|
32
33
|
|
33
34
|
# "rich_media": "XXXX-XXXX", optional. Rich Media code. string
|
34
|
-
attribute :rich_media, Types::Strict::String.
|
35
|
+
attribute :rich_media, Types::Strict::String.meta(omittable: true)
|
35
36
|
|
36
37
|
# "remote_page" : "http://myremoteurl.com",
|
37
38
|
# Remote Rich HTML Page URL. <scheme>://<authority>
|
38
|
-
attribute :remote_page, Types::Strict::String.
|
39
|
+
attribute :remote_page, Types::Strict::String.meta(omittable: true)
|
39
40
|
|
40
41
|
# "link": "http://google.com", optional, string.
|
41
42
|
# For deeplinks add "minimize_link":0
|
42
|
-
attribute :link, Types::Strict::String.
|
43
|
+
attribute :link, Types::Strict::String.meta(omittable: true)
|
43
44
|
|
44
45
|
# "minimize_link": 0, optional.
|
45
46
|
# False or 0 - do not minimize, 1 - Google, 2 - bitly. Default = 1
|
46
|
-
attribute :minimize_link, Types::Strict::
|
47
|
+
attribute :minimize_link, Types::Strict::Integer.constrained(included_in: 0..2)
|
48
|
+
.meta(omittable: true)
|
47
49
|
|
48
50
|
# "data": {"key":"value"}, JSON string or JSON object,
|
49
51
|
# will be passed as "u" parameter in the payload (converted to JSON string)
|
50
|
-
attribute :data, (Types::Strict::String | Types::Hash).
|
52
|
+
attribute :data, (Types::Strict::String | Types::Hash).meta(omittable: true)
|
51
53
|
|
52
54
|
# 1 - iOS; 2 - BB; 3 - Android; 5 - Windows Phone; 7 - OS X; 8 - Windows 8;
|
53
55
|
# 9 - Amazon; 10 - Safari; 11 - Chrome; 12 - Firefox;
|
54
56
|
# ignored if "devices" < 10
|
55
|
-
Platforms = Types::Strict::
|
56
|
-
attribute :platforms, Types::Strict::Array.of(Platforms).
|
57
|
+
Platforms = Types::Strict::Integer.enum(1, 2, 3, 5, 7, 8, 9, 10, 11, 12)
|
58
|
+
attribute :platforms, Types::Strict::Array.of(Platforms).meta(omittable: true)
|
57
59
|
|
58
60
|
# "preset":"Q1A2Z-6X8SW", Push Preset Code from your Control Panel
|
59
|
-
attribute :preset, Types::Strict::String.
|
61
|
+
attribute :preset, Types::Strict::String.meta(omittable: true)
|
60
62
|
|
61
63
|
# "send_rate": 100, throttling. Valid values are from 100 to 1000 pushes/second.
|
62
|
-
attribute :send_rate, Types::Strict::
|
64
|
+
attribute :send_rate, Types::Strict::Integer.constrained(included_in: 100..1000)
|
65
|
+
.meta(omittable: true)
|
63
66
|
|
64
67
|
# Optional. Specify tokens or hwids to send targeted push notifications.
|
65
68
|
# Not more than 1000 tokens/hwids in an array.
|
66
69
|
# If set, the message will only be sent to the devices on the list.
|
67
70
|
# Ignored if the Applications Group is used. iOS push tokens can only be lower case.
|
68
|
-
attribute :devices, Types::Strict::Array.of(Types::Strict::String)
|
71
|
+
attribute :devices, Types::Strict::Array.of(Types::Strict::String)
|
72
|
+
.meta(omittable: true)
|
69
73
|
|
70
74
|
# "users":["user_3078a"], optional.
|
71
75
|
# If set, message will only be delivered to the specified users Id's
|
72
76
|
# (specified via /registerUser call).
|
73
77
|
# If specified together with devices parameter, the latter will be ignored.
|
74
|
-
attribute :users, Types::Strict::Array.of(Types::Strict::String)
|
78
|
+
attribute :users, Types::Strict::Array.of(Types::Strict::String)
|
79
|
+
.meta(omittable: true)
|
75
80
|
|
76
81
|
# "filter": "FILTER_NAME", optional.
|
77
|
-
attribute :filter, Types::Strict::String.
|
82
|
+
attribute :filter, Types::Strict::String.meta(omittable: true)
|
78
83
|
|
79
84
|
# optional, placeholders for dynamic content instead of device tags
|
80
85
|
# "dynamic_content_placeholders" :{
|
81
86
|
# "firstname":"John",
|
82
87
|
# "lastname":"Doe"
|
83
88
|
# },
|
84
|
-
attribute :dynamic_content_placeholders, Types::Hash.
|
89
|
+
attribute :dynamic_content_placeholders, Types::Hash.meta(omittable: true)
|
85
90
|
|
86
91
|
# "conditions": [TAG_CONDITION1, TAG_CONDITION2, ..., TAG_CONDITIONN],
|
87
92
|
# Optional.
|
88
|
-
attribute :conditions, Types::Strict::Array.of(Types::Strict::String)
|
93
|
+
attribute :conditions, Types::Strict::Array.of(Types::Strict::String)
|
94
|
+
.meta(omittable: true)
|
89
95
|
|
90
96
|
# iOS related
|
91
97
|
|
92
98
|
# "ios_badges": 5, optional, integer.
|
93
99
|
# iOS application badge number.
|
94
100
|
# Use "+n" or "-n" to increment/decrement the badge value by n
|
95
|
-
attribute :ios_badges, Types::Strict::
|
101
|
+
attribute :ios_badges, Types::Strict::Integer.meta(omittable: true)
|
96
102
|
|
97
103
|
# "ios_sound": "sound file.wav", optional.
|
98
104
|
# Sound file name in the main bundle of application.
|
99
105
|
# If left empty, the device will produce no sound upon receiving a push
|
100
|
-
attribute :ios_sound, Types::Strict::String.
|
106
|
+
attribute :ios_sound, Types::Strict::String.meta(omittable: true)
|
101
107
|
|
102
108
|
# "ios_ttl": 3600, optional.
|
103
109
|
# Time to live parameter - maximum message lifespan in seconds
|
104
|
-
attribute :ios_ttl, Types::Strict::
|
110
|
+
attribute :ios_ttl, Types::Strict::Integer.meta(omittable: true)
|
105
111
|
|
106
112
|
# "ios_silent": 1, optional.
|
107
113
|
# Enable silent notifications (ignore "sound" and "content")
|
108
|
-
attribute :ios_silent, Types::Strict::
|
114
|
+
attribute :ios_silent, Types::Strict::Integer.constrained(included_in: 0..1)
|
115
|
+
.meta(omittable: true)
|
109
116
|
|
110
117
|
# iOS8 category ID from Pushwoosh
|
111
|
-
attribute :ios_category_id, Types::Strict::
|
118
|
+
attribute :ios_category_id, Types::Strict::Integer.meta(omittable: true)
|
112
119
|
|
113
120
|
# Optional - root level parameters to the aps dictionary
|
114
121
|
# "ios_root_params" : {
|
@@ -119,118 +126,121 @@ module Pwush
|
|
119
126
|
# "attachment":"YOUR_ATTACHMENT_URL", // iOS 10 media attachment URL
|
120
127
|
# "data": << User supplied data, max of 4KB>>
|
121
128
|
# },
|
122
|
-
attribute :ios_root_params, Types::Hash.
|
129
|
+
attribute :ios_root_params, Types::Hash.meta(omittable: true)
|
123
130
|
|
124
131
|
# "apns_trim_content":1, optional. (0|1)
|
125
132
|
# Trims the exceeding content strings with ellipsis
|
126
|
-
attribute :apns_trim_content, Types::Strict::
|
133
|
+
attribute :apns_trim_content, Types::Strict::Integer.constrained(included_in: 0..1)
|
134
|
+
.meta(omittable: true)
|
127
135
|
|
128
136
|
# "ios_title":"Title", optional. Add Title for push notification
|
129
|
-
attribute :ios_title, Types::Strict::String.
|
137
|
+
attribute :ios_title, Types::Strict::String.meta(omittable: true)
|
130
138
|
|
131
139
|
# "ios_subtitle" : "SubTitle", //Optional. Added sub-title for push notification
|
132
|
-
attribute :ios_subtitle, Types::Strict::String.
|
140
|
+
attribute :ios_subtitle, Types::Strict::String.meta(omittable: true)
|
133
141
|
|
134
142
|
# Android related
|
135
143
|
|
136
144
|
# "android_root_params": {"key": "value"}
|
137
145
|
# custom key-value object. root level parameters for the android payload recipients
|
138
|
-
attribute :android_root_params, Types::Hash.
|
146
|
+
attribute :android_root_params, Types::Hash.meta(omittable: true)
|
139
147
|
|
140
148
|
# "android_sound" : "soundfile", optional. No file extension.
|
141
149
|
# If left empty, the device will produce no sound upon receiving a push
|
142
|
-
attribute :android_sound, Types::Strict::String.
|
150
|
+
attribute :android_sound, Types::Strict::String.meta(omittable: true)
|
143
151
|
|
144
152
|
# "android_header":"header", optional. Android notification header
|
145
|
-
attribute :android_header, Types::Strict::String.
|
153
|
+
attribute :android_header, Types::Strict::String.meta(omittable: true)
|
146
154
|
|
147
155
|
# "android_icon": "icon",
|
148
|
-
attribute :android_icon, Types::Strict::String.
|
156
|
+
attribute :android_icon, Types::Strict::String.meta(omittable: true)
|
149
157
|
|
150
158
|
# "android_custom_icon": "http://example.com/image.png", optional.
|
151
159
|
# Full path URL to the image file
|
152
|
-
attribute :android_custom_icon, Types::Strict::String.
|
160
|
+
attribute :android_custom_icon, Types::Strict::String.meta(omittable: true)
|
153
161
|
|
154
162
|
# "android_banner": "http://example.com/banner.png", optional.
|
155
163
|
# Full path URL to the image file
|
156
|
-
attribute :android_banner, Types::Strict::String.
|
164
|
+
attribute :android_banner, Types::Strict::String.meta(omittable: true)
|
157
165
|
|
158
166
|
# "android_badges": 5, optional, integer.
|
159
167
|
# Android application icon badge number.
|
160
168
|
# Use "+n" or "-n" to increment/decrement the badge value by n
|
161
|
-
attribute :android_badges, Types::Strict::
|
169
|
+
attribute :android_badges, Types::Strict::Integer.meta(omittable: true)
|
162
170
|
|
163
171
|
# "android_gcm_ttl": 3600, optional.
|
164
172
|
# Time to live parameter - maximum message lifespan in seconds
|
165
|
-
attribute :android_gcm_ttl, Types::Strict::
|
173
|
+
attribute :android_gcm_ttl, Types::Strict::Integer.meta(omittable: true)
|
166
174
|
|
167
175
|
# "android_vibration": 0, Android force-vibration for high-priority pushes, boolean
|
168
|
-
attribute :android_vibration, Types::Strict::Bool.
|
176
|
+
attribute :android_vibration, Types::Strict::Bool.meta(omittable: true)
|
169
177
|
|
170
178
|
# "android_led":"#rrggbb", LED hex color, device will do its best approximation
|
171
|
-
attribute :android_led, Types::Strict::String.
|
179
|
+
attribute :android_led, Types::Strict::String.meta(omittable: true)
|
172
180
|
|
173
181
|
# "android_priority":-1, priority of the push in the Android push drawer.
|
174
182
|
# Valid values are -2, -1, 0, 1 and 2
|
175
|
-
attribute :android_priority, Types::Strict::
|
183
|
+
attribute :android_priority, Types::Strict::Integer.constrained(included_in: -2..2)
|
184
|
+
.meta(omittable: true)
|
176
185
|
|
177
186
|
# "android_ibc":"#RRGGBB", icon background color on Lollipop,
|
178
187
|
# #RRGGBB, #AARRGGBB, "red", "black", "yellow", etc.
|
179
|
-
attribute :android_ibc, Types::Strict::String.
|
188
|
+
attribute :android_ibc, Types::Strict::String.meta(omittable: true)
|
180
189
|
|
181
190
|
# "android_silent": 1, optional. 0 or 1
|
182
191
|
# Enable silent notificaiton (ignore sound and content)
|
183
|
-
attribute :android_silent, Types::Strict::
|
192
|
+
attribute :android_silent, Types::Strict::Integer.constrained(included_in: 0..1)
|
193
|
+
.meta(omittable: true)
|
184
194
|
|
185
195
|
# Amazon related
|
186
196
|
|
187
197
|
# "adm_root_params": {"key": "value"}, // custom key-value object
|
188
|
-
attribute :adm_root_params, Types::Hash.
|
198
|
+
attribute :adm_root_params, Types::Hash.meta(omittable: true)
|
189
199
|
# "adm_sound": "push.mp3",
|
190
|
-
attribute :adm_sound, Types::Strict::String.
|
200
|
+
attribute :adm_sound, Types::Strict::String.meta(omittable: true)
|
191
201
|
# "adm_header": "Header",
|
192
|
-
attribute :adm_header, Types::Strict::String.
|
202
|
+
attribute :adm_header, Types::Strict::String.meta(omittable: true)
|
193
203
|
# "adm_icon": "icon",
|
194
|
-
attribute :adm_icon, Types::Strict::String.
|
204
|
+
attribute :adm_icon, Types::Strict::String.meta(omittable: true)
|
195
205
|
# "adm_custom_icon": "http://example.com/image.png",
|
196
|
-
attribute :adm_custom_icon, Types::Strict::String.
|
206
|
+
attribute :adm_custom_icon, Types::Strict::String.meta(omittable: true)
|
197
207
|
# "adm_banner": "http://example.com/banner.png",
|
198
|
-
attribute :adm_banner, Types::Strict::String.
|
208
|
+
attribute :adm_banner, Types::Strict::String.meta(omittable: true)
|
199
209
|
# "adm_ttl": 3600, optional. Time to live parameter - the maximum message lifespan in seconds
|
200
|
-
attribute :adm_ttl, Types::Strict::
|
210
|
+
attribute :adm_ttl, Types::Strict::Integer.meta(omittable: true)
|
201
211
|
# "adm_priority":-1, priority of the push in Amazon push drawer, valid values are -2, -1, 0, 1 and 2
|
202
|
-
attribute :adm_priority, Types::Strict::
|
212
|
+
attribute :adm_priority, Types::Strict::Integer.meta(omittable: true)
|
203
213
|
|
204
214
|
# Windows Phone related
|
205
215
|
|
206
216
|
# Windows Phone notification type. 'Tile' or 'Toast'. Raw notifications are not supported. 'Tile' if default
|
207
|
-
attribute :wp_type, Types::Strict::String.
|
217
|
+
attribute :wp_type, Types::Strict::String.meta(omittable: true)
|
208
218
|
# tile image
|
209
|
-
attribute :wp_background, Types::Strict::String.
|
219
|
+
attribute :wp_background, Types::Strict::String.meta(omittable: true)
|
210
220
|
# back tile image
|
211
|
-
attribute :wp_backbackground, Types::Strict::String.
|
221
|
+
attribute :wp_backbackground, Types::Strict::String.meta(omittable: true)
|
212
222
|
# back tile title
|
213
|
-
attribute :wp_backtitle, Types::Strict::String.
|
223
|
+
attribute :wp_backtitle, Types::Strict::String.meta(omittable: true)
|
214
224
|
# back tile content
|
215
|
-
attribute :wp_backcontent, Types::Strict::String.
|
225
|
+
attribute :wp_backcontent, Types::Strict::String.meta(omittable: true)
|
216
226
|
# Badge for Windows Phone notification
|
217
|
-
attribute :wp_count, Types::Strict::
|
227
|
+
attribute :wp_count, Types::Strict::Integer.meta(omittable: true)
|
218
228
|
|
219
229
|
# BlackBerry related
|
220
230
|
|
221
231
|
# BlackBerry header, applicable to BB10 Series devices
|
222
|
-
attribute :blackberry_header, Types::Strict::String.
|
232
|
+
attribute :blackberry_header, Types::Strict::String.meta(omittable: true)
|
223
233
|
|
224
234
|
# Mac OS X related
|
225
235
|
|
226
236
|
# "mac_badges": 3,
|
227
|
-
attribute :mac_badges, Types::Strict::
|
237
|
+
attribute :mac_badges, Types::Strict::Integer.meta(omittable: true)
|
228
238
|
# "mac_sound": "sound.caf",
|
229
|
-
attribute :mac_sound, Types::Strict::String.
|
239
|
+
attribute :mac_sound, Types::Strict::String.meta(omittable: true)
|
230
240
|
# "mac_root_params": {"content-available":1},
|
231
|
-
attribute :mac_root_params, Types::Hash.
|
241
|
+
attribute :mac_root_params, Types::Hash.meta(omittable: true)
|
232
242
|
# Time to live parameter — maximum message lifespan in seconds
|
233
|
-
attribute :mac_ttl, Types::Strict::
|
243
|
+
attribute :mac_ttl, Types::Strict::Integer.meta(omittable: true)
|
234
244
|
|
235
245
|
# WNS related
|
236
246
|
|
@@ -238,66 +248,68 @@ module Pwush
|
|
238
248
|
# "en": "PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48YmFkZ2UgdmFsdWU9ImF2YWlsYWJsZSIvPg==",
|
239
249
|
# "de": "PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48YmFkZ2UgdmFsdWU9Im5ld01lc3NhZ2UiLz4="
|
240
250
|
# },
|
241
|
-
attribute :wns_content, Types::Hash.
|
251
|
+
attribute :wns_content, Types::Hash.meta(omittable: true)
|
242
252
|
# 'Tile' | 'Toast' | 'Badge' | 'Raw'
|
243
|
-
attribute :wns_type, Types::Strict::String.
|
253
|
+
attribute :wns_type, Types::Strict::String.meta(omittable: true)
|
244
254
|
# optional. Used in Tile replacement policy. An alphanumeric string of no more than 16 characters.
|
245
|
-
attribute :wns_tag, Types::Strict::String.
|
255
|
+
attribute :wns_tag, Types::Strict::String.meta(omittable: true)
|
246
256
|
# optional. (1|0) Translates into X-WNS-Cache-Policy value
|
247
|
-
attribute :wns_cache, Types::Strict::
|
257
|
+
attribute :wns_cache, Types::Strict::Integer.meta(omittable: true)
|
248
258
|
# optional. Expiration time for notification in seconds
|
249
|
-
attribute :wns_ttl, Types::Strict::
|
259
|
+
attribute :wns_ttl, Types::Strict::Integer.meta(omittable: true)
|
250
260
|
|
251
261
|
# Safari related
|
252
262
|
|
253
263
|
# obligatory, title of the notification
|
254
|
-
attribute :safari_title, Types::Strict::String.
|
264
|
+
attribute :safari_title, Types::Strict::String.meta(omittable: true)
|
255
265
|
|
256
266
|
# "safari_action": "Click here", // optional
|
257
|
-
attribute :safari_action, Types::Strict::String.
|
267
|
+
attribute :safari_action, Types::Strict::String.meta(omittable: true)
|
258
268
|
|
259
269
|
# "safari_url_args": ["firstArgument", "secondArgument"],
|
260
270
|
# Obligatory, but the value may be empty
|
261
|
-
attribute :safari_url_args, Types::Strict::Array.of(Types::Strict::String)
|
271
|
+
attribute :safari_url_args, Types::Strict::Array.of(Types::Strict::String)
|
272
|
+
.meta(omittable: true)
|
262
273
|
|
263
274
|
# Optional. Time to live parameter - the maximum lifespan of a message in seconds
|
264
|
-
attribute :safari_ttl, Types::Strict::
|
275
|
+
attribute :safari_ttl, Types::Strict::Integer.constrained(min_size: 0)
|
276
|
+
.meta(omittable: true)
|
265
277
|
|
266
278
|
# Chrome related
|
267
279
|
|
268
280
|
# You can specify the header of the message in this parameter
|
269
|
-
attribute :chrome_title, Types::Strict::String.
|
281
|
+
attribute :chrome_title, Types::Strict::String.meta(omittable: true)
|
270
282
|
|
271
283
|
# "chrome_icon":"", full path URL to the icon or extension resources file path
|
272
|
-
attribute :chrome_icon, Types::Strict::String.
|
284
|
+
attribute :chrome_icon, Types::Strict::String.meta(omittable: true)
|
273
285
|
|
274
286
|
# Time to live parameter - maximum message lifespan in seconds
|
275
|
-
attribute :chrome_gcm_ttl, Types::Strict::
|
287
|
+
attribute :chrome_gcm_ttl, Types::Strict::Integer.meta(omittable: true)
|
276
288
|
|
277
289
|
# optional, changes chrome push display time.
|
278
290
|
# Set to 0 to display push until user interacts with it
|
279
|
-
attribute :chrome_duration, Types::Strict::
|
291
|
+
attribute :chrome_duration, Types::Strict::Integer.meta(omittable: true)
|
280
292
|
|
281
293
|
# optional, URL to large image.
|
282
|
-
attribute :chrome_image, Types::Strict::String.
|
294
|
+
attribute :chrome_image, Types::Strict::String.meta(omittable: true)
|
283
295
|
|
284
|
-
attribute :chrome_button_text1, Types::Strict::String.
|
296
|
+
attribute :chrome_button_text1, Types::Strict::String.meta(omittable: true)
|
285
297
|
|
286
298
|
# ignored if chrome_button_text1 is not set
|
287
|
-
attribute :chrome_button_url1, Types::Strict::String.
|
299
|
+
attribute :chrome_button_url1, Types::Strict::String.meta(omittable: true)
|
288
300
|
|
289
|
-
attribute :chrome_button_text2, Types::Strict::String.
|
301
|
+
attribute :chrome_button_text2, Types::Strict::String.meta(omittable: true)
|
290
302
|
|
291
303
|
# ignored if chrome_button_text2 is not set
|
292
|
-
attribute :chrome_button_url2, Types::Strict::String.
|
304
|
+
attribute :chrome_button_url2, Types::Strict::String.meta(omittable: true)
|
293
305
|
|
294
306
|
# Firefox-related
|
295
307
|
|
296
308
|
# optional. You can specify message header here
|
297
|
-
attribute :firefox_title, Types::Strict::String.
|
309
|
+
attribute :firefox_title, Types::Strict::String.meta(omittable: true)
|
298
310
|
|
299
311
|
# full path URL to the icon or path to the file in extension resources
|
300
|
-
attribute :firefox_icon, Types::Strict::String.
|
312
|
+
attribute :firefox_icon, Types::Strict::String.meta(omittable: true)
|
301
313
|
|
302
314
|
def defined_attributes
|
303
315
|
__attributes__.reject { |_, v| v.nil? }
|
data/lib/pwush/response.rb
CHANGED
@@ -1,17 +1,16 @@
|
|
1
|
-
require 'dry
|
1
|
+
require 'dry/monads/result'
|
2
2
|
|
3
3
|
require 'pwush/response/deffered'
|
4
4
|
require 'pwush/response/value'
|
5
5
|
|
6
6
|
module Pwush
|
7
7
|
module Response
|
8
|
+
include Dry::Monads::Result::Mixin
|
9
|
+
|
8
10
|
def self.wrap
|
9
11
|
Deffered.new(yield).resolve
|
10
12
|
rescue Http::TimeoutError => e
|
11
13
|
Failure.new(e)
|
12
14
|
end
|
13
|
-
|
14
|
-
class Success < Dry::Monads::Success; end
|
15
|
-
class Failure < Dry::Monads::Failure; end
|
16
15
|
end
|
17
16
|
end
|
data/lib/pwush/response/value.rb
CHANGED
@@ -1,11 +1,9 @@
|
|
1
1
|
module Pwush
|
2
2
|
module Response
|
3
3
|
class Value < Dry::Struct::Value
|
4
|
-
|
5
|
-
|
6
|
-
attribute :
|
7
|
-
attribute :status_message, Types::Strict::String.optional
|
8
|
-
attribute :body, (Types::Hash | Types::String).optional
|
4
|
+
attribute :status_code, Types::Coercible::Integer
|
5
|
+
attribute :status_message, Types::Strict::String.meta(omittable: true)
|
6
|
+
attribute :body, (Types::Hash | Types::String).meta(omittable: true)
|
9
7
|
end
|
10
8
|
end
|
11
9
|
end
|
data/lib/pwush/version.rb
CHANGED
data/pwush.gemspec
CHANGED
@@ -20,9 +20,9 @@ Gem::Specification.new do |spec|
|
|
20
20
|
spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
|
21
21
|
spec.require_paths = ['lib']
|
22
22
|
|
23
|
-
spec.add_dependency 'dry-monads', '~> 0
|
24
|
-
spec.add_dependency 'dry-struct', '
|
25
|
-
spec.add_dependency 'dry-types', '
|
23
|
+
spec.add_dependency 'dry-monads', '~> 1.0'
|
24
|
+
spec.add_dependency 'dry-struct', '<= 0.5.1 '
|
25
|
+
spec.add_dependency 'dry-types', '<= 0.13.2'
|
26
26
|
spec.add_dependency 'http', '~> 3.0'
|
27
27
|
spec.add_dependency 'oj', '~> 3'
|
28
28
|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: pwush
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.5
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Yaroslav Litvinov
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-
|
11
|
+
date: 2018-09-10 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: dry-monads
|
@@ -16,42 +16,42 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: '0
|
19
|
+
version: '1.0'
|
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
|
-
version: '0
|
26
|
+
version: '1.0'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: dry-struct
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
|
-
- - "
|
31
|
+
- - "<="
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version:
|
33
|
+
version: 0.5.1
|
34
34
|
type: :runtime
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
|
-
- - "
|
38
|
+
- - "<="
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version:
|
40
|
+
version: 0.5.1
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: dry-types
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
|
-
- - "
|
45
|
+
- - "<="
|
46
46
|
- !ruby/object:Gem::Version
|
47
|
-
version:
|
47
|
+
version: 0.13.2
|
48
48
|
type: :runtime
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
|
-
- - "
|
52
|
+
- - "<="
|
53
53
|
- !ruby/object:Gem::Version
|
54
|
-
version:
|
54
|
+
version: 0.13.2
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
56
|
name: http
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
@@ -229,7 +229,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
229
229
|
version: '0'
|
230
230
|
requirements: []
|
231
231
|
rubyforge_project:
|
232
|
-
rubygems_version: 2.6
|
232
|
+
rubygems_version: 2.7.6
|
233
233
|
signing_key:
|
234
234
|
specification_version: 4
|
235
235
|
summary: Pushwoosh remote API ruby toolkit
|