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