class KSequencing::Connection

Public Instance Methods

get(path, options = {}) click to toggle source
# File lib/k_sequencing/connection.rb, line 7
def get(path, options = {})
  @response = connection.get do |request|
    request.url(path)
    request.headers['Content-Type'] = 'application/json'
    request.headers['Authorization'] = options[:token] unless options[:token].nil?
    request.params = options[:path_param] ? prediction_options(options) : options
  end
  Response.new(data, status_code, message, meta, total)
rescue Error, Faraday::Error => e
  handle_error(e)
end
post(path, options = {}, query_params = {}) click to toggle source
# File lib/k_sequencing/connection.rb, line 19
def post(path, options = {}, query_params = {})
  @response = connection.post do |request|
    request.path = path
    request.headers['Content-Type'] = 'application/json'
    request.headers['Authorization'] = options[:token] unless options[:token].nil?
    request.params = query_params
    request.body = options unless options.nil?
  end
  Response.new(data, status_code, message, meta, nil)
rescue Error, Faraday::Error => e
  handle_error(e)
end

Private Instance Methods

connection() click to toggle source
# File lib/k_sequencing/connection.rb, line 34
def connection
  options = {
    url: 'https://k-sequencing.datawow.io/'
  }

  @connection ||= Faraday::Connection.new(options) do |connection|
    connection.request :url_encoded
    connection.request :json
    connection.response :json
    connection.use KSequencing::FaradayMiddleware::RaiseHttpException
    connection.use :gzip
    connection.adapter Faraday.default_adapter
  end
end
data() click to toggle source
# File lib/k_sequencing/connection.rb, line 49
def data
  @response.body['data']
end
handle_error(exception) click to toggle source
# File lib/k_sequencing/connection.rb, line 69
def handle_error(exception)
  if exception.is_a?(Faraday::ConnectionFailed)
    code = 599
    message = 'Connection Failed'
  else
    code = exception.to_s.partition(':').first
    message = exception.to_s.partition(':').last
  end

  Response.new(nil, code, message, nil)
end
message() click to toggle source
# File lib/k_sequencing/connection.rb, line 61
def message
  meta['message'] unless meta.nil?
end
meta() click to toggle source
# File lib/k_sequencing/connection.rb, line 53
def meta
  @response.body['meta']
end
prediction_options(options) click to toggle source
# File lib/k_sequencing/connection.rb, line 81
def prediction_options(options)
  %i[id path_param].each { |e| options.delete(e) }
  options
end
status_code() click to toggle source
# File lib/k_sequencing/connection.rb, line 57
def status_code
  meta['code'] unless meta.nil?
end
total() click to toggle source
# File lib/k_sequencing/connection.rb, line 65
def total
  meta['total_count'] unless meta.nil?
end