unione-ruby 0.0.1 → 1.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +99 -8
- data/Rakefile +52 -0
- data/config/response_schema/domain.yml +74 -0
- data/config/response_schema/email.yml +23 -0
- data/config/response_schema/event_dump.yml +75 -0
- data/config/response_schema/project.yml +59 -0
- data/config/response_schema/suppression.yml +71 -0
- data/config/response_schema/system.yml +33 -0
- data/config/response_schema/tag.yml +26 -0
- data/config/response_schema/template.yml +134 -0
- data/config/response_schema/unsubscribed.yml +45 -0
- data/config/response_schema/webhook.yml +141 -0
- data/examples/api/custom_api.rb +14 -0
- data/examples/api/domain.rb +14 -7
- data/examples/api/email/attachments.rb +28 -0
- data/examples/api/email/multiple_recipients.rb +24 -0
- data/examples/api/email/send.rb +25 -0
- data/examples/api/email/settings.rb +41 -0
- data/examples/api/email/subscribe.rb +14 -0
- data/examples/api/email/template.rb +26 -0
- data/examples/api/event_dump.rb +44 -0
- data/examples/api/project.rb +35 -11
- data/examples/api/suppression.rb +34 -0
- data/examples/api/system.rb +10 -0
- data/examples/api/tag.rb +15 -0
- data/examples/api/template.rb +40 -22
- data/examples/api/unsubscribed.rb +20 -12
- data/examples/api/webhook.rb +34 -24
- data/examples/helpers.rb +29 -0
- data/examples/send_mail.rb +44 -0
- data/examples/setup.rb +34 -0
- data/lib/unione/client/domain.rb +19 -46
- data/lib/unione/client/email.rb +14 -21
- data/lib/unione/client/event_dump.rb +37 -0
- data/lib/unione/client/project.rb +19 -43
- data/lib/unione/client/suppression.rb +38 -0
- data/lib/unione/client/system.rb +19 -0
- data/lib/unione/client/tag.rb +24 -0
- data/lib/unione/client/template.rb +19 -65
- data/lib/unione/client/unsubscribed.rb +18 -31
- data/lib/unione/client/webhook.rb +19 -38
- data/lib/unione/client.rb +42 -17
- data/lib/unione/connection.rb +24 -16
- data/lib/unione/helpers.rb +22 -0
- data/lib/unione/response/raise_error.rb +4 -5
- data/lib/unione/validation.rb +32 -12
- data/lib/unione/version.rb +1 -1
- data/lib/unione-ruby.rb +0 -3
- data/test/CONFIGFILE.yml +71 -0
- data/unione-ruby.gemspec +2 -2
- metadata +36 -11
- data/examples/1_setup.rb +0 -25
- data/examples/2_mail_sending.rb +0 -23
- data/examples/api/email.rb +0 -36
- data/lib/unione/helpers/mail/mail.rb +0 -37
- data/lib/unione/helpers/template/template.rb +0 -31
- data/lib/unione/helpers/webhook/webhook.rb +0 -17
data/examples/api/webhook.rb
CHANGED
@@ -1,32 +1,42 @@
|
|
1
1
|
require 'unione-ruby'
|
2
2
|
require 'json'
|
3
3
|
|
4
|
+
unione = UniOne::Client.new(
|
5
|
+
hostname: 'eu1.unione.io',
|
6
|
+
lang: 'en',
|
7
|
+
api_key: ENV['UNIONE_API_KEY']
|
8
|
+
)
|
9
|
+
|
4
10
|
# Set webhook
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
unione = UniOne::Client.new(data_center: 'eu1', lang: 'en', api_key: ENV['UNIONE_API_KEY'])
|
22
|
-
response = unione.set_webhook(webhook.to_json)
|
23
|
-
puts response.status
|
24
|
-
puts response.body.to_h
|
25
|
-
puts response.headers
|
11
|
+
params = {}
|
12
|
+
|
13
|
+
params[:url] = 'http://example.com'
|
14
|
+
params[:status] = :active
|
15
|
+
|
16
|
+
params[:event_format] = :json_post
|
17
|
+
params[:delivery_info] = 1
|
18
|
+
params[:single_event] = 0
|
19
|
+
params[:max_parallel] = 10
|
20
|
+
|
21
|
+
params[:events] = {
|
22
|
+
email_status: %w(sent delivered opened hard_bounced soft_bounced spam clicked unsubscribed),
|
23
|
+
spam_block: ["*"]
|
24
|
+
}
|
25
|
+
|
26
|
+
response = unione.set_webhook(params)
|
26
27
|
|
27
28
|
# Get webhook
|
28
|
-
|
29
|
-
|
29
|
+
response = unione.get_webhook(
|
30
|
+
url: 'http://example.com'
|
31
|
+
)
|
32
|
+
|
33
|
+
# List all webhooks
|
34
|
+
response = unione.list_webhooks(
|
35
|
+
limit: 50,
|
36
|
+
offset: 0
|
37
|
+
)
|
30
38
|
|
31
39
|
# Delete webhook
|
32
|
-
response = unione.delete_webhook(
|
40
|
+
response = unione.delete_webhook(
|
41
|
+
url: 'http://example.com'
|
42
|
+
)
|
data/examples/helpers.rb
ADDED
@@ -0,0 +1,29 @@
|
|
1
|
+
require 'unione-ruby'
|
2
|
+
|
3
|
+
unione = UniOne::Client.new(
|
4
|
+
hostname: 'eu1.unione.io',
|
5
|
+
lang: 'en',
|
6
|
+
api_key: ENV['UNIONE_API_KEY']
|
7
|
+
)
|
8
|
+
|
9
|
+
# Verify webhook callback message
|
10
|
+
# Will raise Unione::Client::InvalidCallbackAuth error unless `auth' field is correct.
|
11
|
+
unione.verify_callback_auth!(params)
|
12
|
+
|
13
|
+
# Callback helper usage
|
14
|
+
# Will raise Unione::Client::InvalidCallbackAuth error unless `auth' field is correct.
|
15
|
+
unione.callback_helper(params) do |events|
|
16
|
+
# [
|
17
|
+
# {
|
18
|
+
# 'event_name' => 'transactional_email_status',
|
19
|
+
# 'event_data' =>
|
20
|
+
# {
|
21
|
+
# 'email' => 'recipient.email@example.com',
|
22
|
+
# 'status' => 'sent',
|
23
|
+
# 'event_time' => '2015-11-30 15:09:42',
|
24
|
+
# ...
|
25
|
+
# }
|
26
|
+
# },
|
27
|
+
# ...
|
28
|
+
# ]
|
29
|
+
end
|
@@ -0,0 +1,44 @@
|
|
1
|
+
require 'unione-ruby'
|
2
|
+
require 'json'
|
3
|
+
|
4
|
+
unione = UniOne::Client.new(
|
5
|
+
hostname: 'eu1.unione.io',
|
6
|
+
lang: 'en',
|
7
|
+
api_key: ENV['UNIONE_API_KEY'],
|
8
|
+
enable_logging: true
|
9
|
+
)
|
10
|
+
|
11
|
+
message = {}
|
12
|
+
|
13
|
+
message[:template_engine] = 'simple'
|
14
|
+
message[:template_id] = 'template_id'
|
15
|
+
|
16
|
+
# In case template_id is not specified, subject and body are mandatory
|
17
|
+
message[:subject] = 'test letter'
|
18
|
+
message[:body] = {"html": "tests", "plaintext": "plaintext"}
|
19
|
+
|
20
|
+
message[:from_email] = 'test@qadns.net'
|
21
|
+
message[:from_name] = 'userName'
|
22
|
+
|
23
|
+
message[:recipients] = []
|
24
|
+
message[:recipients] << {
|
25
|
+
email: 'test1@example.com',
|
26
|
+
substitutions: { 'substitutionName' => 'substitutionVal', to_name: 'Name Surname' },
|
27
|
+
metadata: { key1: 'val' },
|
28
|
+
}
|
29
|
+
|
30
|
+
message[:global_metadata] = { key1: 'val' }
|
31
|
+
message[:headers] = { 'X-ReplyTo' => 'reply@example.com' }
|
32
|
+
message[:options] = { unsubscribe_url: 'someurl' }
|
33
|
+
|
34
|
+
message[:attachments] = []
|
35
|
+
message[:attachments] << { type: 'text/plain', name: 'myfile.txt', content: 'ZXhhbXBsZSBmaWxl' }
|
36
|
+
|
37
|
+
message[:inline_attachments] = []
|
38
|
+
message[:inline_attachments] << { type: 'image/png', name: 'IMAGECID', content: 'iVBORw0KGgo' }
|
39
|
+
|
40
|
+
response = unione.send_email(message: message)
|
41
|
+
|
42
|
+
puts response.status
|
43
|
+
puts response.body.to_h
|
44
|
+
puts response.headers
|
data/examples/setup.rb
ADDED
@@ -0,0 +1,34 @@
|
|
1
|
+
require 'unione-ruby'
|
2
|
+
require 'json'
|
3
|
+
|
4
|
+
unione = UniOne::Client.new(
|
5
|
+
hostname: 'eu1.unione.io',
|
6
|
+
lang: 'en',
|
7
|
+
api_key: ENV['UNIONE_API_KEY']
|
8
|
+
)
|
9
|
+
|
10
|
+
# Validate domain verification record
|
11
|
+
unione.validate_verification_record(domain: 'qadns.net')
|
12
|
+
|
13
|
+
# Create template
|
14
|
+
template = {}
|
15
|
+
|
16
|
+
template[:name] = 'Template Name'
|
17
|
+
template[:subject] = 'Email Subject'
|
18
|
+
template[:template_engine] = 'simple'
|
19
|
+
template[:headers] = {'X-ReplyTo' => 'reply@example.com'}
|
20
|
+
|
21
|
+
template[:global_substitutions] = { 'someVar' => 'someVal' }
|
22
|
+
template[:from_email] = 'test@example.com'
|
23
|
+
template[:from_name] = 'userName'
|
24
|
+
template[:body] = { html: '<b>Hello {{substitutionName}}</b>' }
|
25
|
+
template[:options] = { unsubscribe_url: 'someurl' }
|
26
|
+
|
27
|
+
template[:attachments] = []
|
28
|
+
template[:attachments] << { type: 'text/plain', name: 'myfile.txt', content: 'ZXhhbXBsZSBmaWxl' }
|
29
|
+
|
30
|
+
template[:inline_attachments] = []
|
31
|
+
template[:inline_attachments] << { type: 'image/png', name: 'IMAGECID', content: 'iVBORw0KGgo' }
|
32
|
+
|
33
|
+
response = unione.set_template(template: template)
|
34
|
+
template_id = response.body.template.id
|
data/lib/unione/client/domain.rb
CHANGED
@@ -1,61 +1,34 @@
|
|
1
1
|
module UniOne
|
2
2
|
class Client
|
3
|
-
|
4
3
|
module Domain
|
4
|
+
extend UniOne::Validation::ClassMethods
|
5
|
+
include UniOne::Validation::InstanceMethods
|
5
6
|
|
6
|
-
def get_dns_records(
|
7
|
-
|
8
|
-
post 'domain/get-dns-records.json', params
|
9
|
-
validate_response({
|
10
|
-
'type' => 'object', 'required' => ['status', 'domain', 'verification-record', 'dkim'], 'properties' => {
|
11
|
-
'status' => {'type' => 'string'},
|
12
|
-
'domain' => {'type' => 'string'},
|
13
|
-
'verification-record' => {'type' => 'string'},
|
14
|
-
'dkim' => {'type' => 'string'}}
|
15
|
-
})
|
7
|
+
def get_dns_records(params = {})
|
8
|
+
post('domain/get-dns-records.json', params)
|
16
9
|
end
|
17
10
|
|
18
|
-
def validate_verification_record(
|
19
|
-
|
20
|
-
post 'domain/validate-verification-record.json', params
|
21
|
-
validate_response({
|
22
|
-
'type' => 'object', 'required' => ['status', 'message'], 'properties' => {
|
23
|
-
'status' => {'type' => 'string'},
|
24
|
-
'message' => {'type' => 'string'}}
|
25
|
-
})
|
11
|
+
def validate_verification_record(params = {})
|
12
|
+
post('domain/validate-verification-record.json', params)
|
26
13
|
end
|
27
14
|
|
28
|
-
def validate_dkim(
|
29
|
-
|
30
|
-
post 'domain/validate-dkim.json', params
|
31
|
-
validate_response({
|
32
|
-
'type' => 'object', 'required' => ['status', 'message'], 'properties' => {
|
33
|
-
'status' => {'type' => 'string'},
|
34
|
-
'message' => {'type' => 'string'}}
|
35
|
-
})
|
15
|
+
def validate_dkim(params = {})
|
16
|
+
post('domain/validate-dkim.json', params)
|
36
17
|
end
|
37
18
|
|
38
|
-
def list_domains
|
39
|
-
post
|
40
|
-
validate_response({
|
41
|
-
'type' => 'object', 'required' => ['status', 'domains'], 'properties' => {
|
42
|
-
'status' => {'type' => 'string'},
|
43
|
-
'domains' =>
|
44
|
-
{'items' =>
|
45
|
-
{'type' => 'object', 'required' => ['domain', 'verification-record', 'dkim'], 'properties' => [
|
46
|
-
'domain' => {'type' => 'string'},
|
47
|
-
'verification-record' =>
|
48
|
-
{'type' => 'object', 'required' => ['value', 'status'], 'properties' => [
|
49
|
-
'value' => {'type' => 'string'},
|
50
|
-
'status' => {'type' => 'string'}]},
|
51
|
-
'dkim' =>
|
52
|
-
{'type' => 'object', 'required' => ['key', 'status'], 'properties' => [
|
53
|
-
'key' => {'type' => 'string'},
|
54
|
-
'status' => {'type' => 'string'}]}
|
55
|
-
]}}}
|
56
|
-
})
|
19
|
+
def list_domains(params = {})
|
20
|
+
post('domain/list.json', params)
|
57
21
|
end
|
58
22
|
|
23
|
+
add_response_validations(
|
24
|
+
:domain,
|
25
|
+
%w(
|
26
|
+
get_dns_records
|
27
|
+
validate_verification_record
|
28
|
+
validate_dkim
|
29
|
+
list_domains
|
30
|
+
)
|
31
|
+
)
|
59
32
|
end
|
60
33
|
end
|
61
34
|
end
|
data/lib/unione/client/email.rb
CHANGED
@@ -1,32 +1,25 @@
|
|
1
1
|
module UniOne
|
2
2
|
class Client
|
3
|
-
|
4
3
|
module Email
|
4
|
+
extend UniOne::Validation::ClassMethods
|
5
|
+
include UniOne::Validation::InstanceMethods
|
5
6
|
|
6
|
-
def send_email(
|
7
|
-
|
8
|
-
|
9
|
-
'type' => 'object', 'required' => ['status', 'job_id', 'emails'], 'properties' => {
|
10
|
-
'status' => {'type' => 'string'},
|
11
|
-
'job_id' => {'type' => 'string'},
|
12
|
-
'emails' => {'items' => {'type' => 'string'}},
|
13
|
-
'failed_emails' => {'type' => 'object'}}
|
14
|
-
})
|
7
|
+
def send_email(params = {})
|
8
|
+
params[:message][:options][:send_at] = handle_time_param(params.dig(:message, :options, :send_at)) if params.dig(:message, :options, :send_at)
|
9
|
+
post('email/send.json', params)
|
15
10
|
end
|
16
11
|
|
17
|
-
def subscribe_email(
|
18
|
-
params
|
19
|
-
email_address_from: email_address_from,
|
20
|
-
email_address_to: email_address_to,
|
21
|
-
name_from: name_from
|
22
|
-
}
|
23
|
-
post 'email/subscribe.json', params
|
24
|
-
validate_response({
|
25
|
-
'type' => 'object', 'required' => ['status'], 'properties' => {
|
26
|
-
'status' => {'type' => 'string'}}
|
27
|
-
})
|
12
|
+
def subscribe_email(params = {})
|
13
|
+
post('email/subscribe.json', params)
|
28
14
|
end
|
29
15
|
|
16
|
+
add_response_validations(
|
17
|
+
:email,
|
18
|
+
%w(
|
19
|
+
send_email
|
20
|
+
subscribe_email
|
21
|
+
)
|
22
|
+
)
|
30
23
|
end
|
31
24
|
end
|
32
25
|
end
|
@@ -0,0 +1,37 @@
|
|
1
|
+
module UniOne
|
2
|
+
class Client
|
3
|
+
module EventDump
|
4
|
+
extend UniOne::Validation::ClassMethods
|
5
|
+
include UniOne::Validation::InstanceMethods
|
6
|
+
|
7
|
+
def create_event_dump(params = {})
|
8
|
+
params[:start_time] = handle_time_param(params[:start_time]) if params[:start_time]
|
9
|
+
params[:end_time] = handle_time_param(params[:end_time]) if params[:end_time]
|
10
|
+
|
11
|
+
post('event-dump/create.json', params)
|
12
|
+
end
|
13
|
+
|
14
|
+
def get_event_dump(params = {})
|
15
|
+
post('event-dump/get.json', params)
|
16
|
+
end
|
17
|
+
|
18
|
+
def list_event_dumps(params = {})
|
19
|
+
post('event-dump/list.json', params)
|
20
|
+
end
|
21
|
+
|
22
|
+
def delete_event_dump(params = {})
|
23
|
+
post('event-dump/delete.json', params)
|
24
|
+
end
|
25
|
+
|
26
|
+
add_response_validations(
|
27
|
+
:event_dump,
|
28
|
+
%w(
|
29
|
+
create_event_dump
|
30
|
+
get_event_dump
|
31
|
+
list_event_dumps
|
32
|
+
delete_event_dump
|
33
|
+
)
|
34
|
+
)
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
@@ -1,58 +1,34 @@
|
|
1
1
|
module UniOne
|
2
2
|
class Client
|
3
|
-
|
4
3
|
module Project
|
4
|
+
extend UniOne::Validation::ClassMethods
|
5
|
+
include UniOne::Validation::InstanceMethods
|
5
6
|
|
6
|
-
def create_project(
|
7
|
-
|
8
|
-
post 'project/create.json', params
|
9
|
-
validate_response({
|
10
|
-
'type' => 'object', 'required' => ['status', 'project_api_key'], 'properties' => {
|
11
|
-
'status' => {'type' => 'string'},
|
12
|
-
'project_api_key' => {'type' => 'string'}}
|
13
|
-
})
|
7
|
+
def create_project(params = {})
|
8
|
+
post('project/create.json', params)
|
14
9
|
end
|
15
10
|
|
16
|
-
def update_project(
|
17
|
-
|
18
|
-
post 'project/update.json', params
|
19
|
-
validate_response({
|
20
|
-
'type' => 'object', 'required' => ['status', 'project_api_key'], 'properties' => {
|
21
|
-
'status' => {'type' => 'string'},
|
22
|
-
'project_api_key' => {'type' => 'string'}}
|
23
|
-
})
|
11
|
+
def update_project(params = {})
|
12
|
+
post('project/update.json', params)
|
24
13
|
end
|
25
14
|
|
26
|
-
def
|
27
|
-
params
|
28
|
-
post 'project/delete.json', params
|
29
|
-
validate_response({
|
30
|
-
'type' => 'object', 'required' => ['status'], 'properties' => {
|
31
|
-
'status' => {'type' => 'string'}}
|
32
|
-
})
|
15
|
+
def list_projects(params = {})
|
16
|
+
post('project/list.json', params)
|
33
17
|
end
|
34
18
|
|
35
|
-
def
|
36
|
-
params
|
37
|
-
post 'project/list.json', params
|
38
|
-
validate_response({
|
39
|
-
'type' => 'object', 'required' => ['status'], 'properties' => {
|
40
|
-
'status' => {'type' => 'string'},
|
41
|
-
'projects' => {'items' => project_schema}}
|
42
|
-
})
|
19
|
+
def delete_project(params = {})
|
20
|
+
post('project/delete.json', params)
|
43
21
|
end
|
44
22
|
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
}}
|
55
|
-
end
|
23
|
+
add_response_validations(
|
24
|
+
:project,
|
25
|
+
%w(
|
26
|
+
create_project
|
27
|
+
update_project
|
28
|
+
list_projects
|
29
|
+
delete_project
|
30
|
+
)
|
31
|
+
)
|
56
32
|
end
|
57
33
|
end
|
58
34
|
end
|
@@ -0,0 +1,38 @@
|
|
1
|
+
module UniOne
|
2
|
+
class Client
|
3
|
+
module Suppression
|
4
|
+
extend UniOne::Validation::ClassMethods
|
5
|
+
include UniOne::Validation::InstanceMethods
|
6
|
+
|
7
|
+
def set_suppression(params = {})
|
8
|
+
params[:created] = handle_time_param(params[:created]) if params[:created]
|
9
|
+
|
10
|
+
post('suppression/set.json', params)
|
11
|
+
end
|
12
|
+
|
13
|
+
def get_suppression(params = {})
|
14
|
+
post('suppression/get.json', params)
|
15
|
+
end
|
16
|
+
|
17
|
+
def list_suppressions(params = {})
|
18
|
+
params[:start_time] = handle_time_param(params[:start_time]) if params[:start_time]
|
19
|
+
|
20
|
+
post('suppression/list.json', params)
|
21
|
+
end
|
22
|
+
|
23
|
+
def delete_suppression(params = {})
|
24
|
+
post('suppression/delete.json', params)
|
25
|
+
end
|
26
|
+
|
27
|
+
add_response_validations(
|
28
|
+
:suppression,
|
29
|
+
%w(
|
30
|
+
set_suppression
|
31
|
+
get_suppression
|
32
|
+
list_suppressions
|
33
|
+
delete_suppression
|
34
|
+
)
|
35
|
+
)
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
module UniOne
|
2
|
+
class Client
|
3
|
+
module System
|
4
|
+
extend UniOne::Validation::ClassMethods
|
5
|
+
include UniOne::Validation::InstanceMethods
|
6
|
+
|
7
|
+
def info(params = {})
|
8
|
+
post('system/info.json', params)
|
9
|
+
end
|
10
|
+
|
11
|
+
add_response_validations(
|
12
|
+
:system,
|
13
|
+
%w(
|
14
|
+
info
|
15
|
+
)
|
16
|
+
)
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
@@ -0,0 +1,24 @@
|
|
1
|
+
module UniOne
|
2
|
+
class Client
|
3
|
+
module Tag
|
4
|
+
extend UniOne::Validation::ClassMethods
|
5
|
+
include UniOne::Validation::InstanceMethods
|
6
|
+
|
7
|
+
def list_tags(params = {})
|
8
|
+
post('tag/list.json', params)
|
9
|
+
end
|
10
|
+
|
11
|
+
def delete_tag(params = {})
|
12
|
+
post('tag/delete.json', params)
|
13
|
+
end
|
14
|
+
|
15
|
+
add_response_validations(
|
16
|
+
:tag,
|
17
|
+
%w(
|
18
|
+
list_tags
|
19
|
+
delete_tag
|
20
|
+
)
|
21
|
+
)
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
@@ -1,80 +1,34 @@
|
|
1
1
|
module UniOne
|
2
2
|
class Client
|
3
|
-
|
4
3
|
module Template
|
4
|
+
extend UniOne::Validation::ClassMethods
|
5
|
+
include UniOne::Validation::InstanceMethods
|
5
6
|
|
6
|
-
def set_template(
|
7
|
-
post
|
8
|
-
validate_response({
|
9
|
-
'type' => 'object', 'required' => ['status', 'template'], 'properties' => {
|
10
|
-
'status' => {'type' => 'string'},
|
11
|
-
'template' => template_schema}
|
12
|
-
})
|
13
|
-
end
|
14
|
-
|
15
|
-
def get_template(id)
|
16
|
-
params = { id: id }
|
17
|
-
post 'template/get.json', params
|
18
|
-
validate_response({
|
19
|
-
'type' => 'object', 'required' => ['status', 'template'], 'properties' => {
|
20
|
-
'status' => {'type' => 'string'},
|
21
|
-
'template' => template_schema}
|
22
|
-
})
|
23
|
-
end
|
24
|
-
|
25
|
-
def list_templates(limit, offset)
|
26
|
-
params = { limit: limit, offset: offset }
|
27
|
-
post 'template/list.json', params
|
28
|
-
list_template_schema = remove_fields_from_schema(template_schema, ['from_name', 'headers'])
|
29
|
-
validate_response({
|
30
|
-
'type' => 'object', 'required' => ['status', 'templates'], 'properties' => {
|
31
|
-
'status' => {'type' => 'string'},
|
32
|
-
'templates' => {'items' => list_template_schema}}
|
33
|
-
})
|
34
|
-
end
|
35
|
-
|
36
|
-
def delete_template(id)
|
37
|
-
params = { id: id }
|
38
|
-
post 'template/delete.json', params
|
39
|
-
validate_response({
|
40
|
-
'type' => 'object', 'required' => ['status'], 'properties' => {
|
41
|
-
'status' => {'type' => 'string'}}
|
42
|
-
})
|
7
|
+
def set_template(params = {})
|
8
|
+
post('template/set.json', params)
|
43
9
|
end
|
44
10
|
|
45
|
-
|
46
|
-
|
47
|
-
def template_schema
|
48
|
-
{'type' => 'object', 'required' => ['id', 'name', 'subject', 'from_name', 'body', 'headers', 'attachments',
|
49
|
-
'inline_attachments', 'options', 'created', 'user_id'], 'properties' => {
|
50
|
-
'id' => {'type' => 'string'},
|
51
|
-
'name' => {'type' => 'string'},
|
52
|
-
'subject' => {'type' => 'string'},
|
53
|
-
'from_name' => {'type' => 'string'},
|
54
|
-
'body' => template_body_schema,
|
55
|
-
'headers' => {'type' => 'object'},
|
56
|
-
'attachments' => {'items' => {'type' => 'object'}},
|
57
|
-
'inline_attachments' => {'items' => {'type' => 'object'}},
|
58
|
-
'options' => template_options_schema,
|
59
|
-
'created' => {'type' => 'string'},
|
60
|
-
'user_id' => {'type' => 'integer'},
|
61
|
-
}}
|
11
|
+
def get_template(params = {})
|
12
|
+
post('template/get.json', params)
|
62
13
|
end
|
63
14
|
|
64
|
-
def
|
65
|
-
|
66
|
-
'html' => {'type' => 'string, null'},
|
67
|
-
'plaintext' => {'type' => 'string, null'},
|
68
|
-
'amp' => {'type' => 'string, null'}
|
69
|
-
}}
|
15
|
+
def list_templates(params = {})
|
16
|
+
post('template/list.json', params)
|
70
17
|
end
|
71
18
|
|
72
|
-
def
|
73
|
-
|
74
|
-
'unsubscribe_url' => {'type' => 'string'}
|
75
|
-
}}
|
19
|
+
def delete_template(params = {})
|
20
|
+
post('template/delete.json', params)
|
76
21
|
end
|
77
22
|
|
23
|
+
add_response_validations(
|
24
|
+
:template,
|
25
|
+
%w(
|
26
|
+
set_template
|
27
|
+
get_template
|
28
|
+
list_templates
|
29
|
+
delete_template
|
30
|
+
)
|
31
|
+
)
|
78
32
|
end
|
79
33
|
end
|
80
34
|
end
|
@@ -1,44 +1,31 @@
|
|
1
1
|
module UniOne
|
2
2
|
class Client
|
3
|
-
|
4
3
|
module Unsubscribed
|
4
|
+
extend UniOne::Validation::ClassMethods
|
5
|
+
include UniOne::Validation::InstanceMethods
|
5
6
|
|
6
|
-
def unsubscribe(
|
7
|
-
params
|
8
|
-
post 'unsubscribed/set.json', params
|
9
|
-
validate_response({
|
10
|
-
'type' => 'object', 'required' => ['status', 'address', 'message'], 'properties' => {
|
11
|
-
'status' => {'type' => 'string'},
|
12
|
-
'address' => {'type' => 'string'},
|
13
|
-
'message' => {'type' => 'string'}}
|
14
|
-
})
|
7
|
+
def unsubscribe(params = {})
|
8
|
+
post('unsubscribed/set.json', params)
|
15
9
|
end
|
16
10
|
|
17
|
-
def check_unsubscribed(
|
18
|
-
params
|
19
|
-
post 'unsubscribed/check.json', params
|
20
|
-
validate_response({
|
21
|
-
'type' => 'object', 'required' => ['status', 'address', 'is_unsubscribed'], 'properties' => {
|
22
|
-
'status' => {'type' => 'string'},
|
23
|
-
'address' => {'type' => 'string'},
|
24
|
-
'is_unsubscribed' => {'type' => 'boolean'}}
|
25
|
-
})
|
11
|
+
def check_unsubscribed(params = {})
|
12
|
+
post('unsubscribed/check.json', params)
|
26
13
|
end
|
27
14
|
|
28
|
-
def list_unsubscribed(
|
29
|
-
params =
|
30
|
-
|
31
|
-
|
32
|
-
'type' => 'object', 'required' => ['status', 'unsubscribed'], 'properties' => {
|
33
|
-
'status' => {'type' => 'string'},
|
34
|
-
'unsubscribed' => {
|
35
|
-
'items' => {'type' => 'object'}, 'required' => ['address', 'unsubscribed_on'], 'properties' => {
|
36
|
-
'address' => {'type' => 'string'},
|
37
|
-
'unsubscribed_on' => {'type' => 'string'}
|
38
|
-
}}}
|
39
|
-
})
|
15
|
+
def list_unsubscribed(params = {})
|
16
|
+
params[:date_from] = handle_date_param(params[:date_from]) if params[:date_from]
|
17
|
+
|
18
|
+
post('unsubscribed/list.json', params)
|
40
19
|
end
|
41
20
|
|
21
|
+
add_response_validations(
|
22
|
+
:unsubscribed,
|
23
|
+
%w(
|
24
|
+
unsubscribe
|
25
|
+
check_unsubscribed
|
26
|
+
list_unsubscribed
|
27
|
+
)
|
28
|
+
)
|
42
29
|
end
|
43
30
|
end
|
44
31
|
end
|