rav-meser-api 1.0.2 → 1.0.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/rav-meser-api.rb +61 -6
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e9768fbcdb63add5ea51185a65c75105acab0357
|
4
|
+
data.tar.gz: 6c4a975617f575272a2920c2d38a07ad0d0e4a3c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 0321ef926979519f7c09384b61c09ba987876039e5ee675fa6c7fe994eebd6e7203efeb2b504fe132a6ba688113daae8a1f12c729221db1327cc7b1706a129bf
|
7
|
+
data.tar.gz: 27901ea9251593d2859c13b3997aaab5d83f55cb1b3da78667187e9c407f76e10ff1989cd8205f186fce66a76f953cf71077ab80b037b379d07b6a4b2ea106bb
|
data/lib/rav-meser-api.rb
CHANGED
@@ -4,6 +4,7 @@ require 'json'
|
|
4
4
|
require 'optparse'
|
5
5
|
require 'pp'
|
6
6
|
require 'uri'
|
7
|
+
require 'pry'
|
7
8
|
|
8
9
|
# gem class name RavMeser
|
9
10
|
class RavMeser
|
@@ -27,7 +28,7 @@ class RavMeser
|
|
27
28
|
# get all the lists
|
28
29
|
#
|
29
30
|
# Example:
|
30
|
-
# >>
|
31
|
+
# >> RavMeser.get_lists()
|
31
32
|
# => { "LISTS" => [{}, {}, ... ] }
|
32
33
|
#
|
33
34
|
def get_lists
|
@@ -101,7 +102,7 @@ class RavMeser
|
|
101
102
|
#
|
102
103
|
# Example:
|
103
104
|
# >> RavMeser.create_subscribers(123456, {0 => {'EMAIL': "sub1@email.com", 'NAME': "sub1"}, 1 => {'EMAIL': "sub2@email.com", 'NAME': "sub2"}} )
|
104
|
-
# => {"SUBSCRIBERS_CREATED": [], "EMAILS_INVALID": [], "EMAILS_EXISTING": ["
|
105
|
+
# => {"SUBSCRIBERS_CREATED": [112233], "EMAILS_INVALID": [], "EMAILS_EXISTING": ["sub1@email.com"], "EMAILS_BANNED": [], "PHONES_INVALID": [], "PHONES_EXISTING": [], "BAD_PERSONAL_FIELDS": {}, "ERRORS" : [] }
|
105
106
|
#
|
106
107
|
# Arguments:
|
107
108
|
# id: (int)
|
@@ -114,7 +115,7 @@ class RavMeser
|
|
114
115
|
#
|
115
116
|
# Example:
|
116
117
|
# >> RavMeser.edit_subscribers(123456, {0 => {'IDENTIFIER': "sub1@email.com", 'NAME': "sub1NewName"}, 1 => {'IDENTIFIER': "sub2", 'NAME': "sub2"}} )
|
117
|
-
# => {"SUBSCRIBERS_UPDATED": [], "INVALID_SUBSCRIBER_IDENTIFIERS": [], "EMAILS_INVALID": [], "EMAILS_EXISTED": [
|
118
|
+
# => {"SUBSCRIBERS_UPDATED": [112233], "INVALID_SUBSCRIBER_IDENTIFIERS": ["sub1@email.com"], "EMAILS_INVALID": [], "EMAILS_EXISTED": [], "EMAILS_BANNED": [], "PHONES_INVALID": [], "PHONES_EXISTING": [], "BAD_PERSONAL_FIELDS": {} }
|
118
119
|
#
|
119
120
|
# Arguments:
|
120
121
|
# id: (int)
|
@@ -136,6 +137,51 @@ class RavMeser
|
|
136
137
|
send_request(:post, 'subscribers', '/' + id.to_s + '/subscribers?', %w[method delete], args)
|
137
138
|
end
|
138
139
|
|
140
|
+
# create new subscribers in specific list and update subscribers that exists
|
141
|
+
#
|
142
|
+
# Example:
|
143
|
+
# >> RavMeser.upsert_subscribers(123456, {0 => {'EMAIL': "sub1@email.com", 'NAME': "sub1"}, 1 => {'EMAIL': "sub2@email.com", 'NAME': "sub2"}} )
|
144
|
+
# => [{"SUBSCRIBERS_CREATED": [112233], "EMAILS_INVALID": [], "EMAILS_EXISTING": ["sub1@email.com"], "EMAILS_BANNED": [], "PHONES_INVALID": [], "PHONES_EXISTING": [], "BAD_PERSONAL_FIELDS": {}, "ERRORS" : [] },
|
145
|
+
# {"SUBSCRIBERS_UPDATED": [223344], "INVALID_SUBSCRIBER_IDENTIFIERS": [], "EMAILS_INVALID": [], "EMAILS_EXISTED": [], "EMAILS_BANNED": [], "PHONES_INVALID": [], "PHONES_EXISTING": [], "BAD_PERSONAL_FIELDS": {} }]
|
146
|
+
#
|
147
|
+
# Arguments:
|
148
|
+
# id: (int)
|
149
|
+
# args: (Hash)
|
150
|
+
def upsert_subscribers(id, args = {})
|
151
|
+
create_response = send_request(:post, 'subscribers', '/' + id.to_s + '/subscribers', [], args)
|
152
|
+
|
153
|
+
update_args = {}
|
154
|
+
create_response['EMAILS_EXISTING'].each_with_index do |email, index|
|
155
|
+
update_args[index] = get_subscriber_args_and_set_identifier(args, email)
|
156
|
+
end
|
157
|
+
edit_response = send_request(:put, 'subscribers', '/' + id.to_s + '/subscribers', [], update_args)
|
158
|
+
|
159
|
+
[create_response, edit_response]
|
160
|
+
end
|
161
|
+
|
162
|
+
# create new subscriber in specific list - update the subscriber if already exists
|
163
|
+
#
|
164
|
+
# Example:
|
165
|
+
# >> RavMeser.upsert_subscriber(123456, {0 => {'EMAIL': "sub1@email.com", 'NAME': "sub1"} )
|
166
|
+
# => [{"SUBSCRIBERS_CREATED": [], "EMAILS_INVALID": [], "EMAILS_EXISTING": ["sub1@email.com"], "EMAILS_BANNED": [], "PHONES_INVALID": [], "PHONES_EXISTING": [], "BAD_PERSONAL_FIELDS": {}, "ERRORS" : [] },
|
167
|
+
# {"SUBSCRIBERS_UPDATED": [223344], "INVALID_SUBSCRIBER_IDENTIFIERS": [], "EMAILS_INVALID": [], "EMAILS_EXISTED": [], "EMAILS_BANNED": [], "PHONES_INVALID": [], "PHONES_EXISTING": [], "BAD_PERSONAL_FIELDS": {} }]
|
168
|
+
#
|
169
|
+
# Arguments:
|
170
|
+
# id: (int)
|
171
|
+
# args: (Hash)
|
172
|
+
def upsert_subscriber(id, args = {})
|
173
|
+
return { error: 'Too many subscribers' } unless args.length == 1
|
174
|
+
|
175
|
+
create_response = send_request(:post, 'subscribers', '/' + id.to_s + '/subscribers', [], args)
|
176
|
+
if create_response['EMAILS_EXISTING'].length == 1
|
177
|
+
args[0][:IDENTIFIER] = args[0].delete(:EMAIL)
|
178
|
+
edit_response = send_request(:put, 'subscribers', '/' + id.to_s + '/subscribers', [], args)
|
179
|
+
end
|
180
|
+
|
181
|
+
[create_response, edit_response || {}]
|
182
|
+
end
|
183
|
+
|
184
|
+
|
139
185
|
# <!----------- PERSONAL FIELDS -----------!>
|
140
186
|
|
141
187
|
# get personal fields from specific list
|
@@ -226,10 +272,12 @@ class RavMeser
|
|
226
272
|
# args: (Hash)
|
227
273
|
def create_and_send_message(id, msg)
|
228
274
|
res = create_message(id, msg)
|
229
|
-
send_message(id, res[
|
275
|
+
send_message(id, res['MESSAGE_ID'])
|
230
276
|
end
|
231
277
|
|
232
|
-
|
278
|
+
private
|
279
|
+
|
280
|
+
# private method
|
233
281
|
# common code to send the requests
|
234
282
|
#
|
235
283
|
# Example:
|
@@ -255,5 +303,12 @@ class RavMeser
|
|
255
303
|
response
|
256
304
|
end
|
257
305
|
|
258
|
-
|
306
|
+
def get_subscriber_args_and_set_identifier(args, email)
|
307
|
+
args.each do |_, v|
|
308
|
+
if v[:EMAIL] == email
|
309
|
+
v[:IDENTIFIER] = v.delete(:EMAIL)
|
310
|
+
return v
|
311
|
+
end
|
312
|
+
end
|
313
|
+
end
|
259
314
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rav-meser-api
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
4
|
+
version: 1.0.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Itamar Davidyan
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2019-09-24 00:00:00.000000000 Z
|
12
12
|
dependencies: []
|
13
13
|
description: Rav Meser API Ruby
|
14
14
|
email: itamardavidyan@gmail.com
|