class Fusion::Client

Constants

URL
VERSION

Attributes

password[RW]
username[RW]

Public Class Methods

configure() { |self| ... } click to toggle source
# File lib/fusion/client.rb, line 13
def configure
  yield self
end
new(username: nil, password: nil) click to toggle source
# File lib/fusion/client.rb, line 18
def initialize(username: nil, password: nil)
  Fusion::Client.username ||= username
  Fusion::Client.password ||= password
end

Public Instance Methods

add_job(template:, data:, proof:) click to toggle source
# File lib/fusion/client.rb, line 23
def add_job(template:, data:, proof:)
  logon

  path = "addjob?templatename=#{template}&sessionid=#{@session_id}&bReturnSingleProof=#{proof}"
  params = data
  request(:post, params, path)
end
bypass_timer(job_id:) click to toggle source
# File lib/fusion/client.rb, line 39
def bypass_timer(job_id:)
  logon

  path = 'bypasstimer'
  params = { JobID: job_id, SessionID: @session_id }
  request(:post, params, path)
end
cancel_job(job_id:) click to toggle source
# File lib/fusion/client.rb, line 31
def cancel_job(job_id:)
  logon

  path = 'canceljob'
  params = { JobID: job_id, SessionID: @session_id }
  request(:post, params, path)
end
handle_response(response, request, result) click to toggle source
# File lib/fusion/client.rb, line 66
def handle_response(response, request, result)
  case response.code
  when 200..299
    JSON.parse(response)
  when 400
    raise RestClient::BadRequest, response
  when 404
    raise RestClient::ResourceNotFound, response
  when 500
    raise RestClient::InternalServerError, response
  else
    puts response.inspect
    puts request.inspect
    raise result.to_s
  end
end
logoff() click to toggle source
# File lib/fusion/client.rb, line 83
def logoff
  return unless @session_id.present?

  path = 'logoff'
  params = { SessionID: @session_id }

  begin
    request(:post, params, path)
  rescue => e
    # We don't really care if logoff failed. Log it and move on.
    Rails.logger.debug(e.message)
  end
end
logon() click to toggle source

private

# File lib/fusion/client.rb, line 99
def logon
  return if @session_id.present?

  path = 'logon'
  params = { UserID: Client.username, Password: Client.password }
  response = request(:post, params, path)
  @session_id = response['SessionID']

  raise response['Message'].inspect unless @session_id.present?

  response
end
request(method, params, path) click to toggle source
# File lib/fusion/client.rb, line 48
def request(method, params, path)
  raise 'You need to configure Fusion::Client with your username and password.' unless Client.username && Client.password

  path ||= default_path
  url = URL
  url += path

  if params.is_a?(Hash)
    params = params.to_json
    content_type = 'application/json'
  else
    content_type = 'application/octet-stream'
  end
  RestClient::Request.execute(:method => method, :url => url, payload: params, :headers => {:accept => :json, content_type: content_type}, :timeout => nil, :verify_ssl => false) { |response, request, result, &block|
    handle_response(response, request, result)
  }
end