Module: JSS::Locatable

Included in:
Computer, MobileDevice, Peripheral
Defined in:
lib/jss/api_object/locatable.rb,
lib/jss.rb

Overview

A mix-in module for handling location/user data for objects in the JSS.

The JSS objects that have location data return it in a :location subset, which all have basically the same data,a simple hash with these keys:

  • :building => String,

  • :department => String,

  • :email_address => String,

  • :phone => String

  • :position => String

  • :real_name => String,

  • :room => String,

  • :username => String

Including this module in an APIObject subclass will give it attributes matching those keys.

If the subclass is creatable or updatable, calling #location_xml returns a REXML element representing the location subset, to be included with the #rest_xml output of the subclass.

Constant Summary collapse

LOCATABLE =

Constants

true

Instance Attribute Summary collapse

Instance Method Summary collapse

Instance Attribute Details

#buildingString


84
85
86
# File 'lib/jss/api_object/locatable.rb', line 84

def building
  @building
end

#departmentString


87
88
89
# File 'lib/jss/api_object/locatable.rb', line 87

def department
  @department
end

#email_addressString


90
91
92
# File 'lib/jss/api_object/locatable.rb', line 90

def email_address
  @email_address
end

#phoneString


93
94
95
# File 'lib/jss/api_object/locatable.rb', line 93

def phone
  @phone
end

#positionString


96
97
98
# File 'lib/jss/api_object/locatable.rb', line 96

def position
  @position
end

#real_nameString


99
100
101
# File 'lib/jss/api_object/locatable.rb', line 99

def real_name
  @real_name
end

#roomString


102
103
104
# File 'lib/jss/api_object/locatable.rb', line 102

def room
  @room
end

#usernameString Also known as: user


105
106
107
# File 'lib/jss/api_object/locatable.rb', line 105

def username
  @username
end

Instance Method Details

#clear_locationvoid

This method returns an undefined value.

Clear all location data


245
246
247
248
249
250
251
252
253
254
255
# File 'lib/jss/api_object/locatable.rb', line 245

def clear_location
  @username = ''
  @real_name = ''
  @email_address = ''
  @position = ''
  @phone = ''
  @department  = ''
  @building = ''
  @room = ''
  @need_to_update = true
end

#has_location?Boolean


229
230
231
232
233
234
235
236
237
238
# File 'lib/jss/api_object/locatable.rb', line 229

def has_location?
  @username or \
  @real_name or \
  @email_address or \
  @position or \
  @phone or \
  @department or \
  @building or \
  @room
end

#locationHash<String>

All the location data in a Hash, as it comes from the API.

The reason it isn't stored this way is to prevent editing of the hash directly.


140
141
142
143
144
145
146
147
148
149
150
151
# File 'lib/jss/api_object/locatable.rb', line 140

def location
  {
    :building => @building,
    :department => @department,
    :email_address => @email_address,
    :phone => @phone,
    :position => @position,
    :real_name => @real_name,
    :room => @room,
    :username => @username
  }
end

#location_xmlREXML::Element

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Return a REXML <location> element to be included in the rest_xml of objects that have a Location subset


271
272
273
274
275
276
277
278
279
280
281
282
# File 'lib/jss/api_object/locatable.rb', line 271

def location_xml
  location = REXML::Element.new('location')
  location.add_element('building').text = @building
  location.add_element('department').text = @department
  location.add_element('email_address').text = @email_address
  location.add_element('position').text = @position
  location.add_element('phone').text = @phone
  location.add_element('real_name').text = @real_name
  location.add_element('room').text = @room
  location.add_element('username').text = @username
  return location
end

#parse_locationvoid

This method returns an undefined value.

Call this during initialization of objects that have a Location subset and the location attributes will be populated (as primary attributes) from @init_data


120
121
122
123
124
125
126
127
128
129
130
# File 'lib/jss/api_object/locatable.rb', line 120

def parse_location
  @init_data[:location] ||= {}
  @building = @init_data[:location][:building]
  @department = @init_data[:location][:department]
  @email_address = @init_data[:location][:email_address]
  @phone = @init_data[:location][:phone]
  @position = @init_data[:location][:position]
  @real_name = @init_data[:location][:real_name]
  @room = @init_data[:location][:room]
  @username = @init_data[:location][:username]
end