class Icasework::Resource

API Endpoints for configured database

Attributes

method[R]

Public Class Methods

create_case(payload = {}) click to toggle source
# File lib/icasework/resource.rb, line 31
def create_case(payload = {})
  new(:post, 'createcase', payload)
end
get_case_attribute(payload = {}) click to toggle source
# File lib/icasework/resource.rb, line 19
def get_case_attribute(payload = {})
  new(:get, 'getcaseattribute', payload)
end
get_case_details(payload = {}) click to toggle source
# File lib/icasework/resource.rb, line 23
def get_case_details(payload = {})
  new(:get, 'getcasedetails', payload)
end
get_case_documents(payload = {}) click to toggle source
# File lib/icasework/resource.rb, line 27
def get_case_documents(payload = {})
  new(:get, 'getcasedocuments', payload)
end
get_cases(payload = {}) click to toggle source
# File lib/icasework/resource.rb, line 15
def get_cases(payload = {})
  new(:get, 'getcases', payload, subdomain: 'uatportal')
end
new(method, path, payload, **options) click to toggle source
# File lib/icasework/resource.rb, line 41
def initialize(method, path, payload, **options)
  @method = method
  @path = path
  @payload = payload
  @options = options
end
token(payload = {}) click to toggle source
# File lib/icasework/resource.rb, line 11
def token(payload = {})
  new(:post, 'token', payload, authorised: false, format: nil)
end

Public Instance Methods

data() click to toggle source
# File lib/icasework/resource.rb, line 77
def data
  response
end
headers() click to toggle source
# File lib/icasework/resource.rb, line 57
def headers
  return {} unless authorised?

  headers = {}
  headers[:authorization] = "Bearer #{Icasework::Token::Bearer.generate}"
  headers
end
payload() click to toggle source
# File lib/icasework/resource.rb, line 65
def payload
  return @payload if @payload_parsed

  @payload[:format] = format if format

  @payload = Payload.process(@payload)
  @payload = { params: @payload } if method == :get

  @payload_parsed = true
  @payload
end
url() click to toggle source
# File lib/icasework/resource.rb, line 48
def url
  if Icasework.production?
    "https://#{Icasework.account}.icasework.com/#{@path}"
  else
    subdomain = @options.fetch(:subdomain, 'uat')
    "https://#{subdomain}.icasework.com/#{@path}?db=#{Icasework.account}"
  end
end

Private Instance Methods

authorised?() click to toggle source
# File lib/icasework/resource.rb, line 83
def authorised?
  @options.fetch(:authorised, true)
end
format() click to toggle source
# File lib/icasework/resource.rb, line 87
def format
  @options.fetch(:format, 'xml')
end
parse_format(response) click to toggle source
# File lib/icasework/resource.rb, line 111
def parse_format(response)
  case format
  when 'xml'
    XMLConverter.new(response.body).to_h
  else
    JSON.parse(response.body)
  end
end
parser() click to toggle source
# File lib/icasework/resource.rb, line 101
def parser
  lambda do |response, _request, _result|
    Data.process(parse_format(response))
  rescue JSON::ParserError
    raise ResponseError, "JSON invalid (#{response.body[0...100]})"
  rescue REXML::ParseException
    raise ResponseError, "XML invalid (#{response.body[0...100]})"
  end
end
resource() click to toggle source
# File lib/icasework/resource.rb, line 91
def resource
  RestClient::Resource.new(url, headers: headers)
end
response() click to toggle source
# File lib/icasework/resource.rb, line 95
def response
  resource.public_send(method, payload, &parser)
rescue RestClient::Exception => e
  raise RequestError, e.message
end