class Holded::APIRequest

Constants

BASE_API_URL

Public Class Methods

new(builder:) click to toggle source
# File lib/holded/api_request.rb, line 11
def initialize(builder:)
  @request_builder = builder
  @url             = build_api_url
  @http            = build_http
end

Public Instance Methods

delete(params: nil) click to toggle source
# File lib/holded/api_request.rb, line 41
def delete(params: nil)
  validate_api_key
  request = Net::HTTP::Delete.new(@url, build_headers)
  request = configure_request(request: request, params: params)
  response = @http.request(request)
  parse_response(response: response)
end
get(params: nil) click to toggle source
# File lib/holded/api_request.rb, line 17
def get(params: nil)
  validate_api_key
  request = Net::HTTP::Get.new(@url, build_headers)
  request = configure_request(request: request, params: params)
  response = @http.request(request)
  parse_response(response: response)
end
post(params: nil) click to toggle source
# File lib/holded/api_request.rb, line 25
def post(params: nil)
  validate_api_key
  request = Net::HTTP::Post.new(@url, build_headers)
  request = configure_request(request: request, params: params)
  response = @http.request(request)
  parse_response(response: response)
end
put(params: nil) click to toggle source
# File lib/holded/api_request.rb, line 33
def put(params: nil)
  validate_api_key
  request = Net::HTTP::Put.new(@url, build_headers)
  request = configure_request(request: request, params: params)
  response = @http.request(request)
  parse_response(response: response)
end

Protected Instance Methods

api_key() click to toggle source
# File lib/holded/api_request.rb, line 86
def api_key
  @request_builder.api_key
end
validate_api_key() click to toggle source
# File lib/holded/api_request.rb, line 81
def validate_api_key
  api_key = self.api_key
  raise Exceptions::APIKeyNotFoundError, 'You must set an api_key' unless api_key
end

Private Instance Methods

build_api_url() click to toggle source
# File lib/holded/api_request.rb, line 52
def build_api_url
  URI(BASE_API_URL + @request_builder.path)
end
build_headers() click to toggle source
# File lib/holded/api_request.rb, line 63
def build_headers
  {
      "key"          => api_key,
      "Content-Type" => "application/json"
  }
end
build_http() click to toggle source
# File lib/holded/api_request.rb, line 56
def build_http
  http             = Net::HTTP.new(@url.host, @url.port)
  http.use_ssl     = true
  http.verify_mode = OpenSSL::SSL::VERIFY_NONE
  http
end
configure_request(request:, params: nil) click to toggle source
# File lib/holded/api_request.rb, line 70
def configure_request(request:, params: nil)
  request.body = params.to_json if params
  request
end
parse_response(response:) click to toggle source
# File lib/holded/api_request.rb, line 75
def parse_response(response:)
  Response.new(request_response: response)
end