class Phabulous::Conduit::Client
Constants
- Error
Attributes
cert[RW]
host[RW]
session[RW]
token[RW]
user[RW]
Public Class Methods
new(_host = Phabulous.configuration.host, _user = Phabulous.configuration.user, _cert = Phabulous.configuration.cert)
click to toggle source
# File lib/phabulous/conduit/client.rb, line 13 def initialize(_host = Phabulous.configuration.host, _user = Phabulous.configuration.user, _cert = Phabulous.configuration.cert) self.host = _host self.user = _user self.cert = _cert self.session = nil end
Public Instance Methods
connect()
click to toggle source
# File lib/phabulous/conduit/client.rb, line 25 def connect self.token = Time.now.to_i if result = request('conduit.connect', connection_payload) self.session = Conduit::Session.new(result['connectionID'], result['sessionKey']) end self.session end
ping()
click to toggle source
# File lib/phabulous/conduit/client.rb, line 21 def ping request('conduit.ping') end
request(method, data = {})
click to toggle source
# File lib/phabulous/conduit/client.rb, line 35 def request(method, data = {}) post_body = post_body(data) response = self.class.post("#{self.host}/api/#{method}", body: post_body, :headers => { 'Content-Type' => 'application/json' } ) if response.parsed_response['result'] response.parsed_response['result'] else raise Error, "Conduit error: #{response.parsed_response['error_info']}" end end
Protected Instance Methods
auth_signature()
click to toggle source
# File lib/phabulous/conduit/client.rb, line 68 def auth_signature Digest::SHA1.hexdigest("#{self.token}#{self.cert}") end
connection_payload()
click to toggle source
# File lib/phabulous/conduit/client.rb, line 57 def connection_payload { 'client' => "phabulous gem", 'clientVersion' => Phabulous::VERSION, 'user' => self.user, 'host' => self.host, 'authToken' => self.token, 'authSignature' => auth_signature, } end
post_body(data)
click to toggle source
# File lib/phabulous/conduit/client.rb, line 49 def post_body(data) if session data.merge!(__conduit__: self.session.to_hash) end { params: data.to_json, output: 'json' } end