Module: MaxemailApiSubscriptions

Extended by:
MaxemailApiSubscriptions
Includes:
MaxemailApiShared
Included in:
MaxemailApi, MaxemailApiSubscriptions
Defined in:
lib/maxemail_api/subscriptions.rb

Instance Method Summary collapse

Methods included from MaxemailApiShared

send_request

Instance Method Details

#available_subscriptionsObject



64
65
66
67
# File 'lib/maxemail_api/subscriptions.rb', line 64

def available_subscriptions
  lists = JSON.parse(fetch_list)
  lists.delete_if { |list| list['type'] != 'include' }
end

#fetch_listObject



69
70
71
# File 'lib/maxemail_api/subscriptions.rb', line 69

def fetch_list
  MaxemailApiShared.send_request(params: { method: 'fetchAll' }, method: 'list')
end

#fetch_profile_data(email_address:, profile_descriptions:) ⇒ Object



54
55
56
# File 'lib/maxemail_api/subscriptions.rb', line 54

def fetch_profile_data(email_address:, profile_descriptions:)
  MaxemailApiShared.send_request(params: { method: 'fetchProfileDataByEmailAddress', emailAddress: email_address, profileDescriptions: profile_descriptions }, method: 'recipient')
end

#find_recipient_id(email_address: nil) ⇒ Object



58
59
60
61
62
# File 'lib/maxemail_api/subscriptions.rb', line 58

def find_recipient_id(email_address: nil)
  response = MaxemailApiShared.send_request(params: { method: 'findByEmailAddress', emailAddress: email_address }, method: 'recipient').to_s
  return nil if response == 'null'
  response
end

#inserted?(email_address:, list_id:) ⇒ Boolean

Returns:

  • (Boolean)


21
22
23
24
25
26
27
28
29
30
# File 'lib/maxemail_api/subscriptions.rb', line 21

def inserted?(email_address:, list_id:)
  response = MaxemailApiShared.send_request(params: { method: 'fetchRecipient', listID: list_id, recipientId: find_recipient_id(email_address: email_address) }, method: 'list')
  return false if response.body.to_s == 'false'
  response = JSON.parse(response.body)
  return false if response['success'].to_s == 'false'
  return true if response['subscribed'].to_s == '0'
  return true if response['subscribed'].to_s == '1'
rescue StandardError
  false
end

#subscribe(email_address:, list_id:) ⇒ Object



5
6
7
8
# File 'lib/maxemail_api/subscriptions.rb', line 5

def subscribe(email_address:, list_id:)
  return MaxemailApiShared.send_request(params: { method: 'insertRecipient', data: { email_address: email_address, subscribed: 1 }.to_json, listID: list_id }, method: 'list') unless inserted?(email_address: email_address, list_id: list_id)
  MaxemailApiShared.send_request(params: { method: 'updateRecipient', data: { email_address: email_address, subscribed: 1 }.to_json, listID: list_id, recipientId: find_recipient_id(email_address: email_address) }, method: 'list')
end

#subscribed?(email_address:, list_id:) ⇒ Boolean

Returns:

  • (Boolean)


10
11
12
13
14
15
16
17
18
19
# File 'lib/maxemail_api/subscriptions.rb', line 10

def subscribed?(email_address:, list_id:)
  response = MaxemailApiShared.send_request(params: { method: 'fetchRecipient', listID: list_id, recipientId: find_recipient_id(email_address: email_address) }, method: 'list')
  return false if response.body.to_s == 'false'
  response = JSON.parse(response.body)
  return false if response['success'].to_s == 'false'
  return false if response['subscribed'].to_s == '0'
  return true if response['subscribed'].to_s == '1'
rescue StandardError
  false
end

#subscriptions(email_address: nil, recipient_id: nil, list_id:) ⇒ Object



38
39
40
41
42
# File 'lib/maxemail_api/subscriptions.rb', line 38

def subscriptions(email_address: nil, recipient_id: nil, list_id:)
  recipient_id = find_recipient_id(email_address: email_address) if recipient_id.nil?
  return false if recipient_id.nil?
  MaxemailApiShared.send_request(params: { method: 'fetchLists', listID: list_id, recipientId: recipient_id }, method: 'recipient')
end

#unsubscribe(email_address: nil, recipient_id: nil, list_id:) ⇒ Object



32
33
34
35
36
# File 'lib/maxemail_api/subscriptions.rb', line 32

def unsubscribe(email_address: nil, recipient_id: nil, list_id:)
  recipient_id = find_recipient_id(email_address: email_address) if recipient_id.nil?
  return false if recipient_id.nil?
  MaxemailApiShared.send_request(params: { method: 'updateRecipient', data: { email_address: email_address, subscribed: 0 }.to_json, listID: list_id, recipientId: recipient_id }, method: 'list')
end

#update_recipient(email_address:, data:) ⇒ Object



50
51
52
# File 'lib/maxemail_api/subscriptions.rb', line 50

def update_recipient(email_address:, data:)
  MaxemailApiShared.send_request(params: { method: 'updateByEmailAddress', emailAddress: email_address, data: data }, method: 'recipient')
end

#update_subscription_email(old_email_address: nil, recipient_id: nil, new_email_address:) ⇒ Object



44
45
46
47
48
# File 'lib/maxemail_api/subscriptions.rb', line 44

def update_subscription_email(old_email_address: nil, recipient_id: nil, new_email_address:)
  recipient_id = find_recipient_id(email_address: old_email_address) if recipient_id.nil?
  return false if recipient_id.nil?
  MaxemailApiShared.send_request(params: { method: 'update', data: { email_address: new_email_address }.to_json, recipientId: recipient_id }, method: 'recipient')
end