Module: CmEmail
- Defined in:
- lib/cm_email.rb,
lib/cm_email/version.rb,
lib/cm_email/configuration.rb
Defined Under Namespace
Classes: Configuration
Constant Summary collapse
- VERSION =
"1.0.0"
Class Attribute Summary collapse
-
.configuration ⇒ Object
Returns the value of attribute configuration.
Class Method Summary collapse
-
.add_segment_contact(contact_email, segment_id) ⇒ Object
Adds a contact to a segment.
- .api_key ⇒ Object
- .api_mode ⇒ Object
- .configure {|configuration| ... } ⇒ Object
-
.create_contact(first_name, email, last_name = '', date_of_birth = '', country = '') ⇒ Object
Either finds and updates, or creates a contact (with status subscribed).
-
.create_segment(name, contact_emails, note = '') ⇒ Object
Creates a segment (with atleast one existing contact).
-
.remove_segment_contact(contact_email, segment_id) ⇒ Object
Removes contact from the segment.
- .request_cm_email(path, request_body, method = 'post') ⇒ Object
-
.unsubscribe_contact(contact_email) ⇒ Object
Finds the contact and unsubscribes it from every segment.
- .update_segment(new_name, note = '', segment_id = '', existing_name = '') ⇒ Object
Class Attribute Details
.configuration ⇒ Object
Returns the value of attribute configuration.
6 7 8 |
# File 'lib/cm_email.rb', line 6 def configuration @configuration end |
Class Method Details
.add_segment_contact(contact_email, segment_id) ⇒ Object
Adds a contact to a segment.
72 73 74 75 76 77 78 |
# File 'lib/cm_email.rb', line 72 def add_segment_contact(contact_email, segment_id) request_body = { contact_email: contact_email, segment_id: segment_id } create_response = request_cm_email('/api/segments/segment_contacts/add', request_body) end |
.api_key ⇒ Object
98 99 100 |
# File 'lib/cm_email.rb', line 98 def api_key return configuration.api_key end |
.api_mode ⇒ Object
102 103 104 |
# File 'lib/cm_email.rb', line 102 def api_mode return configuration.api_mode end |
.configure {|configuration| ... } ⇒ Object
15 16 17 |
# File 'lib/cm_email.rb', line 15 def configure yield(configuration) end |
.create_contact(first_name, email, last_name = '', date_of_birth = '', country = '') ⇒ Object
Either finds and updates, or creates a contact (with status subscribed).
20 21 22 23 24 25 26 27 28 29 |
# File 'lib/cm_email.rb', line 20 def create_contact(first_name, email, last_name = '', date_of_birth = '', country = '') request_body = { first_name: first_name, email: email, last_name: last_name, date_of_birth: date_of_birth, country: country } create_response = request_cm_email('/api/contacts', request_body) end |
.create_segment(name, contact_emails, note = '') ⇒ Object
Creates a segment (with atleast one existing contact). expected format for ‘contact_emails’ is Array.
41 42 43 44 45 46 47 48 49 50 |
# File 'lib/cm_email.rb', line 41 def create_segment(name, contact_emails, note = '') request_body = { name: name, note: note, segment: { segment_contacts: contact_emails } } create_response = request_cm_email('/api/segments', request_body) end |
.remove_segment_contact(contact_email, segment_id) ⇒ Object
Removes contact from the segment.
63 64 65 66 67 68 69 |
# File 'lib/cm_email.rb', line 63 def remove_segment_contact(contact_email, segment_id) request_body = { contact_email: contact_email, segment_id: segment_id } create_response = request_cm_email('/api/segments/segment_contacts/remove', request_body, 'delete') end |
.request_cm_email(path, request_body, method = 'post') ⇒ Object
80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 |
# File 'lib/cm_email.rb', line 80 def request_cm_email(path, request_body, method = 'post') domain_url = if api_mode.eql?('staging') 'https://staging.cm-email.commutatus.com/' else 'https://cm-email.commutatus.com/' end uri = URI.parse(domain_url + path) headers = {'Content-Type': 'application/json', 'Api-Key': api_key} http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true request = method == 'delete'? Net::HTTP::Delete.new(uri.request_uri, headers) : Net::HTTP::Post.new(uri.request_uri, headers) puts request_body.to_json request.body = request_body.to_json # Send the request response = http.request(request) return JSON.parse(response.body) end |
.unsubscribe_contact(contact_email) ⇒ Object
Finds the contact and unsubscribes it from every segment.
32 33 34 35 36 37 |
# File 'lib/cm_email.rb', line 32 def unsubscribe_contact(contact_email) request_body = { contact_email: contact_email } create_response = request_cm_email('/api/contacts/unsubscribe', request_body) end |
.update_segment(new_name, note = '', segment_id = '', existing_name = '') ⇒ Object
52 53 54 55 56 57 58 59 60 |
# File 'lib/cm_email.rb', line 52 def update_segment(new_name, note = '', segment_id = '', existing_name = '') request_body = { new_name: new_name, note: note, segment_id: segment_id, existing_name: existing_name, } create_response = request_cm_email('/api/segments/update', request_body) end |