Class: BeeiqAPI::Client

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

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(webhook_url = nil, sender_email = nil) ⇒ Client

Returns a new instance of Client.

Raises:

  • (ArgumentError)


17
18
19
20
21
22
23
24
25
26
# File 'lib/beeiq_api.rb', line 17

def initialize(webhook_url = nil, sender_email = nil)
  webhook_url ||= BeeiqAPI.configuration.webhook_url
  sender_email ||= BeeiqAPI.configuration.sender_email

  raise ArgumentError, 'Missing webhook url' if webhook_url.to_s.empty?
  raise ArgumentError, 'Missing sender_email' if sender_email.to_s.empty?

  @webhook_url = webhook_url
  @sender_email = sender_email
end

Instance Attribute Details

#sender_emailObject (readonly)

Returns the value of attribute sender_email.



15
16
17
# File 'lib/beeiq_api.rb', line 15

def sender_email
  @sender_email
end

#webhook_urlObject (readonly)

Returns the value of attribute webhook_url.



14
15
16
# File 'lib/beeiq_api.rb', line 14

def webhook_url
  @webhook_url
end

Instance Method Details

#build_contact_payload(action, data) ⇒ Object



82
83
84
85
86
87
88
89
90
# File 'lib/beeiq_api.rb', line 82

def build_contact_payload(action, data)
  data.map do |item|
    contact = BeeiqAPI::Contact.new item
    {
      actionType: action,
      data: contact.payload
    }
  end
end

#build_payload(action, data) ⇒ Object



57
58
59
60
61
62
63
64
65
66
67
68
69
70
# File 'lib/beeiq_api.rb', line 57

def build_payload(action, data)
  payload =
    case action
    when Config::ActionType::ADD_TICKET
      build_ticket_payload(data)
    when Config::ActionType::ADD_CONTACT, Config::ActionType::UPDATE_CONTACT
      build_contact_payload(action, data)
    end

  {
    senderUser: @sender_email,
    data: payload
  }
end

#build_ticket_payload(data) ⇒ Object



72
73
74
75
76
77
78
79
80
# File 'lib/beeiq_api.rb', line 72

def build_ticket_payload(data)
  data.map do |item|
    ticket = BeeiqAPI::Ticket.new item
    {
      actionType: Config::ActionType::ADD_TICKET,
      data: ticket.payload
    }
  end
end

#create_contact(data = {}) ⇒ Object



36
37
38
# File 'lib/beeiq_api.rb', line 36

def create_contact(data = {})
  create_many_contact([data])
end

#create_many_contact(data = []) ⇒ Object



40
41
42
# File 'lib/beeiq_api.rb', line 40

def create_many_contact(data = [])
  create_or_update_contact(Config::ActionType::ADD_CONTACT, data)
end

#create_many_ticket(data = []) ⇒ Object



32
33
34
# File 'lib/beeiq_api.rb', line 32

def create_many_ticket(data = [])
  create_or_update_contact(Config::ActionType::ADD_TICKET, data)
end

#create_or_update_contact(action, data) ⇒ Object



52
53
54
55
# File 'lib/beeiq_api.rb', line 52

def create_or_update_contact(action, data)
  payload = build_payload(action, data)
  process(:post, payload)
end

#create_ticket(data = {}) ⇒ Object



28
29
30
# File 'lib/beeiq_api.rb', line 28

def create_ticket(data = {})
  create_many_ticket([data])
end

#update_contact(data = {}) ⇒ Object



44
45
46
# File 'lib/beeiq_api.rb', line 44

def update_contact(data = {})
  update_many_contact([data])
end

#update_many_contact(data = []) ⇒ Object



48
49
50
# File 'lib/beeiq_api.rb', line 48

def update_many_contact(data = [])
  create_or_update_contact(Config::ActionType::UPDATE_CONTACT, data)
end