sysaid 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,96 @@
1
+ class SysAid::Ticket
2
+ # Creates a SysAid::Ticket object
3
+ #
4
+ # Example:
5
+ # >> SysAid::Ticket.new
6
+ # => SysAid::Ticket
7
+ #
8
+ # Arguments:
9
+ # service_request: (ApiServiceRequest object, optional)
10
+ def initialize(service_request = nil)
11
+ @sr = service_request
12
+
13
+ if service_request.nil?
14
+ @sr = ApiServiceRequest.new
15
+ end
16
+
17
+ set_self_from_sr
18
+ end
19
+
20
+ # Saves a ticket back to the SysAid server
21
+ #
22
+ # Example:
23
+ # >> ticket_object.save
24
+ # => true
25
+ def save
26
+ if SysAid.logged_in? == false
27
+ raise "You must create a SysAid instance and log in before attempting to create a ticket."
28
+ end
29
+
30
+ # Save public variables back to the ApiServiceRequest (@sr) variable
31
+ set_sr_from_self
32
+
33
+ # Save it via the SOAP API
34
+ result = SysAid.service.save({:sessionId => SysAid.session_id, :apiSysObj => @sr})
35
+ if result.v_return.to_i > 0
36
+ self.instance_variable_set(:@id, result.v_return.to_i)
37
+ @sr.instance_variable_set(:@id, result.v_return.to_i)
38
+ return true
39
+ else
40
+ return false
41
+ end
42
+ end
43
+
44
+ # Deletes a ticket from the SysAid server
45
+ #
46
+ # Example:
47
+ # >> ticket_object.delete
48
+ # => true
49
+ def delete
50
+ unless @sr.instance_variable_get(:@id).nil?
51
+ SysAid.service.delete({:sessionId => SysAid.session_id, :apiSysObj => @sr})
52
+
53
+ return true
54
+ end
55
+
56
+ false
57
+ end
58
+
59
+ # For dynamically creating attr_accessors
60
+ # (from http://stackoverflow.com/questions/4082665/dynamically-create-class-attributes-with-attr-accessor)
61
+ def create_method( name, &block )
62
+ self.class.send( :define_method, name, &block )
63
+ end
64
+
65
+ def create_attr( name )
66
+ create_method( "#{name}=".to_sym ) { |val|
67
+ instance_variable_set( "@" + name, val)
68
+ }
69
+
70
+ create_method( name.to_sym ) {
71
+ instance_variable_get( "@" + name )
72
+ }
73
+ end
74
+
75
+ private
76
+ # Note: We sync between @sr and our instance variables for API convenience, i.e.
77
+ # so one can say, ticket.title = "something" instead of
78
+ # ticket.instance_variable_get(:@sr).instance_variable_set(:@title, "something").
79
+
80
+ # Updates instance variables to match what is in @sr
81
+ def set_self_from_sr
82
+ @sr_symbols = []
83
+ @sr.instance_variables.each do |field|
84
+ @sr_symbols << field
85
+ self.create_attr(field.to_s[1..-1])
86
+ self.instance_variable_set(field, @sr.instance_variable_get(field.to_sym))
87
+ end
88
+ end
89
+
90
+ # Updates @sr to match what is in our instance variables
91
+ def set_sr_from_self
92
+ @sr_symbols.each do |symbol|
93
+ @sr.instance_variable_set(symbol, self.instance_variable_get(symbol))
94
+ end
95
+ end
96
+ end
metadata ADDED
@@ -0,0 +1,66 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: sysaid
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - Christopher Thielen
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2012-06-12 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: mumboe-soap4r
16
+ requirement: !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
21
+ version: 1.5.8.5
22
+ type: :runtime
23
+ prerelease: false
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ! '>='
28
+ - !ruby/object:Gem::Version
29
+ version: 1.5.8.5
30
+ description: A wrapper for the SysAid SOAP API
31
+ email: cmthielen@ucdavis.edu
32
+ executables: []
33
+ extensions: []
34
+ extra_rdoc_files: []
35
+ files:
36
+ - lib/sysaid.rb
37
+ - lib/sysaid/ticket.rb
38
+ - lib/sysaid/driver/SysaidApiServiceService.rb
39
+ - lib/sysaid/driver/SysaidApiServiceServiceClient.rb
40
+ - lib/sysaid/driver/SysaidApiServiceServiceDriver.rb
41
+ - lib/sysaid/driver/SysaidApiServiceServiceMappingRegistry.rb
42
+ homepage: https://github.com/cthielen/ruby-sysaid
43
+ licenses: []
44
+ post_install_message:
45
+ rdoc_options: []
46
+ require_paths:
47
+ - lib
48
+ required_ruby_version: !ruby/object:Gem::Requirement
49
+ none: false
50
+ requirements:
51
+ - - ! '>='
52
+ - !ruby/object:Gem::Version
53
+ version: '0'
54
+ required_rubygems_version: !ruby/object:Gem::Requirement
55
+ none: false
56
+ requirements:
57
+ - - ! '>='
58
+ - !ruby/object:Gem::Version
59
+ version: '0'
60
+ requirements: []
61
+ rubyforge_project:
62
+ rubygems_version: 1.8.23
63
+ signing_key:
64
+ specification_version: 3
65
+ summary: ruby-sysaid
66
+ test_files: []