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

Class Method Summary collapse

Class Attribute Details

.configurationObject

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_keyObject



98
99
100
# File 'lib/cm_email.rb', line 98

def api_key
  return configuration.api_key
end

.api_modeObject



102
103
104
# File 'lib/cm_email.rb', line 102

def api_mode
  return configuration.api_mode
end

.configure {|configuration| ... } ⇒ Object

Yields:



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