module Cropio::Connection::Proxiable
Contains logic of proxing calls to HTTPS requests.
Public Instance Methods
delete(resource)
click to toggle source
Accepts reources name and params to perform HTTPS DELETE request.
# File lib/cropio/connection/proxiable.rb, line 27 def delete(resource) proxy(method: :delete, url: url_for(resource)) end
get(resource, query = {})
click to toggle source
Accepts reources name and params to perform HTTPS GET request.
# File lib/cropio/connection/proxiable.rb, line 8 def get(resource, query = {}) rmethod = extract_resource_method!(query) id = extract_record_id!(query) proxy(method: :get, url: url_for(resource, rmethod, id), headers: { params: query }) end
patch(resource, data)
click to toggle source
Accepts reources name and params to perform HTTPS PATCH request.
# File lib/cropio/connection/proxiable.rb, line 22 def patch(resource, data) proxy(method: :patch, url: url_for(resource), data: data) end
post(resource, data)
click to toggle source
Accepts reources name and params to perform HTTPS POST request.
# File lib/cropio/connection/proxiable.rb, line 17 def post(resource, data) proxy(method: :post, url: url_for(resource), data: data) end
Protected Instance Methods
clear_params_in_options!(options)
click to toggle source
# File lib/cropio/connection/proxiable.rb, line 65 def clear_params_in_options!(options) return if options[:headers][:params].nil? options[:headers][:params].reject! { |_k, v| v.nil? } end
extract_record_id!(query)
click to toggle source
# File lib/cropio/connection/proxiable.rb, line 46 def extract_record_id!(query) raise ArgumentError unless query.is_a?(Hash) query.delete(:id) end
extract_resource_method!(query)
click to toggle source
# File lib/cropio/connection/proxiable.rb, line 40 def extract_resource_method!(query) raise ArgumentError unless query.is_a?(Hash) query.delete(:resource_method) end
proxy(options)
click to toggle source
# File lib/cropio/connection/proxiable.rb, line 52 def proxy(options) options[:headers] ||= {} options[:headers].merge!(headers) clear_params_in_options!(options) res = send("proxy_#{options[:method]}", options) options[:method].eql?(:delete) ? res : JSON.parse(res) rescue RestClient::UnprocessableEntity => e puts JSON.parse(e.http_body) raise e rescue RestClient::NotFound {} end
proxy_delete(options)
click to toggle source
# File lib/cropio/connection/proxiable.rb, line 85 def proxy_delete(options) RestClient.delete(options[:url], options[:headers]) end
proxy_get(options)
click to toggle source
# File lib/cropio/connection/proxiable.rb, line 71 def proxy_get(options) RestClient::Request.execute(options) end
proxy_patch(options)
click to toggle source
# File lib/cropio/connection/proxiable.rb, line 80 def proxy_patch(options) RestClient.patch(options[:url], { data: options[:data] }, options[:headers]) end
proxy_post(options)
click to toggle source
# File lib/cropio/connection/proxiable.rb, line 75 def proxy_post(options) RestClient.post(options[:url], { data: options[:data] }, options[:headers]) end
url_for(resource, resource_method = nil, id = nil)
click to toggle source
# File lib/cropio/connection/proxiable.rb, line 33 def url_for(resource, resource_method = nil, id = nil) url = "#{Cropio::Connection::Configurable::BASE_URL}/#{resource}" url += "/#{resource_method}" if resource_method url += "/#{id}" if id url end