SysAid SOAP API wrapper for Ruby
Ruby
Switch branches/tags
Nothing to show
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
lib
.gitignore
AUTHORS
ChangeLog.md
LICENSE
README.md
Rakefile
sysaid.gemspec

README.md

Description

ruby-sysaid is a Ruby-based wrapper for the SysAid SOAP API. It abstracts the nonsense that is dealing with SOAP in Ruby and provides a clean interface for dealing with SysAid API objects.

Installation

(Tested with Ruby 1.9.3, 2.0.x, 2.1.x)

Simply type:

gem install sysaid

If you're using Bundler add:

gem 'sysaid'

to your Gemfile.

If you'd like to build the gem from source:

gem build ./sysaid.gemspec
gem install ./sysaid-*.gem

(You may have to specify the specific version above, i.e. sysaid-0.1.0.gem.)

Usage

require 'sysaid'

SysAid::login "account", "username", "password", "wsdl_uri"

# Find a ticket by ID and change its title

ticket = SysAid::Ticket.find_by_id(123456)
if ticket
  puts "Ticket found. Title is: #{ticket.title}"

  ticket.title = "My title has changed."

  if ticket.save
    puts "Ticket saved successfully."
  else
    puts "Could not save ticket."
  end
else
  puts "Could not find ticket."
end


# Find all tickets by a status

tickets = SysAid::Ticket.find_by_query("status IN (1, 2, 3)")
if tickets
  puts "Found #{tickets.length} tickets."
else
  puts "Could not find any tickets."
end



# Create user 'deleteme' if he doesn't exist, delete him if he does

user = SysAid::User.find_by_username('deleteme')
unless user
  puts "Could not find user 'deleteme'. Creating..."

  user = SysAid::User.new('deleteme')
  if user.save
    puts "User saved successfully"
  else
    puts "Could not save user"
  end
else
  puts "User 'deleteme' found. Deleting."

  user.delete
end

# You could also have changed the user's name, e.g.
# user.first_name = "Don't Delete"
# user.save


# Find IDs of projects whose status = 2 (2 = Active)
projects = SysAid::Project.find_by_query("status=2")

if projects
  puts "== These projects are ACTIVE =="
  projects.each do |proj_id|
    project = SysAid::Project.find_by_id(proj_id)

    puts project.title
  end
end


# Find IDs of tasks whose project_id = 25
tasks = SysAid::Task.find_by_project_id(25)

if tasks
  puts "== These tasks are in project 25 =="
  tasks.each do |task_id|
    task = SysAid::Tasks.find_by_id(task_id)

    puts task.title
  end
end


# Find all activities related to ticket ID 12345
activity_ids = SysAid::Activity.find_by_ticket_id("12345")

if activity_ids
  activity_ids.each do |activity_id|
    activity = SysAid::Activity.find_by_id(activity_id)
    puts activity.description
  end
end

Error Handling

ruby-sysaid will throw a SysAidException exception on any problems it catches.

It is recommended you wrap all your SysAid code with a check for this exception, e.g.

begin
    activity_ids = SysAid::Activity.find_by_ticket_id("12345")
rescue SysAidException => e
    puts "SysAid error: #{e.message}"
end

Additional

Please file any bugs at https://github.com/cthielen/ruby-sysaid/issues.

Written by Christopher Thielen for the University of California Davis.

Available under the MIT license.

Version 0.3.5 Last updated: Monday, January 11, 2016