forked from TrueCloudLab/lego
135 lines
3.1 KiB
Go
135 lines
3.1 KiB
Go
|
package rest
|
||
|
|
||
|
import (
|
||
|
"fmt"
|
||
|
"net/http"
|
||
|
"net/url"
|
||
|
|
||
|
"gopkg.in/ns1/ns1-go.v2/rest/model/monitor"
|
||
|
)
|
||
|
|
||
|
// JobsService handles 'monitoring/jobs' endpoint.
|
||
|
type JobsService service
|
||
|
|
||
|
// List returns all monitoring jobs for the account.
|
||
|
//
|
||
|
// NS1 API docs: https://ns1.com/api/#jobs-get
|
||
|
func (s *JobsService) List() ([]*monitor.Job, *http.Response, error) {
|
||
|
req, err := s.client.NewRequest("GET", "monitoring/jobs", nil)
|
||
|
if err != nil {
|
||
|
return nil, nil, err
|
||
|
}
|
||
|
|
||
|
mjl := []*monitor.Job{}
|
||
|
resp, err := s.client.Do(req, &mjl)
|
||
|
if err != nil {
|
||
|
return nil, resp, err
|
||
|
}
|
||
|
|
||
|
return mjl, resp, nil
|
||
|
}
|
||
|
|
||
|
// Get takes an ID and returns details for a specific monitoring job.
|
||
|
//
|
||
|
// NS1 API docs: https://ns1.com/api/#jobs-jobid-get
|
||
|
func (s *JobsService) Get(id string) (*monitor.Job, *http.Response, error) {
|
||
|
path := fmt.Sprintf("%s/%s", "monitoring/jobs", id)
|
||
|
|
||
|
req, err := s.client.NewRequest("GET", path, nil)
|
||
|
if err != nil {
|
||
|
return nil, nil, err
|
||
|
}
|
||
|
|
||
|
var mj monitor.Job
|
||
|
resp, err := s.client.Do(req, &mj)
|
||
|
if err != nil {
|
||
|
return nil, resp, err
|
||
|
}
|
||
|
|
||
|
return &mj, resp, nil
|
||
|
}
|
||
|
|
||
|
// Create takes a *MonitoringJob and creates a new monitoring job.
|
||
|
//
|
||
|
// NS1 API docs: https://ns1.com/api/#jobs-put
|
||
|
func (s *JobsService) Create(mj *monitor.Job) (*http.Response, error) {
|
||
|
path := fmt.Sprintf("%s/%s", "monitoring/jobs", mj.ID)
|
||
|
|
||
|
req, err := s.client.NewRequest("PUT", path, &mj)
|
||
|
if err != nil {
|
||
|
return nil, err
|
||
|
}
|
||
|
|
||
|
// Update mon jobs' fields with data from api(ensure consistent)
|
||
|
resp, err := s.client.Do(req, &mj)
|
||
|
if err != nil {
|
||
|
return resp, err
|
||
|
}
|
||
|
|
||
|
return resp, nil
|
||
|
}
|
||
|
|
||
|
// Update takes a *MonitoringJob and change the configuration details of an existing monitoring job.
|
||
|
//
|
||
|
// NS1 API docs: https://ns1.com/api/#jobs-jobid-post
|
||
|
func (s *JobsService) Update(mj *monitor.Job) (*http.Response, error) {
|
||
|
path := fmt.Sprintf("%s/%s", "monitoring/jobs", mj.ID)
|
||
|
|
||
|
req, err := s.client.NewRequest("POST", path, &mj)
|
||
|
if err != nil {
|
||
|
return nil, err
|
||
|
}
|
||
|
|
||
|
// Update mon jobs' fields with data from api(ensure consistent)
|
||
|
resp, err := s.client.Do(req, &mj)
|
||
|
if err != nil {
|
||
|
return resp, err
|
||
|
}
|
||
|
|
||
|
return resp, nil
|
||
|
}
|
||
|
|
||
|
// Delete takes an ID and immediately terminates and deletes and existing monitoring job.
|
||
|
//
|
||
|
// NS1 API docs: https://ns1.com/api/#jobs-jobid-delete
|
||
|
func (s *JobsService) Delete(id string) (*http.Response, error) {
|
||
|
path := fmt.Sprintf("%s/%s", "monitoring/jobs", id)
|
||
|
|
||
|
req, err := s.client.NewRequest("DELETE", path, nil)
|
||
|
if err != nil {
|
||
|
return nil, err
|
||
|
}
|
||
|
|
||
|
resp, err := s.client.Do(req, nil)
|
||
|
if err != nil {
|
||
|
return resp, err
|
||
|
}
|
||
|
|
||
|
return resp, nil
|
||
|
}
|
||
|
|
||
|
// History takes an ID and returns status log history for a specific monitoring job.
|
||
|
//
|
||
|
// NS1 API docs: https://ns1.com/api/#history-get
|
||
|
func (s *JobsService) History(id string, opts ...func(*url.Values)) ([]*monitor.StatusLog, *http.Response, error) {
|
||
|
v := url.Values{}
|
||
|
for _, opt := range opts {
|
||
|
opt(&v)
|
||
|
}
|
||
|
|
||
|
path := fmt.Sprintf("%s/%s?%s", "monitoring/history", id, v.Encode())
|
||
|
|
||
|
req, err := s.client.NewRequest("GET", path, nil)
|
||
|
if err != nil {
|
||
|
return nil, nil, err
|
||
|
}
|
||
|
|
||
|
var slgs []*monitor.StatusLog
|
||
|
resp, err := s.client.Do(req, &slgs)
|
||
|
if err != nil {
|
||
|
return nil, resp, err
|
||
|
}
|
||
|
|
||
|
return slgs, resp, nil
|
||
|
}
|