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