class Demio::Client
Constants
- REQUEST_REDIRECT_FOLLOW_LIMIT
Attributes
api_key[R]
api_secret[R]
Public Class Methods
new(options = {})
click to toggle source
# File lib/demio/client.rb, line 25 def initialize(options = {}) @api_key = options[:api_key] @api_secret = options[:api_secret] end
Public Instance Methods
get(uri)
click to toggle source
# File lib/demio/client.rb, line 30 def get(uri) make_request(Net::HTTP::Get, uri) end
ping()
click to toggle source
# File lib/demio/client.rb, line 38 def ping make_request( Net::HTTP::Get, "ping/query?api_key=#{api_key}&api_secret=#{api_secret}" ) end
put(uri, payload)
click to toggle source
# File lib/demio/client.rb, line 34 def put(uri, payload) make_request(Net::HTTP::Put, uri, payload) end
Private Instance Methods
base_uri()
click to toggle source
# File lib/demio/client.rb, line 93 def base_uri "https://my.demio.com/api/v1/" end
create_headers(request)
click to toggle source
# File lib/demio/client.rb, line 77 def create_headers(request) request["Api-Key"] = api_key request["Api-Secret"] = api_secret request["Content-Type"] = "application/json" request["User-Agent"] = "Demio Ruby Client - #{Demio::VERSION}" request end
create_request(verb_klass, uri, payload)
click to toggle source
# File lib/demio/client.rb, line 58 def create_request(verb_klass, uri, payload) request = verb_klass.new(uri) request = create_headers(request) request.body = payload.to_json if verb_klass == Net::HTTP::Put request end
format_uri(path)
click to toggle source
# File lib/demio/client.rb, line 89 def format_uri(path) URI(base_uri + path) end
handle_response(response, verb_klass, payload, request_limit)
click to toggle source
# File lib/demio/client.rb, line 65 def handle_response(response, verb_klass, payload, request_limit) case response when Net::HTTPSuccess response when Net::HTTPRedirection location = response["Location"] make_request(verb_klass, location, payload, request_limit - 1) else response.value end end
make_request(verb_klass, uri, payload = {}, request_limit = REQUEST_REDIRECT_FOLLOW_LIMIT)
click to toggle source
# File lib/demio/client.rb, line 47 def make_request(verb_klass, uri, payload = {}, request_limit = REQUEST_REDIRECT_FOLLOW_LIMIT) raise TooManyRedirectsError, "too many HTTP redirects" if request_limit.zero? uri = redirected_request?(request_limit) ? URI(uri) : format_uri(uri) Net::HTTP.start(uri.host, uri.port, use_ssl: true) do |http| response = http.request(create_request(verb_klass, uri, payload)) handle_response(response, verb_klass, payload, request_limit) end end
redirected_request?(request_limit)
click to toggle source
# File lib/demio/client.rb, line 85 def redirected_request?(request_limit) request_limit < REQUEST_REDIRECT_FOLLOW_LIMIT end