module CmEmail

Constants

VERSION

Attributes

configuration[RW]

Public Class Methods

add_segment_contact(contact_email, segment_id) click to toggle source

Adds a contact to a segment.

# 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() click to toggle source
# File lib/cm_email.rb, line 98
def api_key
  return configuration.api_key
end
api_mode() click to toggle source
# File lib/cm_email.rb, line 102
def api_mode
  return configuration.api_mode
end
configure() { |configuration| ... } click to toggle source
# File lib/cm_email.rb, line 15
def configure
  yield(configuration)
end
create_contact(first_name, email, last_name = '', date_of_birth = '', country = '') click to toggle source

Either finds and updates, or creates a contact (with status subscribed).

# 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 = '') click to toggle source

Creates a segment (with atleast one existing contact). expected format for 'contact_emails' is Array.

# 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) click to toggle source

Removes contact from the segment.

# 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') click to toggle source
# 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) click to toggle source

Finds the contact and unsubscribes it from every segment.

# 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 = '') click to toggle source
# 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