ruby-jss 0.6.5 → 0.6.6
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 +4 -4
- data/CHANGES.md +57 -5
- data/lib/jss.rb +78 -94
- data/lib/jss/api_connection.rb +8 -0
- data/lib/jss/api_object.rb +126 -102
- data/lib/jss/api_object/creatable.rb +33 -15
- data/lib/jss/api_object/distribution_point.rb +4 -1
- data/lib/jss/api_object/extension_attribute.rb +1 -1
- data/lib/jss/api_object/package.rb +121 -187
- data/lib/jss/api_object/policy.rb +590 -251
- data/lib/jss/api_object/script.rb +92 -128
- data/lib/jss/api_object/self_servable.rb +93 -117
- data/lib/jss/api_object/updatable.rb +12 -27
- data/lib/jss/api_object/uploadable.rb +12 -15
- data/lib/jss/client.rb +178 -156
- data/lib/jss/db_connection.rb +34 -49
- data/lib/jss/ruby_extensions/string.rb +25 -21
- data/lib/jss/version.rb +1 -1
- data/lib/jss/webhooks.rb +52 -0
- data/lib/jss/webhooks/README.md +269 -0
- data/lib/jss/webhooks/configuration.rb +212 -0
- data/lib/jss/webhooks/data/sample_handlers/RestAPIOperation-executable +90 -0
- data/lib/jss/webhooks/data/sample_handlers/RestAPIOperation.rb +44 -0
- data/lib/jss/webhooks/data/sample_jsons/ComputerAdded.json +27 -0
- data/lib/jss/webhooks/data/sample_jsons/ComputerCheckIn.json +27 -0
- data/lib/jss/webhooks/data/sample_jsons/ComputerInventoryCompleted.json +27 -0
- data/lib/jss/webhooks/data/sample_jsons/ComputerPolicyFinished.json +27 -0
- data/lib/jss/webhooks/data/sample_jsons/ComputerPushCapabilityChanged.json +27 -0
- data/lib/jss/webhooks/data/sample_jsons/JSSShutdown.json +14 -0
- data/lib/jss/webhooks/data/sample_jsons/JSSStartup.json +14 -0
- data/lib/jss/webhooks/data/sample_jsons/MobileDeviceCheckIn.json +26 -0
- data/lib/jss/webhooks/data/sample_jsons/MobileDeviceCommandCompleted.json +26 -0
- data/lib/jss/webhooks/data/sample_jsons/MobileDeviceEnrolled.json +26 -0
- data/lib/jss/webhooks/data/sample_jsons/MobileDevicePushSent.json +26 -0
- data/lib/jss/webhooks/data/sample_jsons/MobileDeviceUnEnrolled.json +26 -0
- data/lib/jss/webhooks/data/sample_jsons/PatchSoftwareTitleUpdated.json +14 -0
- data/lib/jss/webhooks/data/sample_jsons/PushSent.json +11 -0
- data/lib/jss/webhooks/data/sample_jsons/RestAPIOperation.json +15 -0
- data/lib/jss/webhooks/data/sample_jsons/SCEPChallenge.json +10 -0
- data/lib/jss/webhooks/data/sample_jsons/SmartGroupComputerMembershipChange.json +13 -0
- data/lib/jss/webhooks/data/sample_jsons/SmartGroupMobileDeviceMembershipChange.json +13 -0
- data/lib/jss/webhooks/event.rb +138 -0
- data/lib/jss/webhooks/event/computer_added.rb +37 -0
- data/lib/jss/webhooks/event/computer_check_in.rb +37 -0
- data/lib/jss/webhooks/event/computer_inventory_completed.rb +37 -0
- data/lib/jss/webhooks/event/computer_policy_finished.rb +37 -0
- data/lib/jss/webhooks/event/computer_push_capability_changed.rb +37 -0
- data/lib/jss/webhooks/event/handlers.rb +191 -0
- data/lib/jss/webhooks/event/jss_shutdown.rb +37 -0
- data/lib/jss/webhooks/event/jss_startup.rb +37 -0
- data/lib/jss/webhooks/event/mobile_device_check_in.rb +37 -0
- data/lib/jss/webhooks/event/mobile_device_command_completed.rb +37 -0
- data/lib/jss/webhooks/event/mobile_device_enrolled.rb +37 -0
- data/lib/jss/webhooks/event/mobile_device_push_sent.rb +37 -0
- data/lib/jss/webhooks/event/mobile_device_unenrolled.rb +37 -0
- data/lib/jss/webhooks/event/patch_software_title_updated.rb +37 -0
- data/lib/jss/webhooks/event/push_sent.rb +37 -0
- data/lib/jss/webhooks/event/rest_api_operation.rb +37 -0
- data/lib/jss/webhooks/event/scep_challenge.rb +37 -0
- data/lib/jss/webhooks/event/smart_group_computer_membership_change.rb +37 -0
- data/lib/jss/webhooks/event/smart_group_mobile_device_membership_change.rb +37 -0
- data/lib/jss/webhooks/event/webhook.rb +39 -0
- data/lib/jss/webhooks/event_objects.rb +111 -0
- data/lib/jss/webhooks/event_objects/computer.rb +48 -0
- data/lib/jss/webhooks/event_objects/jss.rb +35 -0
- data/lib/jss/webhooks/event_objects/mobile_device.rb +47 -0
- data/lib/jss/webhooks/event_objects/patch_software_title_update.rb +37 -0
- data/lib/jss/webhooks/event_objects/push.rb +32 -0
- data/lib/jss/webhooks/event_objects/rest_api_operation.rb +36 -0
- data/lib/jss/webhooks/event_objects/scep_challenge.rb +31 -0
- data/lib/jss/webhooks/event_objects/smart_group.rb +34 -0
- data/lib/jss/webhooks/server_app.rb +36 -0
- data/lib/jss/webhooks/server_app/routes.rb +26 -0
- data/lib/jss/webhooks/server_app/routes/handle_webhook_event.rb +38 -0
- data/lib/jss/webhooks/server_app/routes/home.rb +36 -0
- data/lib/jss/webhooks/server_app/self_signed_cert.rb +64 -0
- data/lib/jss/webhooks/server_app/server.rb +59 -0
- data/lib/jss/webhooks/version.rb +31 -0
- metadata +63 -4
@@ -0,0 +1,27 @@
|
|
1
|
+
{
|
2
|
+
"webhook": {
|
3
|
+
"id": 5,
|
4
|
+
"name": "ComputerPushCapabilityChanged Webhook",
|
5
|
+
"webhookEvent": "ComputerPushCapabilityChanged"
|
6
|
+
},
|
7
|
+
"event": {
|
8
|
+
"udid": "99848AF0-xxxx-XXXX-xxxx-B79B9F65D7F8",
|
9
|
+
"deviceName": "wanderer",
|
10
|
+
"model": "MacBookPro10,1",
|
11
|
+
"macAddress": "yy:E0:yy:16:yy:E9",
|
12
|
+
"alternateMacAddress": "32:xx:1A:xx:xx:60",
|
13
|
+
"serialNumber": "VM87S764H831",
|
14
|
+
"osVersion": "10.15.2",
|
15
|
+
"osBuild": "48673",
|
16
|
+
"userDirectoryID": "-1",
|
17
|
+
"username": "username",
|
18
|
+
"realName": "User Name",
|
19
|
+
"emailAddress": "user@school.edu",
|
20
|
+
"phone": "x3369",
|
21
|
+
"position": "Apple Peeler",
|
22
|
+
"department": "MacBack",
|
23
|
+
"building": "Soho",
|
24
|
+
"room": "s167",
|
25
|
+
"jssID": 1322
|
26
|
+
}
|
27
|
+
}
|
@@ -0,0 +1,14 @@
|
|
1
|
+
{
|
2
|
+
"webhook": {
|
3
|
+
"id": 7,
|
4
|
+
"name": "JSSShutdown Webhook",
|
5
|
+
"webhookEvent": "JSSShutdown"
|
6
|
+
},
|
7
|
+
"event": {
|
8
|
+
"institution": "MyCoolSchool",
|
9
|
+
"hostAddress": "casper.mycoolschool.edu",
|
10
|
+
"webApplicationPath": "/path/to/web/app",
|
11
|
+
"isClusterMaster": true,
|
12
|
+
"jssUrl": "https://casper.mycoolschool.edu:8443/"
|
13
|
+
}
|
14
|
+
}
|
@@ -0,0 +1,14 @@
|
|
1
|
+
{
|
2
|
+
"webhook": {
|
3
|
+
"id": 8,
|
4
|
+
"name": "JSSStartup Webhook",
|
5
|
+
"webhookEvent": "JSSStartup"
|
6
|
+
},
|
7
|
+
"event": {
|
8
|
+
"institution": "MyCoolSchool",
|
9
|
+
"hostAddress": "casper.mycoolschool.edu",
|
10
|
+
"webApplicationPath": "/path/to/web/app",
|
11
|
+
"isClusterMaster": true,
|
12
|
+
"jssUrl": "https://casper.mycoolschool.edu:8443/"
|
13
|
+
}
|
14
|
+
}
|
@@ -0,0 +1,26 @@
|
|
1
|
+
{
|
2
|
+
"webhook": {
|
3
|
+
"id": 9,
|
4
|
+
"name": "MobileCheckin Webhook",
|
5
|
+
"webhookEvent": "MobileDeviceCheckIn"
|
6
|
+
},
|
7
|
+
"event": {
|
8
|
+
"udid": "0d12c74062dxyxyxb4b234f4ac1yxyxyx1efccd0",
|
9
|
+
"deviceName": "tipple",
|
10
|
+
"version": "4.71.00",
|
11
|
+
"model": "iPhone7,2",
|
12
|
+
"bluetoothMacAddress": "xx:xx:37:yy:78:xx",
|
13
|
+
"wifiMacAddress": "yy:yy:37:xx:78:yy",
|
14
|
+
"imei": "xx yyyyyy zzzzzz 0",
|
15
|
+
"icciID": "aaaa bbbb cccc dddd eeee",
|
16
|
+
"product": null,
|
17
|
+
"serialNumber": "C8EM25KSG5PT",
|
18
|
+
"userDirectoryID": "-1",
|
19
|
+
"room": "s167",
|
20
|
+
"osVersion": "9.3.4",
|
21
|
+
"osBuild": "13G35",
|
22
|
+
"modelDisplay": "iPhone 6",
|
23
|
+
"username": "username",
|
24
|
+
"jssID": 158
|
25
|
+
}
|
26
|
+
}
|
@@ -0,0 +1,26 @@
|
|
1
|
+
{
|
2
|
+
"webhook": {
|
3
|
+
"id": 10,
|
4
|
+
"name": "MobileCommandComplete Webhook",
|
5
|
+
"webhookEvent": "MobileDeviceCommandCompleted"
|
6
|
+
},
|
7
|
+
"event": {
|
8
|
+
"udid": "0d12c74062dxyxyxb4b234f4ac1yxyxyx1efccd0",
|
9
|
+
"deviceName": "tipple",
|
10
|
+
"version": "4.71.00",
|
11
|
+
"model": "iPhone7,2",
|
12
|
+
"bluetoothMacAddress": "xx:xx:37:yy:78:xx",
|
13
|
+
"wifiMacAddress": "yy:yy:37:xx:78:yy",
|
14
|
+
"imei": "xx yyyyyy zzzzzz 0",
|
15
|
+
"icciID": "aaaa bbbb cccc dddd eeee",
|
16
|
+
"product": null,
|
17
|
+
"serialNumber": "C8EM25KSG5PT",
|
18
|
+
"userDirectoryID": "-1",
|
19
|
+
"room": "s167",
|
20
|
+
"osVersion": "9.3.4",
|
21
|
+
"osBuild": "13G35",
|
22
|
+
"modelDisplay": "iPhone 6",
|
23
|
+
"username": "username",
|
24
|
+
"jssID": 158
|
25
|
+
}
|
26
|
+
}
|
@@ -0,0 +1,26 @@
|
|
1
|
+
{
|
2
|
+
"webhook": {
|
3
|
+
"id": 11,
|
4
|
+
"name": "MobileEnrolled Webhook",
|
5
|
+
"webhookEvent": "MobileDeviceEnrolled"
|
6
|
+
},
|
7
|
+
"event": {
|
8
|
+
"udid": "0d12c74062dxyxyxb4b234f4ac1yxyxyx1efccd0",
|
9
|
+
"deviceName": "tipple",
|
10
|
+
"version": "4.71.00",
|
11
|
+
"model": "iPhone7,2",
|
12
|
+
"bluetoothMacAddress": "xx:xx:37:yy:78:xx",
|
13
|
+
"wifiMacAddress": "yy:yy:37:xx:78:yy",
|
14
|
+
"imei": "xx yyyyyy zzzzzz 0",
|
15
|
+
"icciID": "aaaa bbbb cccc dddd eeee",
|
16
|
+
"product": null,
|
17
|
+
"serialNumber": "C8EM25KSG5PT",
|
18
|
+
"userDirectoryID": "-1",
|
19
|
+
"room": "s167",
|
20
|
+
"osVersion": "9.3.4",
|
21
|
+
"osBuild": "13G35",
|
22
|
+
"modelDisplay": "iPhone 6",
|
23
|
+
"username": "username",
|
24
|
+
"jssID": 158
|
25
|
+
}
|
26
|
+
}
|
@@ -0,0 +1,26 @@
|
|
1
|
+
{
|
2
|
+
"webhook": {
|
3
|
+
"id": 12,
|
4
|
+
"name": "MobilePush Webhook",
|
5
|
+
"webhookEvent": "MobileDevicePushSent"
|
6
|
+
},
|
7
|
+
"event": {
|
8
|
+
"udid": "0d12c74062dxyxyxb4b234f4ac1yxyxyx1efccd0",
|
9
|
+
"deviceName": "tipple",
|
10
|
+
"version": "4.71.00",
|
11
|
+
"model": "iPhone7,2",
|
12
|
+
"bluetoothMacAddress": "xx:xx:37:yy:78:xx",
|
13
|
+
"wifiMacAddress": "yy:yy:37:xx:78:yy",
|
14
|
+
"imei": "xx yyyyyy zzzzzz 0",
|
15
|
+
"icciID": "aaaa bbbb cccc dddd eeee",
|
16
|
+
"product": null,
|
17
|
+
"serialNumber": "C8EM25KSG5PT",
|
18
|
+
"userDirectoryID": "-1",
|
19
|
+
"room": "s167",
|
20
|
+
"osVersion": "9.3.4",
|
21
|
+
"osBuild": "13G35",
|
22
|
+
"modelDisplay": "iPhone 6",
|
23
|
+
"username": "username",
|
24
|
+
"jssID": 158
|
25
|
+
}
|
26
|
+
}
|
@@ -0,0 +1,26 @@
|
|
1
|
+
{
|
2
|
+
"webhook": {
|
3
|
+
"id": 13,
|
4
|
+
"name": "MobileUnEnrolled Webhook",
|
5
|
+
"webhookEvent": "MobileDeviceUnEnrolled"
|
6
|
+
},
|
7
|
+
"event": {
|
8
|
+
"udid": "0d12c74062dxyxyxb4b234f4ac1yxyxyx1efccd0",
|
9
|
+
"deviceName": "tipple",
|
10
|
+
"version": "4.71.00",
|
11
|
+
"model": "iPhone7,2",
|
12
|
+
"bluetoothMacAddress": "xx:xx:37:yy:78:xx",
|
13
|
+
"wifiMacAddress": "yy:yy:37:xx:78:yy",
|
14
|
+
"imei": "xx yyyyyy zzzzzz 0",
|
15
|
+
"icciID": "aaaa bbbb cccc dddd eeee",
|
16
|
+
"product": null,
|
17
|
+
"serialNumber": "C8EM25KSG5PT",
|
18
|
+
"userDirectoryID": "-1",
|
19
|
+
"room": "s167",
|
20
|
+
"osVersion": "9.3.4",
|
21
|
+
"osBuild": "13G35",
|
22
|
+
"modelDisplay": "iPhone 6",
|
23
|
+
"username": "username",
|
24
|
+
"jssID": 158
|
25
|
+
}
|
26
|
+
}
|
@@ -0,0 +1,14 @@
|
|
1
|
+
{
|
2
|
+
"webhook": {
|
3
|
+
"id": 14,
|
4
|
+
"name": "PatchSoftwareTitleUpdated Webhook",
|
5
|
+
"webhookEvent": "PatchSoftwareTitleUpdated"
|
6
|
+
},
|
7
|
+
"event": {
|
8
|
+
"name": "CoolApp",
|
9
|
+
"latestVersion": "12.4.3",
|
10
|
+
"lastUpdate": 1463054400000,
|
11
|
+
"reportUrl": "http://CoolApp.com/downloads/latest",
|
12
|
+
"jssID": 1
|
13
|
+
}
|
14
|
+
}
|
@@ -0,0 +1,15 @@
|
|
1
|
+
{
|
2
|
+
"webhook": {
|
3
|
+
"id": 16,
|
4
|
+
"name": "RestAPIOperation Webhook",
|
5
|
+
"webhookEvent": "RestAPIOperation"
|
6
|
+
},
|
7
|
+
"event": {
|
8
|
+
"operationSuccessful": true,
|
9
|
+
"objectID": 1233,
|
10
|
+
"objectName": "wanderer",
|
11
|
+
"objectTypeName": "computer",
|
12
|
+
"authorizedUsername": "username",
|
13
|
+
"restAPIOperationType": "POST"
|
14
|
+
}
|
15
|
+
}
|
@@ -0,0 +1,13 @@
|
|
1
|
+
{
|
2
|
+
"webhook": {
|
3
|
+
"id": 19,
|
4
|
+
"name": "SmartGroupMobileDeviceMembershipChange Webhook",
|
5
|
+
"webhookEvent": "SmartGroupMobileDeviceMembershipChange"
|
6
|
+
},
|
7
|
+
"event": {
|
8
|
+
"name": "OddMobileDevs",
|
9
|
+
"smartGroup": true,
|
10
|
+
"jssid": 99,
|
11
|
+
"computer": false
|
12
|
+
}
|
13
|
+
}
|
@@ -0,0 +1,138 @@
|
|
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
|
+
module JSSWebHooks
|
26
|
+
|
27
|
+
# The superclass of all webhook events.
|
28
|
+
#
|
29
|
+
# Almost all processing happens here in the Superclass. The Subclasses
|
30
|
+
# define specfic-event-related details.
|
31
|
+
# As such, the Subclasses must define these constants:
|
32
|
+
#
|
33
|
+
# HANDLER_KEY = The JSSWebHooks::Configuration key pointing to the handler
|
34
|
+
# file for this event. See Event#handle for details.
|
35
|
+
#
|
36
|
+
# OBJECT_CLASS = the JSSWebHooks::EventObjects (q.v.) class representing the
|
37
|
+
# event object with this event
|
38
|
+
#
|
39
|
+
class Event
|
40
|
+
|
41
|
+
#########################
|
42
|
+
# Class Instance Variables
|
43
|
+
|
44
|
+
# Holds a mapping of Event names as they come from the JSS to the
|
45
|
+
# Event subclasses that represent them. Will be populated
|
46
|
+
# as the event subclasses are required.
|
47
|
+
@event_to_class_names ||= {}
|
48
|
+
|
49
|
+
# Getter for @event_to_class_names
|
50
|
+
#
|
51
|
+
# @return [Hash{String => Class} a mapping of Event names as they come from
|
52
|
+
# the JSS to the JSSWebHooks::Event subclasses that represent them
|
53
|
+
#
|
54
|
+
def self.event_to_class_names
|
55
|
+
@event_to_class_names
|
56
|
+
end
|
57
|
+
|
58
|
+
# Given the raw json from the JSS webhook,
|
59
|
+
# create an object of the correct Event subclass
|
60
|
+
#
|
61
|
+
# @param [String] raw_event_json The JSON http POST content from the JSS
|
62
|
+
#
|
63
|
+
# @return [JSSWebHooks::Event subclass] the Event subclass matching the event
|
64
|
+
#
|
65
|
+
def self.parse_event(raw_event_json)
|
66
|
+
event_json = JSON.parse(raw_event_json, symbolize_names: true)
|
67
|
+
event_name = event_json[:webhook][:webhookEvent]
|
68
|
+
JSSWebHooks::Event.event_to_class_names[event_name].new event_json, raw_event_json
|
69
|
+
end
|
70
|
+
|
71
|
+
# @return [String] the raw JSON recieved from the JSS
|
72
|
+
attr_reader :raw_json
|
73
|
+
|
74
|
+
# @return [Hash] The parsed JSON recieved from the JSS
|
75
|
+
attr_reader :event_json
|
76
|
+
|
77
|
+
# @return [JSSWebHooks::WebHook] The webhook in the JSS that caused this event
|
78
|
+
attr_reader :webhook
|
79
|
+
|
80
|
+
# @return [JSSWebHooks::EventObjects class] The event object sent with the event
|
81
|
+
attr_reader :event_object
|
82
|
+
|
83
|
+
# @return [Array<Proc,Pathname>] the handlers defined for this event
|
84
|
+
attr_reader :handlers
|
85
|
+
|
86
|
+
def initialize(event_json, raw_json)
|
87
|
+
@event_json = event_json
|
88
|
+
@raw_json = raw_json
|
89
|
+
|
90
|
+
# make a WebHook instance out of the webhook data for the event
|
91
|
+
@webhook = WebHook.new(event_json[:webhook])
|
92
|
+
|
93
|
+
# make an Event Objects class instance for the event object that
|
94
|
+
# came with this event.
|
95
|
+
@event_object = self.class::OBJECT_CLASS.new(event_json[:event])
|
96
|
+
|
97
|
+
# An array of handlers for this event type.
|
98
|
+
@handlers = JSSWebHooks::Event::Handlers.event_handlers[self.class::EVENT_NAME]
|
99
|
+
@handlers ||= []
|
100
|
+
end # init
|
101
|
+
|
102
|
+
def handle
|
103
|
+
@handlers.each do |handler|
|
104
|
+
case handler
|
105
|
+
when Pathname
|
106
|
+
pipe_to_executable handler
|
107
|
+
when Proc
|
108
|
+
handle_with_proc handler
|
109
|
+
end # case
|
110
|
+
end # @handlers.each do |handler|
|
111
|
+
|
112
|
+
# the handle method should return a string, since
|
113
|
+
# it's what gets called by the Post processor
|
114
|
+
# and it's output it returned as the HTTP Result
|
115
|
+
# body.
|
116
|
+
"Processed by #{@handlers.count} handlers"
|
117
|
+
end # def handle
|
118
|
+
|
119
|
+
# TODO: have something here that
|
120
|
+
# cleans up old threads and forks
|
121
|
+
def pipe_to_executable(handler)
|
122
|
+
thread = Thread.new do
|
123
|
+
IO.popen([handler.to_s], 'w') { |h| h.puts @raw_json }
|
124
|
+
end
|
125
|
+
end
|
126
|
+
|
127
|
+
def handle_with_proc(handler)
|
128
|
+
thread = Thread.new { handler.call self }
|
129
|
+
end
|
130
|
+
|
131
|
+
end # class event
|
132
|
+
|
133
|
+
end # module
|
134
|
+
|
135
|
+
# load in the subclass definitions
|
136
|
+
Pathname.new(__FILE__).parent.+('event').children.each do |file|
|
137
|
+
require file.to_s if file.extname == '.rb'
|
138
|
+
end
|
@@ -0,0 +1,37 @@
|
|
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
|
+
module JSSWebHooks
|
26
|
+
|
27
|
+
class ComputerAddedEvent < Event
|
28
|
+
|
29
|
+
EVENT_NAME = 'ComputerAdded'.freeze
|
30
|
+
OBJECT_CLASS = JSSWebHooks::EventObjects::Computer
|
31
|
+
|
32
|
+
end # class
|
33
|
+
|
34
|
+
# map the EVENT_NAME (which comes from the JSS) with this class
|
35
|
+
JSSWebHooks::Event.event_to_class_names[ComputerAddedEvent::EVENT_NAME] = ComputerAddedEvent
|
36
|
+
|
37
|
+
end # module
|