class BeeiqAPI::Client

Attributes

sender_email[R]
webhook_url[R]

Public Class Methods

new(webhook_url = nil, sender_email = nil) click to toggle source
# 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

Public Instance Methods

build_contact_payload(action, data) click to toggle source
# 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) click to toggle source
# 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) click to toggle source
# 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 = {}) click to toggle source
# File lib/beeiq_api.rb, line 36
def create_contact(data = {})
  create_many_contact([data])
end
create_many_contact(data = []) click to toggle source
# 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 = []) click to toggle source
# 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) click to toggle source
# 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 = {}) click to toggle source
# File lib/beeiq_api.rb, line 28
def create_ticket(data = {})
  create_many_ticket([data])
end
update_contact(data = {}) click to toggle source
# File lib/beeiq_api.rb, line 44
def update_contact(data = {})
  update_many_contact([data])
end
update_many_contact(data = []) click to toggle source
# File lib/beeiq_api.rb, line 48
def update_many_contact(data = [])
  create_or_update_contact(Config::ActionType::UPDATE_CONTACT, data)
end

Private Instance Methods

process(verb, data=nil) click to toggle source
# File lib/beeiq_api.rb, line 94
def process(verb, data=nil)
  begin
    BeeiqAPI::Response.new ::RestClient::Request.execute(method: verb,
                              url: @webhook_url,
                              headers: { 'Content-Type': 'application/json' },
                              payload: data.to_json,
                              timeout: 10)
  rescue ::RestClient::ExceptionWithResponse => e
    BeeiqAPI::Response.new e.response
  end
end