class DeepL::Requests::Base

Attributes

api[R]
options[R]
response[R]

Public Class Methods

new(api, options = {}) click to toggle source
# File lib/deepl/requests/base.rb, line 8
def initialize(api, options = {})
  @api = api
  @options = options
end

Public Instance Methods

request() click to toggle source
# File lib/deepl/requests/base.rb, line 13
def request
  raise NotImplementedError
end

Private Instance Methods

get() click to toggle source
# File lib/deepl/requests/base.rb, line 44
def get
  request = Net::HTTP::Get.new(uri.request_uri)
  response = http.request(request)

  validate_response!(request, response)
  [request, response]
end
host() click to toggle source
# File lib/deepl/requests/base.rb, line 89
def host
  api.configuration.host
end
http() click to toggle source
# File lib/deepl/requests/base.rb, line 52
def http
  @http ||= begin
    http = Net::HTTP.new(uri.host, uri.port)
    http.use_ssl = uri.scheme == 'https'
    http
  end
end
option(name) click to toggle source
# File lib/deepl/requests/base.rb, line 23
def option(name)
  options[name.to_s] || options[name.to_sym]
end
option?(name) click to toggle source
# File lib/deepl/requests/base.rb, line 19
def option?(name)
  options.key?(name.to_s) || options.key?(name.to_sym)
end
path() click to toggle source
# File lib/deepl/requests/base.rb, line 72
def path
  raise NotImplementedError
end
post(payload) click to toggle source
# File lib/deepl/requests/base.rb, line 35
def post(payload)
  request = Net::HTTP::Post.new(uri.request_uri)
  request.set_form_data(payload.compact)
  response = http.request(request)

  validate_response!(request, response)
  [request, response]
end
query_params() click to toggle source
# File lib/deepl/requests/base.rb, line 93
def query_params
  { auth_key: api.configuration.auth_key }.merge(options)
end
set_option(name, value) click to toggle source
# File lib/deepl/requests/base.rb, line 27
def set_option(name, value)
  if options.key?(name.to_sym)
    options[name.to_sym] = value
  else
    options[name.to_s] = value
  end
end
uri() click to toggle source
# File lib/deepl/requests/base.rb, line 80
def uri
  @uri ||= begin
    uri = URI(url)
    new_query = URI.decode_www_form(uri.query || '') + query_params.to_a
    uri.query = URI.encode_www_form(new_query)
    uri
  end
end
url() click to toggle source
# File lib/deepl/requests/base.rb, line 76
def url
  "#{host}/#{api.configuration.version}/#{path}"
end
validate_response!(request, response) click to toggle source
# File lib/deepl/requests/base.rb, line 60
def validate_response!(request, response)
  return if response.is_a?(Net::HTTPSuccess)

  case response.code
  when '400' then raise Exceptions::BadRequest.new(request, response)
  when '403' then raise Exceptions::AuthorizationFailed.new(request, response)
  when '429' then raise Exceptions::LimitExceeded.new(request, response)
  when '456' then raise Exceptions::QuotaExceeded.new(request, response)
  else raise Exceptions::RequestError.new(request, response)
  end
end