-
Notifications
You must be signed in to change notification settings - Fork 7
/
classicapi_computer_checkin.go
77 lines (60 loc) · 2.51 KB
/
classicapi_computer_checkin.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
// classicapi_computer_checkin.go
// Jamf Pro Classic Api - Computer Checkin
// api reference: https://developer.jamf.com/jamf-pro/reference/computercheckin
// Classic API requires the structs to support an XML data structure.
package jamfpro
import (
"encoding/xml"
"fmt"
)
const uriComputerCheckin = "/JSSResource/computercheckin"
// Struct for the computer check-in settings response
// Resource
type ResourceComputerCheckin struct {
CheckInFrequency int `xml:"check_in_frequency"`
CreateStartupScript bool `xml:"create_startup_script"`
LogStartupEvent bool `xml:"log_startup_event"`
CheckForPoliciesAtStartup bool `xml:"check_for_policies_at_startup"`
ApplyComputerLevelManagedPrefs bool `xml:"apply_computer_level_managed_preferences"`
EnsureSSHIsEnabled bool `xml:"ensure_ssh_is_enabled"`
CreateLoginLogoutHooks bool `xml:"create_login_logout_hooks"`
LogUsername bool `xml:"log_username"`
CheckForPoliciesAtLoginLogout bool `xml:"check_for_policies_at_login_logout"`
ApplyUserLevelManagedPreferences bool `xml:"apply_user_level_managed_preferences"`
HideRestorePartition bool `xml:"hide_restore_partition"`
PerformLoginActionsInBackground bool `xml:"perform_login_actions_in_background"`
DisplayStatusToUser bool `xml:"display_status_to_user"`
}
// CRUD
// GetComputerCheckinInformation gets the jamf pro computer check-in settings
func (c *Client) GetComputerCheckinInformation() (*ResourceComputerCheckin, error) {
endpoint := uriComputerCheckin
var checkinSettings ResourceComputerCheckin
resp, err := c.HTTP.DoRequest("GET", endpoint, nil, &checkinSettings)
if err != nil {
return nil, fmt.Errorf(errMsgFailedGet, "computer checkin information", err)
}
if resp != nil && resp.Body != nil {
defer resp.Body.Close()
}
return &checkinSettings, nil
}
// UpdateComputerCheckinInformation updates the jamf pro computer check-in settings
func (c *Client) UpdateComputerCheckinInformation(settings *ResourceComputerCheckin) error {
endpoint := uriComputerCheckin
requestBody := struct {
XMLName xml.Name `xml:"computer_check_in"`
*ResourceComputerCheckin
}{
ResourceComputerCheckin: settings,
}
var handleResponse struct{}
resp, err := c.HTTP.DoRequest("PUT", endpoint, &requestBody, &handleResponse)
if err != nil {
return fmt.Errorf(errMsgFailedUpdate, "computer checkin information", err)
}
if resp != nil && resp.Body != nil {
defer resp.Body.Close()
}
return nil
}