forked from TrueCloudLab/lego
70 lines
2.1 KiB
Go
70 lines
2.1 KiB
Go
package linodego
|
|
|
|
import (
|
|
"context"
|
|
"fmt"
|
|
)
|
|
|
|
// LongviewSubscription represents a LongviewSubscription object
|
|
type LongviewSubscription struct {
|
|
ID string `json:"id"`
|
|
Label string `json:"label"`
|
|
ClientsIncluded int `json:"clients_included"`
|
|
Price *LinodePrice `json:"price"`
|
|
// UpdatedStr string `json:"updated"`
|
|
// Updated *time.Time `json:"-"`
|
|
}
|
|
|
|
// LongviewSubscriptionsPagedResponse represents a paginated LongviewSubscription API response
|
|
type LongviewSubscriptionsPagedResponse struct {
|
|
*PageOptions
|
|
Data []LongviewSubscription `json:"data"`
|
|
}
|
|
|
|
// endpoint gets the endpoint URL for LongviewSubscription
|
|
func (LongviewSubscriptionsPagedResponse) endpoint(c *Client) string {
|
|
endpoint, err := c.LongviewSubscriptions.Endpoint()
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
return endpoint
|
|
}
|
|
|
|
// appendData appends LongviewSubscriptions when processing paginated LongviewSubscription responses
|
|
func (resp *LongviewSubscriptionsPagedResponse) appendData(r *LongviewSubscriptionsPagedResponse) {
|
|
resp.Data = append(resp.Data, r.Data...)
|
|
}
|
|
|
|
// ListLongviewSubscriptions lists LongviewSubscriptions
|
|
func (c *Client) ListLongviewSubscriptions(ctx context.Context, opts *ListOptions) ([]LongviewSubscription, error) {
|
|
response := LongviewSubscriptionsPagedResponse{}
|
|
err := c.listHelper(ctx, &response, opts)
|
|
for i := range response.Data {
|
|
response.Data[i].fixDates()
|
|
}
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
return response.Data, nil
|
|
}
|
|
|
|
// fixDates converts JSON timestamps to Go time.Time values
|
|
func (v *LongviewSubscription) fixDates() *LongviewSubscription {
|
|
// v.Created, _ = parseDates(v.CreatedStr)
|
|
// v.Updated, _ = parseDates(v.UpdatedStr)
|
|
return v
|
|
}
|
|
|
|
// GetLongviewSubscription gets the template with the provided ID
|
|
func (c *Client) GetLongviewSubscription(ctx context.Context, id string) (*LongviewSubscription, error) {
|
|
e, err := c.LongviewSubscriptions.Endpoint()
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
e = fmt.Sprintf("%s/%s", e, id)
|
|
r, err := c.R(ctx).SetResult(&LongviewSubscription{}).Get(e)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
return r.Result().(*LongviewSubscription).fixDates(), nil
|
|
}
|