class UnforBaseApi
Public Class Methods
new(args={})
click to toggle source
# File lib/unfor_base_api.rb, line 8 def initialize(args={}) @endpoint = args[:endpoint] @access_token = args[:access_token] if @endpoint.blank? raise 'endpoint is required!' end end
Public Instance Methods
last_response()
click to toggle source
# File lib/unfor_base_api.rb, line 17 def last_response @last_response end
last_result()
click to toggle source
# File lib/unfor_base_api.rb, line 21 def last_result @last_result end
Protected Instance Methods
delete_request(action, headers={})
click to toggle source
# File lib/unfor_base_api.rb, line 82 def delete_request(action, headers={}) begin headers.merge!({ authorization: "Token token=\"#{@access_token}\"" }) response_kind = extract_response_kind(headers) response = RestClient.delete("#{@endpoint}#{action}", headers) parse_response(response_kind, response) rescue => e parse_response('object', e.response) end end
extract_response_kind(headers)
click to toggle source
# File lib/unfor_base_api.rb, line 93 def extract_response_kind(headers) api_response_kind = headers.delete('api_response_kind') api_response_kind = headers.delete(:api_response_kind) if api_response_kind.nil? api_response_kind.nil? ? 'object' : api_response_kind end
get_paging_response(response)
click to toggle source
# File lib/unfor_base_api.rb, line 150 def get_paging_response(response) OpenStruct.new({ results: response.body, paging: response.headers.link }) end
get_persistance_response(response)
click to toggle source
# File lib/unfor_base_api.rb, line 134 def get_persistance_response(response) if response.headers.warning.nil? OpenStruct.new({ success: true, entity: response.body, errors: [] }) else OpenStruct.new({ success: false, entity: nil, errors: response.headers.warning.errors }) end end
get_request(action, params={}, headers={})
click to toggle source
# File lib/unfor_base_api.rb, line 27 def get_request(action, params={}, headers={}) begin headers.merge!({ authorization: "Token token=\"#{@access_token}\"" }) response_kind = extract_response_kind(headers) response = RestClient.get("#{@endpoint}#{action}", {params: params}.merge(headers)) parse_response(response_kind, response) rescue => e parse_response('object', e.response) end end
head_request(action, headers={})
click to toggle source
# File lib/unfor_base_api.rb, line 71 def head_request(action, headers={}) begin headers.merge!({ authorization: "Token token=\"#{@access_token}\"" }) response_kind = extract_response_kind(headers) response = RestClient.head("#{@endpoint}#{action}", headers) parse_response(response_kind, response) rescue => e parse_response('object', e.response) end end
parse_response(api_response_kind, response)
click to toggle source
# File lib/unfor_base_api.rb, line 99 def parse_response(api_response_kind, response) @last_response = response result = OpenStruct.new result.status_code = response.code if api_response_kind == 'object' result.headers = OpenStruct.new response.headers.each do |key, value| parsed_value = JSON.parse(value, object_class: OpenStruct) rescue value result.headers.send("#{key}=", parsed_value) end result.body = (JSON.parse(response.body, object_class: OpenStruct) rescue response.body) result.body = nil if result.body == 'null' elsif api_response_kind == 'hash' result.headers = { } response.headers.each do |key, value| result.headers[key] = JSON.parse(value) rescue value end result.body = (JSON.parse(response.body) rescue response.body) result.body = nil if result.body == 'null' else result.headers = response.headers result.body = response.body end @last_result = result result end
patch_request(action, params={}, headers={})
click to toggle source
# File lib/unfor_base_api.rb, line 60 def patch_request(action, params={}, headers={}) begin headers.merge!({ authorization: "Token token=\"#{@access_token}\"" }) response_kind = extract_response_kind(headers) response = RestClient.patch("#{@endpoint}#{action}", params, headers) parse_response(response_kind, response) rescue => e parse_response('object', e.response) end end
post_request(action, params={}, headers={})
click to toggle source
# File lib/unfor_base_api.rb, line 38 def post_request(action, params={}, headers={}) begin headers.merge!({ authorization: "Token token=\"#{@access_token}\"" }) response_kind = extract_response_kind(headers) response = RestClient.post("#{@endpoint}#{action}", params, headers) parse_response(response_kind, response) rescue => e parse_response('object', e.response) end end
put_request(action, params={}, headers={})
click to toggle source
# File lib/unfor_base_api.rb, line 49 def put_request(action, params={}, headers={}) begin headers.merge!({ authorization: "Token token=\"#{@access_token}\"" }) response_kind = extract_response_kind(headers) response = RestClient.put("#{@endpoint}#{action}", params, headers) parse_response(response_kind, response) rescue => e parse_response('object', e.response) end end