class SupportPal::Session

Public Class Methods

new(options) click to toggle source
Uncomment to debug output

debug_output $stdout

# File lib/supportpal.rb, line 15
def initialize(options)
  # Make a class variable
  @options = options

  # Load config
  if @options['config'] then # Can be hash with values, or path to yaml
    config = SupportPal::Configure.new(@options['config'])
  else
    config = SupportPal::Configure.new
  end
  @config = config.config
    
  # Check to ensure required options exist
  raise Error, 'You must provide a base_uri option!' if ! @options['base_uri']
  self.class.base_uri @options['base_uri']

  raise Error, 'You must provide an auth token in config!' if ! @config[:auth_token]

  # Default headers
  @auth = { username: @config[:auth_token], password: 'X' }
  @http_options = { basic_auth: @auth }
end

Public Instance Methods

add_ticket_note(ticket_id, message, options = {}) click to toggle source
# File lib/supportpal.rb, line 77
def add_ticket_note(ticket_id, message, options = {})
  params = {}
  params['text']                        = message

  params['user_id']                     = @config[:ticket_user_id]
  params['user_id']                     = options['operator_id'] if options['operator_id']
  params['user_id']                     = options['user_id'] if options['user_id']

  params['ticket_id']                   = ticket_id
  params['message_type']                = 1 # 1 = note, 0 = reply

  @http_options.merge!({ body: params })
  res = self.class.post("/api/ticket/message", @http_options)
  response = res.parsed_response
  if response['status'] == 'success' then
    return {
      :status                           => 'success',
      :message                          => response['message']
    }
  else
    return {
      :status                           => 'failure',
      :message                          => response['message']
    }
  end
end
close_ticket_by_id(ticket_id) click to toggle source
# File lib/supportpal.rb, line 104
def close_ticket_by_id(ticket_id)
  # Check if ticket_id is an integer
  @http_options.merge!({ body: { status: 2 } })
  res = self.class.put("/api/ticket/ticket/#{ticket_id}", @http_options)
  response = res.parsed_response
  if response['status'] == 'success' then
    return {
      :status                           => 'success',
      :message                          => response['message']
    }
  else
    return {
      :status                           => 'failure',
      :message                          => response['message']
    }
  end
end
open_new_ticket(subject, message, options = {}) click to toggle source
# File lib/supportpal.rb, line 43
def open_new_ticket(subject, message, options = {})
  params = {}
  params['subject']                     = subject
  params['text']                        = message

  params['user']                        = @config[:ticket_user_id]
  params['user']                        = options[:operator_id] if options[:operator_id]
  params['user']                        = options[:user_id] if options[:user_id]

  params['department']                  = (options[:department]) ? options[:department] : @config[:ticket_department_id]
  params['status']                      = (options[:status]) ? options[:status] : @config[:ticket_status]
  params['priority']                    = (options[:priority]) ? options[:priority] : @config[:ticket_priority]

  params['internal']                    = options[:internal] if options[:internal]

  params['send_user_email']             = (options[:send_user_email]) ? options[:send_user_email] : @config[:ticket_send_user_email]
  params['send_operators_email']        = (options[:send_operators_email]) ? options[:send_operators_email] : @config[:ticket_send_operators_email]

  @http_options.merge!({ body: params })
  res = self.class.post('/api/ticket/ticket', @http_options)
  response = res.parsed_response
  if response['status'] == 'success' then
    return {
      :status                           => 'success',
    :ticket_id                          => response['data']['id']
    }
  else
    return {
      :status                           => 'failure',
      :message                          => response['message']
    }
  end
end
test() click to toggle source
# File lib/supportpal.rb, line 38
def test
  puts "Base URI is #{self.class.base_uri}"
  res = self.class.get('/api/selfservice/type', @http_options)
end