class Hawkei::APIResource
Hawkei
API Resource¶ ↑
Define the API requests methods
Public Class Methods
class_name()
click to toggle source
@return [String] the class name
# File lib/hawkei/api_resource.rb, line 49 def class_name name.split('::')[-1] end
request(method, path, payload = {}, options = {})
click to toggle source
Send a request to the API
@param [Symbol] method for the request @param [String] endpoint for the request @param [Hash] options @param [Hash] Payload
@return [Hash] response @raise [Hawkei::RequestError] if the request is invalid rubocop:disable Metrics/AbcSize
# File lib/hawkei/api_resource.rb, line 64 def request(method, path, payload = {}, options = {}) payload[:sent_at] = Time.now.utc.iso8601(3) payload = Util.deep_obfuscate_value(payload, configurations.obfuscated_fields) url_params = Util.encode_parameters(payload) if method == :get uri = build_endpoint_url(path, url_params) request_options = Util.compact( method: method, url: uri.to_s, payload: payload.to_json, proxy: configurations.proxy_url, use_ssl: configurations.http_secure ).merge(headers(options)).merge(options) Request.execute(request_options).body rescue Hawkei::RequestError => error return error.http_body if error.http_status == 422 raise end
resource_name()
click to toggle source
@return [String] resource name
# File lib/hawkei/api_resource.rb, line 43 def resource_name Util.underscore("#{class_name}s") end
resource_path(path = nil)
click to toggle source
@return [String] resource path
# File lib/hawkei/api_resource.rb, line 37 def resource_path(path = nil) "/api/#{configurations.api_version}/#{path || @resource_name || CGI.escape(resource_name)}" end
Private Class Methods
build_endpoint_url(path, params = nil)
click to toggle source
rubocop:enable Metrics/AbcSize
# File lib/hawkei/api_resource.rb, line 88 def build_endpoint_url(path, params = nil) host, port = configurations.api_host.split(':') port = port.to_i if port url_params = Util.compact( host: host, path: path, port: port, query: params ) return URI::HTTPS.build(url_params) if configurations.http_secure URI::HTTP.build(url_params) end
configurations()
click to toggle source
# File lib/hawkei/api_resource.rb, line 124 def configurations Hawkei.configurations end
headers(options)
click to toggle source
# File lib/hawkei/api_resource.rb, line 112 def headers(options) { headers: { accept: 'application/json', content_type: 'application/json', x_api_key: options.delete(:api_key) || configurations.api_key, x_space_name: options.delete(:space_name) || configurations.space_name, x_environment_name: options.delete(:environment_name) || configurations.environment_name, }, } end
ssl_options()
click to toggle source
# File lib/hawkei/api_resource.rb, line 104 def ssl_options return {} unless configurations.http_secure { verify_mode: OpenSSL::SSL::VERIFY_PEER, } end
Public Instance Methods
request(method, resource_path, payload = {}, options = {})
click to toggle source
Send a request to the API
@param [Symbol] method for the request @param [String] endpoint for the request @param [Hash] options @param [Hash] Payload
@return [Hash] response @raise [Hawkei::RequestError] if the request is invalid
# File lib/hawkei/api_resource.rb, line 29 def request(method, resource_path, payload = {}, options = {}) self.class.request(method, resource_path, payload, options) end
resource_name()
click to toggle source
@return [String] resource name
# File lib/hawkei/api_resource.rb, line 9 def resource_name self.class.resource_name end
resource_path(path = nil)
click to toggle source
@return [String] resource path
# File lib/hawkei/api_resource.rb, line 15 def resource_path(path = nil) self.class.resource_path(path) end