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