class Kitties::Client
Public Class Methods
new( base_uri:, token: nil )
click to toggle source
todo: add (optional) close with @http.close - why? why not?
# File lib/kittyverse/api/client.rb, line 68 def initialize( base_uri:, token: nil ) uri = URI.parse( base_uri ) @http = Net::HTTP.new( uri.host, uri.port ) if uri.instance_of? URI::HTTPS @http.use_ssl = true @http.verify_mode = OpenSSL::SSL::VERIFY_NONE end @base_request_uri = uri.request_uri ## e.g. save /v1 etc. ## puts "base_request_uri: >#{@base_request_uri}<" @request_headers = if token { "x-api-token" => token } else {} end end
Public Instance Methods
get( service, **params )
click to toggle source
# File lib/kittyverse/api/client.rb, line 86 def get( service, **params ) ## add url-encoded query string from params hash e.g. ?limit=100&type=sale unless params.empty? query = URI.encode_www_form( params ) service += "?#{query}" end puts "GET #{service}" request_uri = if @base_request_uri == "/" service else "#{@base_request_uri}#{service}" ## e.g. add /v1 etc. end pp @request_headers req = Net::HTTP::Get.new( request_uri, @request_headers ) res = @http.request(req) headers = res.to_hash ## get all response headers if Kitties.debug? # Iterate all response headers. # res.each_header do |key, value| # p "#{key} => #{value}" # end pp headers # => "content-type => application/json; charset=utf-8" # => "x-ratelimit-limit => 20" # => "x-ratelimit-remaining => 19" # => "x-ratelimit-reset => 1558079593" # ... end body = res.read_body ## pp body ## track last response Kitties.last_response = Response.new( res.code, res.message, headers, body ) if res.code != '200' raise HttpError.new( res.code, res.message ) end json = JSON.parse( body ) ## use just body (any difference?) - why? why not? ## pp json json end