adsmedia 1.0.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 +7 -0
- data/lib/adsmedia.rb +148 -0
- metadata +69 -0
checksums.yaml
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
---
|
|
2
|
+
SHA256:
|
|
3
|
+
metadata.gz: fcebac9d67b5a87413c929c447db8e7c648858aad6a7d8d7363b8edcbf436f7d
|
|
4
|
+
data.tar.gz: 34302ccb5e38d1b79bf90c46f7b1e67a64c50cb3481a5956aa1c1996ca17ecc5
|
|
5
|
+
SHA512:
|
|
6
|
+
metadata.gz: a7a3b40279322b4d734421e3876b8014189c073802338f95cd66460ecb026df7978e8bd1c31f023012ad29e132ae6d50a0b6cb91df00c1fc6b32acaaedc70f21
|
|
7
|
+
data.tar.gz: dfe1bd226f91447bb00357696fde27b6f2b2931f8ed4caf6bc29561e435b608014093a40502724a9ebba0721feb84b589d721aebf92975250edaf1bfe4b00395
|
data/lib/adsmedia.rb
ADDED
|
@@ -0,0 +1,148 @@
|
|
|
1
|
+
require 'faraday'
|
|
2
|
+
require 'json'
|
|
3
|
+
|
|
4
|
+
module ADSMedia
|
|
5
|
+
class Client
|
|
6
|
+
BASE_URL = 'https://api.adsmedia.live/v1'.freeze
|
|
7
|
+
|
|
8
|
+
def initialize(api_key)
|
|
9
|
+
@api_key = api_key
|
|
10
|
+
@conn = Faraday.new(url: BASE_URL) do |f|
|
|
11
|
+
f.request :json
|
|
12
|
+
f.response :json
|
|
13
|
+
f.adapter Faraday.default_adapter
|
|
14
|
+
end
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
# Test connection
|
|
18
|
+
def ping
|
|
19
|
+
get('/ping')
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
# Send single email
|
|
23
|
+
def send_email(to:, subject:, html:, to_name: nil, from_name: nil, text: nil, reply_to: nil)
|
|
24
|
+
payload = { to: to, subject: subject, html: html }
|
|
25
|
+
payload[:to_name] = to_name if to_name
|
|
26
|
+
payload[:from_name] = from_name if from_name
|
|
27
|
+
payload[:text] = text if text
|
|
28
|
+
payload[:reply_to] = reply_to if reply_to
|
|
29
|
+
|
|
30
|
+
post('/send', payload)
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
# Send batch emails
|
|
34
|
+
def send_batch(recipients:, subject:, html:, text: nil, preheader: nil, from_name: nil)
|
|
35
|
+
payload = { recipients: recipients, subject: subject, html: html }
|
|
36
|
+
payload[:text] = text if text
|
|
37
|
+
payload[:preheader] = preheader if preheader
|
|
38
|
+
payload[:from_name] = from_name if from_name
|
|
39
|
+
|
|
40
|
+
post('/send/batch', payload)
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
# Check email status
|
|
44
|
+
def get_status(message_id)
|
|
45
|
+
get('/send/status', message_id: message_id)
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
# List campaigns
|
|
49
|
+
def get_campaigns(limit: 50, offset: 0)
|
|
50
|
+
get('/campaigns', limit: limit, offset: offset)
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
# Get campaign
|
|
54
|
+
def get_campaign(id)
|
|
55
|
+
get('/campaigns/get', id: id)
|
|
56
|
+
end
|
|
57
|
+
|
|
58
|
+
# Create campaign
|
|
59
|
+
def create_campaign(name:, subject:, html:, text: nil, preheader: nil, type: 1)
|
|
60
|
+
payload = { name: name, subject: subject, html: html, type: type }
|
|
61
|
+
payload[:text] = text if text
|
|
62
|
+
payload[:preheader] = preheader if preheader
|
|
63
|
+
|
|
64
|
+
post('/campaigns/create', payload)
|
|
65
|
+
end
|
|
66
|
+
|
|
67
|
+
# List contact lists
|
|
68
|
+
def get_lists
|
|
69
|
+
get('/lists')
|
|
70
|
+
end
|
|
71
|
+
|
|
72
|
+
# Create list
|
|
73
|
+
def create_list(name:, type: 1)
|
|
74
|
+
post('/lists/create', name: name, type: type)
|
|
75
|
+
end
|
|
76
|
+
|
|
77
|
+
# Add contacts to list
|
|
78
|
+
def add_contacts(list_id:, contacts:)
|
|
79
|
+
post("/lists/contacts/add?id=#{list_id}", contacts: contacts)
|
|
80
|
+
end
|
|
81
|
+
|
|
82
|
+
# List schedules
|
|
83
|
+
def get_schedules(status: 'queue')
|
|
84
|
+
get('/schedules', status: status)
|
|
85
|
+
end
|
|
86
|
+
|
|
87
|
+
# Create schedule
|
|
88
|
+
def create_schedule(campaign_id:, list_id:, server_id:, sender_name: nil, schedule: nil)
|
|
89
|
+
payload = { campaign_id: campaign_id, list_id: list_id, server_id: server_id }
|
|
90
|
+
payload[:sender_name] = sender_name if sender_name
|
|
91
|
+
payload[:schedule] = schedule if schedule
|
|
92
|
+
|
|
93
|
+
post('/schedules/create', payload)
|
|
94
|
+
end
|
|
95
|
+
|
|
96
|
+
# List servers
|
|
97
|
+
def get_servers
|
|
98
|
+
get('/servers')
|
|
99
|
+
end
|
|
100
|
+
|
|
101
|
+
# Verify domain
|
|
102
|
+
def verify_domain(server_id)
|
|
103
|
+
get('/domains/verify', server_id: server_id)
|
|
104
|
+
end
|
|
105
|
+
|
|
106
|
+
# Check suppression
|
|
107
|
+
def check_suppression(email)
|
|
108
|
+
get('/suppressions/check', email: email)
|
|
109
|
+
end
|
|
110
|
+
|
|
111
|
+
# Get account info
|
|
112
|
+
def get_account
|
|
113
|
+
get('/account')
|
|
114
|
+
end
|
|
115
|
+
|
|
116
|
+
# Get usage
|
|
117
|
+
def get_usage
|
|
118
|
+
get('/account/usage')
|
|
119
|
+
end
|
|
120
|
+
|
|
121
|
+
private
|
|
122
|
+
|
|
123
|
+
def get(endpoint, params = {})
|
|
124
|
+
response = @conn.get(endpoint) do |req|
|
|
125
|
+
req.headers['Authorization'] = "Bearer #{@api_key}"
|
|
126
|
+
req.params = params unless params.empty?
|
|
127
|
+
end
|
|
128
|
+
handle_response(response)
|
|
129
|
+
end
|
|
130
|
+
|
|
131
|
+
def post(endpoint, payload)
|
|
132
|
+
response = @conn.post(endpoint) do |req|
|
|
133
|
+
req.headers['Authorization'] = "Bearer #{@api_key}"
|
|
134
|
+
req.body = payload
|
|
135
|
+
end
|
|
136
|
+
handle_response(response)
|
|
137
|
+
end
|
|
138
|
+
|
|
139
|
+
def handle_response(response)
|
|
140
|
+
data = response.body
|
|
141
|
+
raise ADSMediaError, data['error']['message'] || 'API Error' unless data['success']
|
|
142
|
+
data['data']
|
|
143
|
+
end
|
|
144
|
+
end
|
|
145
|
+
|
|
146
|
+
class ADSMediaError < StandardError; end
|
|
147
|
+
end
|
|
148
|
+
|
metadata
ADDED
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
|
2
|
+
name: adsmedia
|
|
3
|
+
version: !ruby/object:Gem::Version
|
|
4
|
+
version: 1.0.0
|
|
5
|
+
platform: ruby
|
|
6
|
+
authors:
|
|
7
|
+
- ADSMedia
|
|
8
|
+
bindir: bin
|
|
9
|
+
cert_chain: []
|
|
10
|
+
date: 1980-01-02 00:00:00.000000000 Z
|
|
11
|
+
dependencies:
|
|
12
|
+
- !ruby/object:Gem::Dependency
|
|
13
|
+
name: faraday
|
|
14
|
+
requirement: !ruby/object:Gem::Requirement
|
|
15
|
+
requirements:
|
|
16
|
+
- - "~>"
|
|
17
|
+
- !ruby/object:Gem::Version
|
|
18
|
+
version: '2.0'
|
|
19
|
+
type: :runtime
|
|
20
|
+
prerelease: false
|
|
21
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
22
|
+
requirements:
|
|
23
|
+
- - "~>"
|
|
24
|
+
- !ruby/object:Gem::Version
|
|
25
|
+
version: '2.0'
|
|
26
|
+
- !ruby/object:Gem::Dependency
|
|
27
|
+
name: json
|
|
28
|
+
requirement: !ruby/object:Gem::Requirement
|
|
29
|
+
requirements:
|
|
30
|
+
- - "~>"
|
|
31
|
+
- !ruby/object:Gem::Version
|
|
32
|
+
version: '2.0'
|
|
33
|
+
type: :runtime
|
|
34
|
+
prerelease: false
|
|
35
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
36
|
+
requirements:
|
|
37
|
+
- - "~>"
|
|
38
|
+
- !ruby/object:Gem::Version
|
|
39
|
+
version: '2.0'
|
|
40
|
+
description: Send transactional and marketing emails via ADSMedia API
|
|
41
|
+
email:
|
|
42
|
+
- dev@adsmedia.ai
|
|
43
|
+
executables: []
|
|
44
|
+
extensions: []
|
|
45
|
+
extra_rdoc_files: []
|
|
46
|
+
files:
|
|
47
|
+
- lib/adsmedia.rb
|
|
48
|
+
homepage: https://github.com/ADSMedia-ai/ADSMedia
|
|
49
|
+
licenses:
|
|
50
|
+
- MIT
|
|
51
|
+
metadata: {}
|
|
52
|
+
rdoc_options: []
|
|
53
|
+
require_paths:
|
|
54
|
+
- lib
|
|
55
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
|
56
|
+
requirements:
|
|
57
|
+
- - ">="
|
|
58
|
+
- !ruby/object:Gem::Version
|
|
59
|
+
version: 2.7.0
|
|
60
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
61
|
+
requirements:
|
|
62
|
+
- - ">="
|
|
63
|
+
- !ruby/object:Gem::Version
|
|
64
|
+
version: '0'
|
|
65
|
+
requirements: []
|
|
66
|
+
rubygems_version: 3.6.9
|
|
67
|
+
specification_version: 4
|
|
68
|
+
summary: Official Ruby SDK for ADSMedia Email API
|
|
69
|
+
test_files: []
|