Class: OfficeBoy::Subscriber

Inherits:
Object
  • Object
show all
Defined in:
lib/office_boy/subscriber.rb

Class Method Summary collapse

Class Method Details

.add(list:, attributes:) ⇒ Object



4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
# File 'lib/office_boy/subscriber.rb', line 4

def add(list:, attributes:)
  raise Errors::NotDefiniedSubscriptionList unless OfficeBoy.configuration.lists.key?(list)

  list_id = OfficeBoy.configuration.lists[list]

  params = {
    'list_ids' => [list_id],
    'contacts' => [attributes]
  }

  response = OfficeBoy::Request.call(
    method_name: :put,
    path: 'marketing/contacts',
    payload: params
  )

  response.code == 202
end

.find(list:, email:) ⇒ Object



40
41
42
43
44
45
46
47
48
49
50
51
52
53
# File 'lib/office_boy/subscriber.rb', line 40

def find(list:, email:)
  query = "primary_email LIKE '#{email}%' AND CONTAINS(list_ids, '#{list}')"

  response = OfficeBoy::Request.call(
    method_name: :post,
    path: 'marketing/contacts/search',
    payload: { query: query }
  )

  parsed_response = JSON.parse(response.body)
  return unless parsed_response['result'].size == 1

  parsed_response['result'].first
end

.remove(list:, email:) ⇒ Object



23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
# File 'lib/office_boy/subscriber.rb', line 23

def remove(list:, email:)
  raise Errors::NotDefiniedSubscriptionList unless OfficeBoy.configuration.lists.key?(list)

  list_id = OfficeBoy.configuration.lists[list]

  subscriber =  find(list: list_id, email: email)

  raise Errors::SubscriberNotFound unless subscriber

  response = OfficeBoy::Request.call(
    method_name: :delete,
    path: "marketing/contacts?ids=#{subscriber['id']}"
  )

  response.code == 202
end