ruby-jss 0.6.4 → 0.6.5

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of ruby-jss might be problematic. Click here for more details.

checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 6681d7531f34a10d2ba31f13428c9391446a15ec
4
- data.tar.gz: 80fae35e805326660e8cf0372ba14fd3bb3652f5
3
+ metadata.gz: edccb1a8e4436aae8603aecc748d5cd817115144
4
+ data.tar.gz: 7f169bdfa8623ee12699e241872ddee9259d19b9
5
5
  SHA512:
6
- metadata.gz: fd89d7e838147899adcbed3042d795a632e182428567bb675965fa3850eb3956a30b4c8e975b453f77ac52e5ba97ada2cbdb950ac3ae1b409b8414ca898a30de
7
- data.tar.gz: f755fabd0f11caddb9d20291842f774d141aa51c935d7e9cb0bacf5a0db58a1270aa7195546d8211c20f8d00786cc5f2e52265ca4d730210aaf439a387500018
6
+ metadata.gz: a25d238371cdfd1157b3e11320002ac10f6da9b90acf4b10cadfba5f54cc932d0b3d4525d22f3e471f318b778ed0c45afc987a560bb08afd3a86b0eec66bb19a
7
+ data.tar.gz: 48f2c4bc65aad055eb5e84eb3ef2a195706d4253cdb7b4a0ba3675d76fea364921ef7fb79002e78aea358138a4dd3b19056a4b1f425b4589cb3b5a3e2b929f3b
data/lib/jss.rb CHANGED
@@ -159,6 +159,7 @@ module JSS
159
159
 
160
160
  ### APIObject Classes without SubClasses
161
161
 
162
+ class Account < JSS::APIObject ; end
162
163
  class Building < JSS::APIObject ; end
163
164
  class Category < JSS::APIObject ; end
164
165
  class Computer < JSS::APIObject ; end
@@ -168,11 +169,13 @@ module JSS
168
169
  class MobileDevice < JSS::APIObject ; end
169
170
  class NetBootServer < JSS::APIObject ; end
170
171
  class NetworkSegment < JSS::APIObject ; end
172
+ class OSXConfigurationProfile < JSS::APIObject ; end
171
173
  class Package < JSS::APIObject ; end
172
174
  class PeripheralType < JSS::APIObject ; end
173
175
  class Peripheral < JSS::APIObject ; end
174
176
  class Policy < JSS::APIObject ; end
175
177
  class RemovableMacAddress < JSS::APIObject ; end
178
+ class RestrictedSoftware < JSS::APIObject ; end
176
179
  class Script < JSS::APIObject ; end
177
180
  class Site < JSS::APIObject ; end
178
181
  class SoftwareUpdateServer < JSS::APIObject ; end
@@ -1,25 +1,25 @@
1
1
  ### Copyright 2016 Pixar
2
- ###
2
+ ###
3
3
  ### Licensed under the Apache License, Version 2.0 (the "Apache License")
4
4
  ### with the following modification; you may not use this file except in
5
5
  ### compliance with the Apache License and the following modification to it:
6
6
  ### Section 6. Trademarks. is deleted and replaced with:
7
- ###
7
+ ###
8
8
  ### 6. Trademarks. This License does not grant permission to use the trade
9
9
  ### names, trademarks, service marks, or product names of the Licensor
10
10
  ### and its affiliates, except as required to comply with Section 4(c) of
11
11
  ### the License and to reproduce the content of the NOTICE file.
12
- ###
12
+ ###
13
13
  ### You may obtain a copy of the Apache License at
14
- ###
14
+ ###
15
15
  ### http://www.apache.org/licenses/LICENSE-2.0
16
- ###
16
+ ###
17
17
  ### Unless required by applicable law or agreed to in writing, software
18
18
  ### distributed under the Apache License with the above modification is
19
19
  ### distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
20
20
  ### KIND, either express or implied. See the Apache License for the specific
21
21
  ### language governing permissions and limitations under the Apache License.
22
- ###
22
+ ###
23
23
  ###
24
24
 
25
25
  ###
@@ -235,11 +235,11 @@ module JSS
235
235
  self.all(refresh).each{|i| h[i[:id]] = i[other_key]}
236
236
  h
237
237
  end
238
-
239
-
238
+
239
+
240
240
  ### Return an Array of JSS::APIObject subclass instances
241
241
  ### e.g when called on JSS::Package, return all JSS::Package
242
- ### objects in the JSS.
242
+ ### objects in the JSS.
243
243
  ###
244
244
  ### NOTE: This may be slow as it has to look up each object individually!
245
245
  ### use it wisely.
@@ -251,11 +251,11 @@ module JSS
251
251
  objects_key = "#{self::RSRC_LIST_KEY}_objects".to_sym
252
252
  @@all_items[objects_key] = nil if refresh
253
253
  return @@all_items[objects_key] if @@all_items[objects_key]
254
- @@all_items[objects_key] = self.all(refresh = false).map{|o| self.new :id => o[:id]}
254
+ @@all_items[objects_key] = self.all(refresh = false).map{|o| self.new :id => o[:id]}
255
255
  end
256
-
257
-
258
-
256
+
257
+
258
+
259
259
  ###
260
260
  ### Convert an Array of Hashes of API object data to a
261
261
  ### REXML element.
@@ -439,7 +439,7 @@ module JSS
439
439
  @name = args[:name]
440
440
  @init_data = {:name => args[:name]}
441
441
  @in_jss = false
442
- @rest_rsrc = "#{self.class::RSRC_BASE}/name/#{URI.escape @name}"
442
+ @rest_rsrc = "#{self.class::RSRC_BASE}/name/#{CGI.escape @name}"
443
443
  @need_to_update = true
444
444
  return
445
445
 
@@ -488,13 +488,13 @@ module JSS
488
488
  # many things have a :site
489
489
  if @main_subset[:site]
490
490
  @site = JSS::APIObject.get_name( @main_subset[:site])
491
- end
492
-
491
+ end
492
+
493
493
  # many things have a :category
494
494
  if @main_subset[:category]
495
- @category = JSS::APIObject.get_name( @main_subset[:category])
495
+ @category = JSS::APIObject.get_name( @main_subset[:category])
496
496
  end
497
-
497
+
498
498
  # set empty strings to nil
499
499
  @init_data.jss_nillify! '', :recurse
500
500
 
@@ -540,7 +540,7 @@ module JSS
540
540
  def delete
541
541
  return nil unless @in_jss
542
542
  JSS::API.delete_rsrc @rest_rsrc
543
- @rest_rsrc = "#{self.class::RSRC_BASE}/name/#{URI.escape @name}"
543
+ @rest_rsrc = "#{self.class::RSRC_BASE}/name/#{CGI.escape @name}"
544
544
  @id = nil
545
545
  @in_jss = false
546
546
  @need_to_update = false
@@ -565,11 +565,11 @@ module JSS
565
565
  return doc.to_s
566
566
  end
567
567
 
568
-
568
+
569
569
  ### Aliases
570
-
570
+
571
571
  alias in_jss? in_jss
572
-
572
+
573
573
  end # class APIObject
574
574
 
575
575
 
@@ -584,6 +584,7 @@ require "jss/api_object/matchable"
584
584
  require "jss/api_object/purchasable"
585
585
  require "jss/api_object/updatable"
586
586
  require "jss/api_object/extendable"
587
+ require "jss/api_object/self_servable"
587
588
 
588
589
  ### Mix-in Sub Modules with Classes
589
590
  require "jss/api_object/criteriable"
@@ -595,22 +596,25 @@ require "jss/api_object/extension_attribute"
595
596
  require "jss/api_object/group"
596
597
 
597
598
  ### APIObject SubClasses without SubClasses
599
+ require "jss/api_object/account"
598
600
  require "jss/api_object/building"
599
601
  require "jss/api_object/category"
600
602
  require "jss/api_object/computer"
603
+ require "jss/api_object/computer_invitation"
601
604
  require "jss/api_object/department"
602
605
  require "jss/api_object/distribution_point"
603
606
  require "jss/api_object/ldap_server"
604
607
  require "jss/api_object/mobile_device"
605
608
  require "jss/api_object/netboot_server"
606
609
  require "jss/api_object/network_segment"
610
+ require "jss/api_object/osx_configuration_profile"
607
611
  require "jss/api_object/package"
608
612
  require "jss/api_object/peripheral_type"
609
613
  require "jss/api_object/peripheral"
610
614
  require "jss/api_object/policy"
611
615
  require "jss/api_object/removable_macaddr"
616
+ require "jss/api_object/restricted_software"
612
617
  require "jss/api_object/script"
613
618
  require "jss/api_object/site"
614
619
  require "jss/api_object/software_update_server"
615
620
  require "jss/api_object/user"
616
-
@@ -0,0 +1,160 @@
1
+ ### Copyright 2016 Pixar
2
+ ###
3
+ ### Licensed under the Apache License, Version 2.0 (the "Apache License")
4
+ ### with the following modification; you may not use this file except in
5
+ ### compliance with the Apache License and the following modification to it:
6
+ ### Section 6. Trademarks. is deleted and replaced with:
7
+ ###
8
+ ### 6. Trademarks. This License does not grant permission to use the trade
9
+ ### names, trademarks, service marks, or product names of the Licensor
10
+ ### and its affiliates, except as required to comply with Section 4(c) of
11
+ ### the License and to reproduce the content of the NOTICE file.
12
+ ###
13
+ ### You may obtain a copy of the Apache License at
14
+ ###
15
+ ### http://www.apache.org/licenses/LICENSE-2.0
16
+ ###
17
+ ### Unless required by applicable law or agreed to in writing, software
18
+ ### distributed under the Apache License with the above modification is
19
+ ### distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
20
+ ### KIND, either express or implied. See the Apache License for the specific
21
+ ### language governing permissions and limitations under the Apache License.
22
+ ###
23
+ ###
24
+
25
+ ###
26
+ module JSS
27
+
28
+ #####################################
29
+ ### Module Variables
30
+ #####################################
31
+
32
+ #####################################
33
+ ### Module Methods
34
+ #####################################
35
+
36
+ #####################################
37
+ ### Classes
38
+ #####################################
39
+
40
+ ###
41
+ ### A User in the JSS.
42
+ ###
43
+ ### @see JSS::APIObject
44
+ ###
45
+ class Account < JSS::APIObject
46
+
47
+ ### Note: This class is not fully extended and since the resource
48
+ ### is different than the rest, methods like JSS::Account.all do not work
49
+
50
+ #####################################
51
+ ### Mix-Ins
52
+ #####################################
53
+
54
+ #####################################
55
+ ### Class Methods
56
+ #####################################
57
+
58
+ ### @return [Array<Hash>] all JSS account users
59
+ def self.all_users(refresh = false)
60
+ self.all(refresh)[:users]
61
+ end
62
+
63
+ ### @return [Array<Hash>] all JSS account user ids
64
+ def self.all_user_ids(refresh = false)
65
+ self.all(refresh)[:users].map{|i| i[:id]}
66
+ end
67
+
68
+ ### @return [Array<Hash>] all JSS account user names
69
+ def self.all_user_names(refresh = false)
70
+ self.all(refresh)[:users].map{|i| i[:name]}
71
+ end
72
+
73
+ ### @return [Array<Hash>] all JSS account groups
74
+ def self.all_groups(refresh = false)
75
+ self.all(refresh)[:groups]
76
+ end
77
+
78
+ ### @return [Array<Hash>] all JSS account group ids
79
+ def self.all_group_ids(refresh = false)
80
+ self.all(refresh)[:groups].map{|i| i[:id]}
81
+ end
82
+
83
+ ### @return [Array<Hash>] all JSS account group names
84
+ def self.all_group_names(refresh = false)
85
+ self.all(refresh)[:groups].map{|i| i[:name]}
86
+ end
87
+
88
+ #####################################
89
+ ### Class Constants
90
+ #####################################
91
+
92
+ ### The base for REST resources of this class
93
+ RSRC_BASE = "accounts"
94
+
95
+ ### the hash key used for the JSON list output of all objects in the JSS
96
+ RSRC_LIST_KEY = :accounts
97
+
98
+ ### The hash key used for the JSON object output.
99
+ ### It's also used in various error messages
100
+ RSRC_OBJECT_KEY = :account
101
+
102
+ #####################################
103
+ ### Attributes
104
+ #####################################
105
+
106
+ ### @return [String] The user's full name
107
+ attr_reader :full_name
108
+
109
+ ### @return [String] The user's email address
110
+ attr_reader :email
111
+
112
+ ### @return [String] The user's access level
113
+ attr_reader :access_level
114
+
115
+ ### @return [String] The user's privilege set
116
+ attr_reader :privilege_set
117
+
118
+ ### @return [Hash]
119
+ ###
120
+ ### Info about the privileges assigned to the user
121
+ ###
122
+ ### Note: these arrays may be empty, they always exist
123
+ ###
124
+ ### The Hash keys are:
125
+ ### * :jss_objects => An array of jss_object privileges
126
+ ### * :jss_settings => An array of jss_settings privileges
127
+ ### * :jss_actions => An array of jss_actions privileges
128
+ ### * :recon => An array of Casper Recon privileges
129
+ ### * :casper_admin => An array of Casper Admin privileges
130
+ ### * :casper_remote => An array of Casper Remote privileges
131
+ ### * :casper_imaging => An array of Casper Imaging privileges
132
+ attr_reader :privileges
133
+
134
+ #####################################
135
+ ### Constructor
136
+ #####################################
137
+
138
+ ###
139
+ ### See JSS::APIObject#initialize
140
+ ###
141
+ def initialize (args = {})
142
+ super args, [:userid, :username, :groupid, :groupname]
143
+
144
+ # check to see if a user has been specified, haven't built groups yet
145
+ is_user = [:userid, :username].any? { |key| args.keys.include? key }
146
+
147
+ if is_user
148
+ @user_name = @init_data[:name]
149
+ @full_name = @init_data[:full_name]
150
+ @email = @init_data[:email]
151
+ @access_level = @init_data[:access_level]
152
+ @privilege_set = @init_data[:privilege_set]
153
+ @privileges = @init_data[:privileges]
154
+ end
155
+
156
+ end # initialize
157
+
158
+ end # class accounts
159
+
160
+ end # module
@@ -1,25 +1,25 @@
1
1
  ### Copyright 2016 Pixar
2
- ###
2
+ ###
3
3
  ### Licensed under the Apache License, Version 2.0 (the "Apache License")
4
4
  ### with the following modification; you may not use this file except in
5
5
  ### compliance with the Apache License and the following modification to it:
6
6
  ### Section 6. Trademarks. is deleted and replaced with:
7
- ###
7
+ ###
8
8
  ### 6. Trademarks. This License does not grant permission to use the trade
9
9
  ### names, trademarks, service marks, or product names of the Licensor
10
10
  ### and its affiliates, except as required to comply with Section 4(c) of
11
11
  ### the License and to reproduce the content of the NOTICE file.
12
- ###
12
+ ###
13
13
  ### You may obtain a copy of the Apache License at
14
- ###
14
+ ###
15
15
  ### http://www.apache.org/licenses/LICENSE-2.0
16
- ###
16
+ ###
17
17
  ### Unless required by applicable law or agreed to in writing, software
18
18
  ### distributed under the Apache License with the above modification is
19
19
  ### distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
20
20
  ### KIND, either express or implied. See the Apache License for the specific
21
21
  ### language governing permissions and limitations under the Apache License.
22
- ###
22
+ ###
23
23
  ###
24
24
 
25
25
  ###
@@ -319,7 +319,7 @@ module JSS
319
319
 
320
320
  ### @return [String] the barcodes
321
321
  attr_reader :barcode_1, :barcode_2
322
-
322
+
323
323
 
324
324
  ### @return [String] The name of the distribution point for this computer
325
325
  attr_reader :distribution_point
@@ -359,7 +359,7 @@ module JSS
359
359
 
360
360
  ### @return [String] the serial number
361
361
  attr_reader :serial_number
362
-
362
+
363
363
 
364
364
  ### @return [Hash] the :name and :id of the site for this machine
365
365
  attr_reader :site
@@ -593,16 +593,34 @@ module JSS
593
593
  def local_accounts
594
594
  @groups_accounts[:local_accounts]
595
595
  end
596
-
597
596
 
597
+
598
+ ### @return [Boolean] is FileVault2 enabled?
598
599
  ###
600
+ def filevault2_enabled?
601
+ boot_drive[:partition][:filevault2_status] != "Not Encrypted"
602
+ end
603
+
604
+ ### @return [Array<Hash>] The local_accounts Array that have Legacy FV enabled
605
+ ###
606
+ def filevault1_accounts
607
+ return [] if filevault2_enabled?
608
+ local_accounts.select{ |a| a[:filevault_enabled] }
609
+ end
610
+
599
611
  ### @return [Array<Hash>] each storage device
600
612
  ###
601
613
  def drives
602
614
  @hardware[:storage]
603
615
  end
604
616
 
617
+ ### @return [Hash, nil] The hardware[:storage] hash of the boot drive
605
618
  ###
619
+ def boot_drive
620
+ drives.each{ |d| return d if d[:partition][:type] == "boot" }
621
+ return nil
622
+ end
623
+
606
624
  ### @return [Array<Hash>] each printer on this computer
607
625
  ### Keys are :name, :uri, :type, :location
608
626
  ###
@@ -755,8 +773,8 @@ module JSS
755
773
  @purchasing = nil
756
774
  @software = nil
757
775
  end #delete
758
-
759
-
776
+
777
+
760
778
  # Not Functional until I get more docs from JAMF
761
779
  #
762
780
  # ###
@@ -786,7 +804,7 @@ module JSS
786
804
  # alias erase erase_device
787
805
  # alias wipe erase_device
788
806
 
789
-
807
+
790
808
  ### aliases
791
809
  alias alt_macaddress alt_mac_address
792
810
  alias bar_code_1 barcode_1
@@ -0,0 +1,206 @@
1
+ ### Copyright 2016 Pixar
2
+ ###
3
+ ### Licensed under the Apache License, Version 2.0 (the "Apache License")
4
+ ### with the following modification; you may not use this file except in
5
+ ### compliance with the Apache License and the following modification to it:
6
+ ### Section 6. Trademarks. is deleted and replaced with:
7
+ ###
8
+ ### 6. Trademarks. This License does not grant permission to use the trade
9
+ ### names, trademarks, service marks, or product names of the Licensor
10
+ ### and its affiliates, except as required to comply with Section 4(c) of
11
+ ### the License and to reproduce the content of the NOTICE file.
12
+ ###
13
+ ### You may obtain a copy of the Apache License at
14
+ ###
15
+ ### http://www.apache.org/licenses/LICENSE-2.0
16
+ ###
17
+ ### Unless required by applicable law or agreed to in writing, software
18
+ ### distributed under the Apache License with the above modification is
19
+ ### distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
20
+ ### KIND, either express or implied. See the Apache License for the specific
21
+ ### language governing permissions and limitations under the Apache License.
22
+ ###
23
+ ###
24
+
25
+ ###
26
+ module JSS
27
+
28
+ #####################################
29
+ ### Module Constants
30
+ #####################################
31
+
32
+ #####################################
33
+ ### Module Variables
34
+ #####################################
35
+
36
+ #####################################
37
+ ### Module Methods
38
+ #####################################
39
+
40
+ ###
41
+ ### This class represents a Computer Invitation in the JSS.
42
+ ###
43
+ ### ===Adding Computer Invitations to the JSS
44
+ ###
45
+ ### This class is meant only to generate and hold the response of creating
46
+ ### an invitation.
47
+ ###
48
+ ### @see APIObject
49
+ ### @see Creatable
50
+ ###
51
+
52
+ class ComputerInvitation < JSS::APIObject
53
+
54
+ #####################################
55
+ ### MixIns
56
+ #####################################
57
+
58
+ include JSS::Creatable
59
+
60
+ #####################################
61
+ ### Class Variables
62
+ #####################################
63
+
64
+ #####################################
65
+ ### Class Methods
66
+ #####################################
67
+
68
+ #####################################
69
+ ### Class Constants
70
+ #####################################
71
+
72
+ ### The base for REST resources of this class
73
+ RSRC_BASE = "computerinvitations"
74
+
75
+ ### the hash key used for the JSON list output of all objects in the JSS
76
+ RSRC_LIST_KEY = :computer_invitations
77
+
78
+ ### The hash key used for the JSON object output.
79
+ ### It's also used in various error messages
80
+ RSRC_OBJECT_KEY = :computer_invitation
81
+
82
+ ### these keys, as well as :id and :name, are present in valid API JSON data for this class
83
+ VALID_DATA_KEYS = [:invitation]
84
+
85
+ #####################################
86
+ ### Attributes
87
+ #####################################
88
+
89
+ ### The values returned in the General, Location, and Purchasing subsets are stored as direct attributes
90
+ ### Location and Purchasing are defined in the Locatable and Purchasable mixin modules.
91
+ ### Here's General, in alphabetical order
92
+
93
+ ### @return [String] the invitation name
94
+ attr_reader :name
95
+
96
+ ### @return [String] the invitation type
97
+ ###
98
+ ### Valid values are: URL and EMAIL. Will default to DEFAULT.
99
+ attr_accessor :invitation_type
100
+
101
+ ### @return [String] whether or not to create the account if required
102
+ ###
103
+ ### "true" or "false" are valid values.
104
+ attr_accessor :create_account_if_does_not_exist
105
+
106
+ ### @return [String]
107
+ ###
108
+ ### Time since epoch that the invitation will expire at.
109
+ ###
110
+ ### Note: defaults to "Unlimited", so only set if it should expire.
111
+ attr_accessor :expiration_date_epoch
112
+
113
+ ### @return [String]
114
+ ###
115
+ ### The username of the ssh user to be created.
116
+ ###
117
+ ### REQUIRED for valid setup.
118
+ attr_accessor :ssh_username
119
+
120
+ ### @return [String]
121
+ ###
122
+ ### The whether or not to hide the ssh user.
123
+ attr_accessor :hide_account
124
+
125
+ ### @return [String]
126
+ ###
127
+ ### The invitation_status.
128
+ attr_accessor :invitation_status
129
+
130
+ ### @return [String]
131
+ ###
132
+ ### Whether the invitation can be used multiple times (boolean).
133
+ attr_accessor :multiple_uses_allowed
134
+
135
+ #####################################
136
+ ### Public Instance Methods
137
+ #####################################
138
+
139
+ ###
140
+ ### @see APIObject#initialize
141
+ ###
142
+ def initialize(args = {
143
+ id: :new,
144
+ name: "some_new_name",
145
+ ssh_username: "casper_remote",
146
+ hide_account: "true" } )
147
+
148
+ super args, []
149
+
150
+ @name = @init_data[:invitation]
151
+ @invitation_type = @init_data[:invitation_type]
152
+ @create_account_if_does_not_exist = @init_data[:create_account_if_does_not_exist]
153
+ @expiration_date_epoch = @init_data[:expiration_date_epoch] || args[:expiration_date_epoch]
154
+ @ssh_username = @init_data[:ssh_username] || args[:ssh_username]
155
+ @hide_account = @init_data[:hide_account] || args[:hide_account]
156
+ @invitation_status = @init_data[:invitation_status] || args[:invitation_status]
157
+ @multiple_uses_allowed = @init_data[:multiple_uses_allowed] || args[:multiple_uses_allowed]
158
+ end
159
+
160
+ #####################################
161
+ ### Public Class Methods
162
+ #####################################
163
+
164
+ ###
165
+ ### Needed to support creation of new Computer Invitations to set their name.
166
+ ###
167
+ ### @return [JSS::ComputerInvitation]
168
+ ###
169
+ def create
170
+ new_invitation_id = super
171
+
172
+ jss_me = ComputerInvitation.new(id: new_invitation_id, name: 'set_by_request')
173
+ @name = jss_me.name
174
+ @invitation_type = jss_me.invitation_type
175
+ @create_account_if_does_not_exist = jss_me.create_account_if_does_not_exist
176
+ @expiration_date_epoch = jss_me.expiration_date_epoch
177
+ @ssh_username = jss_me.ssh_username
178
+ @hide_account = jss_me.hide_account
179
+ @invitation_status = jss_me.invitation_status
180
+ @multiple_uses_allowed = jss_me.multiple_uses_allowed
181
+ end
182
+
183
+ #####################################
184
+ ### Private Instance Methods
185
+ #####################################
186
+ private
187
+
188
+ ###
189
+ ### Sets invitation expiration 4 hours after request.
190
+ ###
191
+ def rest_xml
192
+ doc = REXML::Document.new APIConnection::XML_HEADER
193
+ obj = doc.add_element RSRC_OBJECT_KEY.to_s
194
+ obj.add_element('invitation_type').text = invitation_type
195
+ obj.add_element('create_account_if_does_not_exist').text = create_account_if_does_not_exist
196
+ if expiration_date_epoch
197
+ obj.add_element('expiration_date_epoch').text = expiration_date_epoch
198
+ end
199
+ obj.add_element('ssh_username').text = ssh_username
200
+ obj.add_element('hide_account').text = hide_account
201
+ obj.add_element('invitation_status').text = invitation_status
202
+ obj.add_element('multiple_uses_allowed').text = multiple_uses_allowed
203
+ return doc.to_s
204
+ end
205
+ end
206
+ end