class Splicer::Dynect::Client
@author Matthew A. Johnston <warmwaffles@gmail.com>
Attributes
base_url[R]
customer[R]
headers[R]
password[R]
username[R]
Public Class Methods
new(customer, username, password)
click to toggle source
@param [String] customer @param [String] username @param [String] password
# File lib/splicer/dynect/client.rb, line 11 def initialize(customer, username, password) @customer = customer @username = username @password = password @base_url = 'https://api-v4.dynect.net/REST' @headers = { 'Content-Type' => 'application/json', 'API-Version' => '3.4.0' } end
Public Instance Methods
delete(resource)
click to toggle source
@param [String] resource
@return [Hash]
# File lib/splicer/dynect/client.rb, line 65 def delete(resource) execute({ method: :delete, url: resource_url(resource), headers: @headers }) end
get(resource)
click to toggle source
@param [String] resource
@return [Hash]
# File lib/splicer/dynect/client.rb, line 40 def get(resource) execute({ method: :get, url: resource_url(resource), headers: @headers, max_redirects: 20 }) end
login()
click to toggle source
Creates a client's session
@return [Boolean]
# File lib/splicer/dynect/client.rb, line 76 def login return true if logged_in? resp = post('Session', { user_name: @username, password: @password, customer_name: @customer }) @headers['Auth-Token'] = resp['data']['token'] true end
logout()
click to toggle source
Destroys the client's session
@return [Boolean]
# File lib/splicer/dynect/client.rb, line 100 def logout return false unless logged_in? delete('Session') @headers.delete('Auth-Token') true end
noop()
click to toggle source
Keeps the session alive
@return [Boolean] True if successful
# File lib/splicer/dynect/client.rb, line 91 def noop return false unless logged_in? put('Session') true end
post(resource, payload={})
click to toggle source
@param [String] resource @param [Hash] payload
@return [Hash]
# File lib/splicer/dynect/client.rb, line 27 def post(resource, payload={}) execute({ method: :post, url: resource_url(resource), payload: payload.to_json, headers: @headers, max_redirects: 20 }) end
put(resource, payload={})
click to toggle source
@param [String] resource @param [Hash] payload
@return [Hash]
# File lib/splicer/dynect/client.rb, line 53 def put(resource, payload={}) execute({ method: :put, url: resource_url(resource), payload: payload.to_json, headers: @headers }) end
Private Instance Methods
execute(args={})
click to toggle source
Wrapper around RestClient::Request.execute method
@param [Hash] args @raise [Splicer::Errors::RequestError] when the request fails @return [Hash]
# File lib/splicer/dynect/client.rb, line 119 def execute(args={}) response = RestClient::Request.execute(args) Splicer.logger.debug "[SPLICER][DYNECT] method=#{args[:method]} url=#{args[:url]} response=#{response}" JSON.parse(response) rescue RestClient::Exception => error Splicer.logger.debug "[SPLICER][DYNECT] method=#{args[:method]} url=#{args[:url]} response=#{error.response} message=#{error.message}" raise Splicer::Errors::RequestError.new(error) end
logged_in?()
click to toggle source
@return [Boolean]
# File lib/splicer/dynect/client.rb, line 110 def logged_in? !!@headers['Auth-Token'] end
resource_url(resource)
click to toggle source
# File lib/splicer/dynect/client.rb, line 128 def resource_url resource [@base_url, resource.gsub(/^\//,'').gsub(/REST\//,'')].join('/') end