class SP::Duh::JSONAPI::Adapters::Base
Public Class Methods
new(service)
click to toggle source
# File lib/sp/duh/jsonapi/adapters/base.rb, line 10 def initialize(service) @service = service end
Public Instance Methods
delete(path)
click to toggle source
# File lib/sp/duh/jsonapi/adapters/base.rb, line 23 def delete(path) request('DELETE', path, nil) end
delete!(path)
click to toggle source
# File lib/sp/duh/jsonapi/adapters/base.rb, line 36 def delete!(path) request!('DELETE', path, nil) end
delete_explicit!(exp_accounting_schema, exp_accounting_prefix, path)
click to toggle source
# File lib/sp/duh/jsonapi/adapters/base.rb, line 49 def delete_explicit!(exp_accounting_schema, exp_accounting_prefix, path) explicit_request!(exp_accounting_schema, exp_accounting_prefix, 'DELETE', path, nil) end
do_request(method, path, params)
click to toggle source
do_request
MUST be implemented by each specialized adapter, and returns a tuple: the request status and a JSONAPI
string or hash with the result
# File lib/sp/duh/jsonapi/adapters/base.rb, line 62 def do_request(method, path, params) ; ; end
explicit_do_request(exp_accounting_schema, exp_accounting_prefix, method, path, params)
click to toggle source
# File lib/sp/duh/jsonapi/adapters/base.rb, line 63 def explicit_do_request(exp_accounting_schema, exp_accounting_prefix, method, path, params) ; ; end
explicit_request!(exp_accounting_schema, exp_accounting_prefix, method, path, params)
click to toggle source
# File lib/sp/duh/jsonapi/adapters/base.rb, line 93 def explicit_request!(exp_accounting_schema, exp_accounting_prefix, method, path, params) unwrap_request do explicit_do_request(exp_accounting_schema, exp_accounting_prefix, method, path, params) end end
get(path, params = {})
click to toggle source
# File lib/sp/duh/jsonapi/adapters/base.rb, line 14 def get(path, params = {}) request('GET', path, params) end
get!(path, params = {})
click to toggle source
# File lib/sp/duh/jsonapi/adapters/base.rb, line 27 def get!(path, params = {}) request!('GET', path, params) end
get_explicit!(exp_accounting_schema, exp_accounting_prefix, path, params = {})
click to toggle source
# File lib/sp/duh/jsonapi/adapters/base.rb, line 40 def get_explicit!(exp_accounting_schema, exp_accounting_prefix, path, params = {}) explicit_request!(exp_accounting_schema, exp_accounting_prefix, 'GET', path, params) end
patch(path, params = {})
click to toggle source
# File lib/sp/duh/jsonapi/adapters/base.rb, line 20 def patch(path, params = {}) request('PATCH', path, params) end
Also aliased as: put
patch!(path, params = {})
click to toggle source
# File lib/sp/duh/jsonapi/adapters/base.rb, line 33 def patch!(path, params = {}) request!('PATCH', path, params) end
Also aliased as: put!
patch_explicit!(exp_accounting_schema, exp_accounting_prefix, path, params = {})
click to toggle source
# File lib/sp/duh/jsonapi/adapters/base.rb, line 46 def patch_explicit!(exp_accounting_schema, exp_accounting_prefix, path, params = {}) explicit_request!(exp_accounting_schema, exp_accounting_prefix, 'PATCH', path, params) end
Also aliased as: put_explicit!
post(path, params = {})
click to toggle source
# File lib/sp/duh/jsonapi/adapters/base.rb, line 17 def post(path, params = {}) request('POST', path, params) end
post!(path, params = {})
click to toggle source
# File lib/sp/duh/jsonapi/adapters/base.rb, line 30 def post!(path, params = {}) request!('POST', path, params) end
post_explicit!(exp_accounting_schema, exp_accounting_prefix, path, params = {})
click to toggle source
# File lib/sp/duh/jsonapi/adapters/base.rb, line 43 def post_explicit!(exp_accounting_schema, exp_accounting_prefix, path, params = {}) explicit_request!(exp_accounting_schema, exp_accounting_prefix, 'POST', path, params) end
put_explicit!(exp_accounting_schema, exp_accounting_prefix, path, params = {})
Alias for: patch_explicit!
request(method, path, params)
click to toggle source
# File lib/sp/duh/jsonapi/adapters/base.rb, line 65 def request(method, path, params) # As it is now, this method is EXACTLY the same as request!() # And it cannot be reverted without affecting lots of changes already made in the app's controllers. # TODO: end it, or end the !() version # begin unwrap_request do do_request(method, path, params) end # THIS CAN'T BE DONE, because the same method cannot return both a single result (in case there is NOT an error) and a pair (in case there IS an error) # rescue SP::Duh::JSONAPI::Exceptions::GenericModelError => e # [ # e.status, # e.result # ] # rescue Exception => e # [ # SP::Duh::JSONAPI::Status::ERROR, # get_error_response(path, e) # ] # end end
request!(method, path, params)
click to toggle source
# File lib/sp/duh/jsonapi/adapters/base.rb, line 87 def request!(method, path, params) unwrap_request do do_request(method, path, params) end end
service()
click to toggle source
# File lib/sp/duh/jsonapi/adapters/base.rb, line 8 def service ; @service ; end
unwrap_request() { || ... }
click to toggle source
# File lib/sp/duh/jsonapi/adapters/base.rb, line 57 def unwrap_request unwrap_response(yield) end
Protected Instance Methods
error_response(path, error)
click to toggle source
# File lib/sp/duh/jsonapi/adapters/base.rb, line 147 def error_response(path, error) { errors: [ { status: "#{SP::Duh::JSONAPI::Status::ERROR}", code: error.message } ], links: { self: url(path) }, jsonapi: { version: SP::Duh::JSONAPI::VERSION } } end
get_error_response(path, error)
click to toggle source
get_error_response
MUST be implemented by each specialized adapter, and returns a JSONAPI
error result as a string or hash
# File lib/sp/duh/jsonapi/adapters/base.rb, line 161 def get_error_response(path, error) ; ; end
params_for_body(params)
click to toggle source
# File lib/sp/duh/jsonapi/adapters/base.rb, line 130 def params_for_body(params) params.blank? ? '' : params.to_json.gsub("'","''") end
params_for_query(params)
click to toggle source
# File lib/sp/duh/jsonapi/adapters/base.rb, line 108 def params_for_query(params) query = "" if !params.blank? case when params.is_a?(Array) # query = params.join('&') query = params.map{ |v| URI.encode(URI.encode(v).gsub("'","''"), "&") }.join('&') when params.is_a?(Hash) query = params.map do |k,v| if v.is_a?(String) "#{k}=\"#{URI.encode(URI.encode(v).gsub("'","''"), "&")}\"" else "#{k}=#{v}" end end.join('&') else query = params.to_s end end query end
unwrap_response(response)
click to toggle source
unwrap_response
SHOULD be implemented by each specialized adapter, and returns the request result as a JSONAPI
string or hash and raises an exception if there was an error
# File lib/sp/duh/jsonapi/adapters/base.rb, line 135 def unwrap_response(response) # As the method request() is EXACTLY the same as request!(), and it cannot be reverted without affecting lots of changes already made in the app's controllers... # Allow for response being both a [ status, result ] pair (as of old) OR a single result (as of now) if response.is_a?(Array) status = response[0].to_i result = response[1] result else response end end
url(path)
click to toggle source
# File lib/sp/duh/jsonapi/adapters/base.rb, line 101 def url(path) ; File.join(service.url, path) ; end
url_with_params_for_query(path, params)
click to toggle source
# File lib/sp/duh/jsonapi/adapters/base.rb, line 103 def url_with_params_for_query(path, params) query = params_for_query(params) query.blank? ? url(path) : url(path) + "?" + query end