Skip to content

Commit

Permalink
Merge pull request #186 from deploymenttheory/dev
Browse files Browse the repository at this point in the history
changed response struct to be dedicated for create and update
  • Loading branch information
ShocOne authored Jan 31, 2024
2 parents e50377a + d9e06dd commit 8a27bad
Show file tree
Hide file tree
Showing 7 changed files with 119 additions and 13 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ func main() {
}

// The ID of the computer prestage you want to delete
prestageID := "YOUR_PRESTAGE_ID_HERE"
prestageID := "1"

// Call DeleteComputerPrestageByID to delete the prestage
err = client.DeleteComputerPrestageByID(prestageID)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ func main() {
}

// ID of the computer prestage you want to retrieve
prestageID := "11" // Replace with the actual ID
prestageID := "7" // Replace with the actual ID

// Call the GetComputerPrestageByID function
prestage, err := client.GetComputerPrestageByID(prestageID)
Expand Down
8 changes: 7 additions & 1 deletion examples/printers/CreatePrinters/CreatePrinters.go
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package main

import (
"encoding/xml"
"fmt"
"log"

Expand Down Expand Up @@ -61,5 +62,10 @@ func main() {
return
}

fmt.Printf("Printer created successfully:\nID: %d\nName: %s\n", createdPrinter.ID, createdPrinter.Name)
configXML, err := xml.MarshalIndent(createdPrinter, "", " ")
if err != nil {
log.Fatalf("Error marshaling created configuration to XML: %v", err)
}

fmt.Printf("Created Individual Disk Encryption Configuration:\n%s\n", configXML)
}
62 changes: 62 additions & 0 deletions examples/printers/DeleteAllPrinters/DeleteAllPrinters.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,62 @@
package main

import (
"fmt"
"log"

"github.com/deploymenttheory/go-api-sdk-jamfpro/sdk/http_client" // Import http_client for logging
"github.com/deploymenttheory/go-api-sdk-jamfpro/sdk/jamfpro"
)

func main() {
// Define the path to the JSON configuration file
configFilePath := "/Users/dafyddwatkins/GitHub/deploymenttheory/go-api-sdk-jamfpro/clientauth.json"

// Load the client OAuth credentials from the configuration file
authConfig, err := jamfpro.LoadClientAuthConfig(configFilePath)
if err != nil {
log.Fatalf("Failed to load client OAuth configuration: %v", err)
}

// Instantiate the default logger and set the desired log level
logger := http_client.NewDefaultLogger()
logLevel := http_client.LogLevelDebug // LogLevelNone // LogLevelWarning // LogLevelInfo // LogLevelDebug

// Configuration for the jamfpro
config := jamfpro.Config{
InstanceName: authConfig.InstanceName,
OverrideBaseDomain: authConfig.OverrideBaseDomain,
LogLevel: logLevel,
Logger: logger,
ClientID: authConfig.ClientID,
ClientSecret: authConfig.ClientSecret,
}

client, err := jamfpro.NewClient(config)
if err != nil {
log.Fatalf("Failed to create Jamf Pro client: %v", err)
}

// Fetch all printers
printers, err := client.GetPrinters()
if err != nil {
log.Fatalf("Error fetching printers: %v", err)
}

fmt.Println("Printers fetched. Starting deletion process:")

// Iterate over each printer and delete
for _, printer := range printers.Printer {
fmt.Printf("deleting printer ID: %d, Name: %s\n", printer.ID, printer.Name)

err = client.DeletePrinterByID(printer.ID)
if err != nil {
log.Printf("error deleting printer ID %d: %v\n", printer.ID, err)
continue // Move to the next printer if there's an error
}

fmt.Printf("printer ID %d deleted successfully.\n", printer.ID)
}

fmt.Println("Printer deletion process completed.")
}
21 changes: 19 additions & 2 deletions examples/printers/UpdatePrinterByID/UpdatePrinterByID.go
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package main

import (
"encoding/xml"
"fmt"
"log"

Expand Down Expand Up @@ -56,11 +57,27 @@ func main() {
}

id := 1 // Replace with the actual printer ID
updatedPrinter, err = client.UpdatePrinterByID(id, updatedPrinter)

response, err := client.UpdatePrinterByID(id, updatedPrinter)
if err != nil {
fmt.Println("Error updating printer:", err)
return
}

fmt.Println("Printer updated successfully:", updatedPrinter.Name)
fmt.Printf("Printer updated successfully, ID: %d\n", response.ID)

// Fetch the full details of the updated printer
updatedPrinterDetails, err := client.GetPrinterByID(response.ID)
if err != nil {
fmt.Println("Error fetching updated printer details:", err)
return
}

// Marshal the updated printer details to XML for display
printerXML, err := xml.MarshalIndent(updatedPrinterDetails, "", " ")
if err != nil {
log.Fatalf("Error marshaling updated printer to XML: %v", err)
}

fmt.Printf("Updated Printer Details:\n%s\n", printerXML)
}
21 changes: 19 additions & 2 deletions examples/printers/UpdatePrinterByName/UpdatePrinterByName.go
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package main

import (
"encoding/xml"
"fmt"
"log"

Expand Down Expand Up @@ -56,11 +57,27 @@ func main() {
}

name := "HP 9th Floor" // Replace with the actual printer name
updatedPrinter, err = client.UpdatePrinterByName(name, updatedPrinter)

response, err := client.UpdatePrinterByName(name, updatedPrinter)
if err != nil {
fmt.Println("Error updating printer:", err)
return
}

fmt.Println("Printer updated successfully:", updatedPrinter.Name)
fmt.Printf("Printer updated successfully, ID: %d\n", response.ID)

// Fetch the full details of the updated printer
updatedPrinterDetails, err := client.GetPrinterByID(response.ID)
if err != nil {
fmt.Println("Error fetching updated printer details:", err)
return
}

// Marshal the updated printer details to XML for display
printerXML, err := xml.MarshalIndent(updatedPrinterDetails, "", " ")
if err != nil {
log.Fatalf("Error marshaling updated printer to XML: %v", err)
}

fmt.Printf("Updated Printer Details:\n%s\n", printerXML)
}
16 changes: 10 additions & 6 deletions sdk/jamfpro/classicapi_printers.go
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,10 @@ type PrintersListItem struct {
Name string `xml:"name"`
}

type ResponsePrinterCreateAndUpdate struct {
ID int `xml:"id"`
}

// Resource

// ResourcePrinter represents the detailed structure of a single printer.
Expand Down Expand Up @@ -99,7 +103,7 @@ func (c *Client) GetPrinterByName(name string) (*ResourcePrinter, error) {
}

// CreatePrinters creates a new printer on the Jamf Pro server.
func (c *Client) CreatePrinter(printer *ResourcePrinter) (*ResourcePrinter, error) {
func (c *Client) CreatePrinter(printer *ResourcePrinter) (*ResponsePrinterCreateAndUpdate, error) {
endpoint := fmt.Sprintf("%s/id/0", uriPrinters)

// Wrap the printer with the desired XML name using an anonymous struct
Expand All @@ -110,7 +114,7 @@ func (c *Client) CreatePrinter(printer *ResourcePrinter) (*ResourcePrinter, erro
ResourcePrinter: printer,
}

var responsePrinter ResourcePrinter
var responsePrinter ResponsePrinterCreateAndUpdate
resp, err := c.HTTP.DoRequest("POST", endpoint, &requestBody, &responsePrinter)
if err != nil {
return nil, fmt.Errorf(errMsgFailedCreate, "printer", err)
Expand All @@ -124,7 +128,7 @@ func (c *Client) CreatePrinter(printer *ResourcePrinter) (*ResourcePrinter, erro
}

// UpdatePrinterByID updates a printer by its ID.
func (c *Client) UpdatePrinterByID(id int, printer *ResourcePrinter) (*ResourcePrinter, error) {
func (c *Client) UpdatePrinterByID(id int, printer *ResourcePrinter) (*ResponsePrinterCreateAndUpdate, error) {
endpoint := fmt.Sprintf("%s/id/%d", uriPrinters, id)

// Wrap the printer with the desired XML name using an anonymous struct
Expand All @@ -135,7 +139,7 @@ func (c *Client) UpdatePrinterByID(id int, printer *ResourcePrinter) (*ResourceP
ResourcePrinter: printer,
}

var responsePrinter ResourcePrinter
var responsePrinter ResponsePrinterCreateAndUpdate
resp, err := c.HTTP.DoRequest("PUT", endpoint, &requestBody, &responsePrinter)
if err != nil {
return nil, fmt.Errorf(errMsgFailedUpdateByID, "printer", id, err)
Expand All @@ -149,7 +153,7 @@ func (c *Client) UpdatePrinterByID(id int, printer *ResourcePrinter) (*ResourceP
}

// UpdatePrinterByName updates a printer by its name.
func (c *Client) UpdatePrinterByName(name string, printer *ResourcePrinter) (*ResourcePrinter, error) {
func (c *Client) UpdatePrinterByName(name string, printer *ResourcePrinter) (*ResponsePrinterCreateAndUpdate, error) {
endpoint := fmt.Sprintf("%s/name/%s", uriPrinters, name)

// Wrap the printer with the desired XML name using an anonymous struct
Expand All @@ -160,7 +164,7 @@ func (c *Client) UpdatePrinterByName(name string, printer *ResourcePrinter) (*Re
ResourcePrinter: printer,
}

var responsePrinter ResourcePrinter
var responsePrinter ResponsePrinterCreateAndUpdate
resp, err := c.HTTP.DoRequest("PUT", endpoint, &requestBody, &responsePrinter)
if err != nil {
return nil, fmt.Errorf(errMsgFailedUpdateByName, "printer", name, err)
Expand Down

0 comments on commit 8a27bad

Please sign in to comment.