class AylienTextApi::Connection

Attributes

rate_limits[R]

Public Class Methods

new(endpoint, params, config) click to toggle source
# File lib/aylien_text_api/connection.rb, line 24
def initialize(endpoint, params, config)
  @config = config
  @uri = URI.join(@config[:base_uri], endpoint)
  @params = params
  compile_request_params
end

Public Instance Methods

request() click to toggle source
# File lib/aylien_text_api/connection.rb, line 31
def request
  begin
    request!
  rescue => e
    logger = Logger.new(STDOUT)
    logger.level = Logger::ERROR
    logger.info(e)
    nil
  end
end
request!() click to toggle source
# File lib/aylien_text_api/connection.rb, line 42
def request!
  Net::HTTP.start(@uri.host, @uri.port, :ENV, use_ssl: (@uri.scheme == 'https')) do |http|
    response = http.request(@request)
    
    limit = response["X-RateLimit-Limit"]
    remaining = response["X-RateLimit-Remaining"]
    reset = response["X-RateLimit-Reset"]
    
    @rate_limits = {
      limit: limit ? limit.to_i : nil,
      remaining: remaining ? remaining.to_i : nil,
      reset: reset ? reset.to_i : nil
    }
    
    if response.kind_of?(Net::HTTPSuccess)
      JSON.parse(response.body, :symbolize_names => true)
    else
      klass = AylienTextApi::Error::ERRORS[response.code.to_i]
      error = klass.nil? ? AylienTextApi::Error.new(response.body) : klass.from_response(response)
      raise error
    end
  end
end

Private Instance Methods

compile_request_params() click to toggle source
# File lib/aylien_text_api/connection.rb, line 68
def compile_request_params
  @params[:class] = @params.delete(:classes) if @params[:classes]
  
  if @config[:method] == :post
    request = Net::HTTP::Post.new(@uri.request_uri)
    request.set_form_data(@params)
  elsif @config[:method] == :get
    @uri.query = URI.encode_www_form(@params)
    request = Net::HTTP::Get.new(@uri.request_uri)
  end

  request['X-AYLIEN-TextAPI-Application-ID'] = @config[:app_id]
  request['X-AYLIEN-TextAPI-Application-Key'] = @config[:app_key]
  request['user-agent'] = @config[:user_agent]

  @request = request
end