| 
									
										
										
										
											2018-06-20 15:59:12 -06:00
										 |  |  | package connectwise | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | import ( | 
					
						
							|  |  |  | 	"bytes" | 
					
						
							|  |  |  | 	"encoding/json" | 
					
						
							|  |  |  | 	"fmt" | 
					
						
							|  |  |  | ) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | type Callback struct { | 
					
						
							| 
									
										
										
										
											2018-06-22 14:14:21 -06:00
										 |  |  | 	ID           int | 
					
						
							| 
									
										
										
										
											2018-06-20 15:59:12 -06:00
										 |  |  | 	Description  string | 
					
						
							| 
									
										
										
										
											2018-07-05 19:57:24 -06:00
										 |  |  | 	URL          string | 
					
						
							| 
									
										
										
										
											2018-06-20 15:59:12 -06:00
										 |  |  | 	ObjectId     int | 
					
						
							|  |  |  | 	Type         string | 
					
						
							|  |  |  | 	Level        string | 
					
						
							|  |  |  | 	MemberId     int | 
					
						
							|  |  |  | 	InactiveFlag bool | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-07-05 21:20:52 -06:00
										 |  |  | func (cw *ConnectwiseSite) GetCallbacks() (*[]Callback, error) { | 
					
						
							|  |  |  | 	restAction := "/system/callbacks" | 
					
						
							|  |  |  | 	cwurl, err := cw.BuildURL(restAction) | 
					
						
							|  |  |  | 	if err != nil { | 
					
						
							| 
									
										
										
										
											2018-07-06 08:37:53 -06:00
										 |  |  | 		return nil, fmt.Errorf("could not build url %s: %s", restAction, err) | 
					
						
							| 
									
										
										
										
											2018-07-05 21:20:52 -06:00
										 |  |  | 	} | 
					
						
							| 
									
										
										
										
											2018-06-22 18:47:39 -06:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-07-05 21:20:52 -06:00
										 |  |  | 	body, err := cw.GetRequest(cwurl) | 
					
						
							|  |  |  | 	if err != nil { | 
					
						
							| 
									
										
										
										
											2018-07-06 08:37:53 -06:00
										 |  |  | 		return nil, fmt.Errorf("could not get request %s: %s", cwurl, err) | 
					
						
							| 
									
										
										
										
											2018-07-05 21:20:52 -06:00
										 |  |  | 	} | 
					
						
							| 
									
										
										
										
											2018-06-22 18:47:39 -06:00
										 |  |  | 	callbacks := []Callback{} | 
					
						
							| 
									
										
										
										
											2018-07-05 21:20:52 -06:00
										 |  |  | 	err = json.Unmarshal(body, &callbacks) | 
					
						
							|  |  |  | 	if err != nil { | 
					
						
							| 
									
										
										
										
											2018-07-06 08:37:53 -06:00
										 |  |  | 		return nil, fmt.Errorf("failed to unmarshal body into struct: %s", err) | 
					
						
							| 
									
										
										
										
											2018-07-05 21:20:52 -06:00
										 |  |  | 	} | 
					
						
							| 
									
										
										
										
											2018-06-22 14:14:21 -06:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-07-05 21:20:52 -06:00
										 |  |  | 	return &callbacks, nil | 
					
						
							| 
									
										
										
										
											2018-06-20 15:59:12 -06:00
										 |  |  | 
 | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-07-05 21:20:52 -06:00
										 |  |  | //TBD: This should return something useful, response body?? | 
					
						
							|  |  |  | func (cw *ConnectwiseSite) NewCallback(callback Callback) error { | 
					
						
							|  |  |  | 	restAction := "/system/callbacks" | 
					
						
							|  |  |  | 	cwurl, err := cw.BuildURL(restAction) | 
					
						
							|  |  |  | 	if err != nil { | 
					
						
							| 
									
										
										
										
											2018-07-06 08:37:53 -06:00
										 |  |  | 		return fmt.Errorf("could not build url %s: %s", restAction, err) | 
					
						
							| 
									
										
										
										
											2018-07-05 21:20:52 -06:00
										 |  |  | 	} | 
					
						
							| 
									
										
										
										
											2018-06-20 15:59:12 -06:00
										 |  |  | 
 | 
					
						
							|  |  |  | 	jsonCallback, err := json.Marshal(callback) | 
					
						
							| 
									
										
										
										
											2018-07-05 21:20:52 -06:00
										 |  |  | 	if err != nil { | 
					
						
							| 
									
										
										
										
											2018-07-06 08:37:53 -06:00
										 |  |  | 		return fmt.Errorf("could not marshal json data: %s", err) | 
					
						
							| 
									
										
										
										
											2018-07-05 21:20:52 -06:00
										 |  |  | 	} | 
					
						
							| 
									
										
										
										
											2018-06-20 15:59:12 -06:00
										 |  |  | 
 | 
					
						
							|  |  |  | 	jsonBuffer := bytes.NewReader(jsonCallback) | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-07-05 21:20:52 -06:00
										 |  |  | 	_, err = cw.PostRequest(cwurl, jsonBuffer) | 
					
						
							|  |  |  | 	if err != nil { | 
					
						
							| 
									
										
										
										
											2018-07-06 08:37:53 -06:00
										 |  |  | 		return fmt.Errorf("could not post request %s: %s", cwurl, err) | 
					
						
							| 
									
										
										
										
											2018-07-05 21:20:52 -06:00
										 |  |  | 	} | 
					
						
							| 
									
										
										
										
											2018-06-20 15:59:12 -06:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-07-05 21:20:52 -06:00
										 |  |  | 	return nil | 
					
						
							| 
									
										
										
										
											2018-06-20 15:59:12 -06:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-07-05 21:20:52 -06:00
										 |  |  | //TBD: This should return something useful, response body?? | 
					
						
							|  |  |  | func (cw *ConnectwiseSite) DeleteCallback(callback int) error { | 
					
						
							|  |  |  | 	restAction := fmt.Sprintf("/system/callbacks/%d", callback) | 
					
						
							|  |  |  | 	cwurl, err := cw.BuildURL(restAction) | 
					
						
							|  |  |  | 	if err != nil { | 
					
						
							| 
									
										
										
										
											2018-07-06 08:37:53 -06:00
										 |  |  | 		return fmt.Errorf("could not build url %s: %s", restAction, err) | 
					
						
							| 
									
										
										
										
											2018-07-05 21:20:52 -06:00
										 |  |  | 	} | 
					
						
							|  |  |  | 	_, err = cw.DeleteRequest(cwurl) | 
					
						
							|  |  |  | 	if err != nil { | 
					
						
							| 
									
										
										
										
											2018-07-06 08:37:53 -06:00
										 |  |  | 		return fmt.Errorf("could not delete request %s: %s", cwurl, err) | 
					
						
							| 
									
										
										
										
											2018-07-05 21:20:52 -06:00
										 |  |  | 	} | 
					
						
							| 
									
										
										
										
											2018-06-20 15:59:12 -06:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-07-05 21:20:52 -06:00
										 |  |  | 	return nil | 
					
						
							| 
									
										
										
										
											2018-06-20 15:59:12 -06:00
										 |  |  | } |