Class: JSSWebHooks::Configuration

Inherits:
Object
  • Object
show all
Includes:
Singleton
Defined in:
lib/jss/webhooks/configuration.rb

Overview

The configuration object

Constant Summary collapse

DEFAULT_CONF_FILE =

The location of the default config file

Pathname.new '/etc/jsswebhooks.conf'
CONF_KEYS =

The attribute keys we maintain, and the type they should be stored as

{
  server_port: :to_i,
  server_engine:  :to_sym,
  handler_dir: :to_s,
  handler_computer_added: :to_s,
  handler_computer_check_in: :to_s,
  handler_computer_inventory_completed: :to_s,
  handler_computer_policy_finished: :to_s,
  handler_computer_push_capability_changed: :to_s,
  handler_jss_shutdown: :to_s,
  handler_jss_startup: :to_s,
  handler_mobile_device_check_in: :to_s,
  handler_mobile_device_command_complete: :to_s,
  handler_mobile_device_enrolled: :to_s,
  handler_mobile_device_push_sent: :to_s,
  handler_mobile_device_unenrolled: :to_s,
  handler_patch_software_title_updated: :to_s,
  handler_push_sent: :to_s,
  handler_rest_api_operation: :to_s,
  handler_scep_challenge: :to_s,
  handler_smart_group_computer_membership_change: :to_s,
  handler_smart_group_mobile_device_membership_change: :to_s
}.freeze

Instance Method Summary collapse

Constructor Details

#initializeConfiguration

Initialize!



83
84
85
# File 'lib/jss/webhooks/configuration.rb', line 83

def initialize
  read_global
end

Instance Method Details

#clear_allvoid

This method returns an undefined value.

Clear all values



96
97
98
# File 'lib/jss/webhooks/configuration.rb', line 96

def clear_all
  CONF_KEYS.keys.each { |k| send "#{k}=".to_sym, nil }
end

This method returns an undefined value.

Print out the current settings to stdout



169
170
171
# File 'lib/jss/webhooks/configuration.rb', line 169

def print
  CONF_KEYS.keys.sort.each { |k| puts "#{k}: #{send k}" }
end

#read_globalBoolean

(Re)read the global prefs, if it exists.

Returns:

  • (Boolean)

    was the file loaded?



105
106
107
108
# File 'lib/jss/webhooks/configuration.rb', line 105

def read_global
  return false unless DEFAULT_CONF_FILE.file? && DEFAULT_CONF_FILE.readable?
  read DEFAULT_CONF_FILE
end

#reload(file = DEFAULT_CONF_FILE) ⇒ Boolean

Clear the settings and reload the prefs file, or another file if provided

Parameters:

  • file (String, Pathname) (defaults to: DEFAULT_CONF_FILE)

    a non-standard prefs file to load

Returns:

  • (Boolean)

    was the file reloaded?



117
118
119
120
121
122
# File 'lib/jss/webhooks/configuration.rb', line 117

def reload(file = DEFAULT_CONF_FILE)
  file = Pathname.new file
  return false unless file.file? and file.readable?
  clear_all
  read file
end

#save(file) ⇒ void

This method returns an undefined value.

Save the prefs into a file

Parameters:

  • file (Symbol, String, Pathname)

    either :user, :global, or an arbitrary file to save.



131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
# File 'lib/jss/webhooks/configuration.rb', line 131

def save(file)
  path = Pathname.new(file)

  # file already exists? read it in and update the values.
  # Don't overwrite it, since the user might have comments
  # in there.
  if path.readable?
    data = path.read

    # go thru the known attributes/keys
    CONF_KEYS.keys.sort.each do |k|
      # if the key exists, update it.
      if data =~ /^#{k}:/
        data.sub!(/^#{k}:.*$/, "#{k}: #{send k}")

      # if not, add it to the end unless it's nil
      else
        data += "\n#{k}: #{send k}" unless send(k).nil?
      end # if data =~ /^#{k}:/
    end # each do |k|

  else # not readable, make a new file
    data = ''
    CONF_KEYS.keys.sort.each do |k|
      data << "#{k}: #{send k}\n" unless send(k).nil?
    end
  end # if path readable

  # make sure we end with a newline, the save it.
  data << "\n" unless data.end_with?("\n")
  path.jss_save data
end