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



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

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



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

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



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

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
# File 'lib/beeiq_api.rb', line 40

def create_many_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



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

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



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

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

#update_many_contact(data = []) ⇒ Object



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

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