client_resource_record.go (149 lines of code) (raw):

package sls import ( "encoding/json" "fmt" "io/ioutil" ) type ResourceRecord struct { Id string `json:"id"` Tag string `json:"tag"` Value string `json:"value"` CreateTime int64 `json:"createTime"` LastModifyTime int64 `json:"lastModifyTime"` } func (c *Client) CreateResourceRecordString(resourceName, recordStr string) error { body := []byte(recordStr) h := map[string]string{ "x-log-bodyrawsize": fmt.Sprintf("%v", len(body)), "Content-Type": "application/json", } uri := fmt.Sprintf("/resources/%s/records", resourceName) r, err := c.request("", "POST", uri, h, body) if err != nil { return err } r.Body.Close() return nil } func (c *Client) CreateResourceRecord(resourceName string, record *ResourceRecord) error { body, err := json.Marshal(record) if err != nil { return NewClientError(err) } h := map[string]string{ "x-log-bodyrawsize": fmt.Sprintf("%v", len(body)), "Content-Type": "application/json", } uri := fmt.Sprintf("/resources/%s/records", resourceName) r, err := c.request("", "POST", uri, h, body) if err != nil { return err } r.Body.Close() return nil } func (c *Client) UpdateResourceRecord(resourceName string, record *ResourceRecord) error { body, err := json.Marshal(record) if err != nil { return NewClientError(err) } h := map[string]string{ "x-log-bodyrawsize": fmt.Sprintf("%v", len(body)), "Content-Type": "application/json", } uri := fmt.Sprintf("/resources/%s/records/%s", resourceName, record.Id) r, err := c.request("", "PUT", uri, h, body) if err != nil { return err } r.Body.Close() return nil } func (c *Client) UpdateResourceRecordString(resourceName, recordStr string) error { body := []byte(recordStr) h := map[string]string{ "x-log-bodyrawsize": fmt.Sprintf("%v", len(body)), "Content-Type": "application/json", } uri := fmt.Sprintf("/resources/%s/records", resourceName) r, err := c.request("", "PUT", uri, h, body) if err != nil { return err } r.Body.Close() return nil } func (c *Client) DeleteResourceRecord(resourceName, recordId string) error { h := map[string]string{ "x-log-bodyrawsize": "0", "Content-Type": "application/json", } uri := fmt.Sprintf("/resources/%s/records?ids=%s", resourceName, recordId) r, err := c.request("", "DELETE", uri, h, nil) if err != nil { return err } r.Body.Close() return nil } func (c *Client) GetResourceRecord(resourceName, recordId string) (record *ResourceRecord, err error) { h := map[string]string{ "x-log-bodyrawsize": "0", "Content-Type": "application/json", } uri := fmt.Sprintf("/resources/%s/records/%s", resourceName, recordId) r, err := c.request("", "GET", uri, h, nil) if err != nil { return nil, err } defer r.Body.Close() buf, err := ioutil.ReadAll(r.Body) if err != nil { return nil, readResponseError(err) } record = &ResourceRecord{} if err = json.Unmarshal(buf, record); err != nil { err = NewClientError(err) } return record, err } func (c *Client) GetResourceRecordString(resourceName, recordId string) (recordStr string, err error) { h := map[string]string{ "x-log-bodyrawsize": "0", "Content-Type": "application/json", } uri := fmt.Sprintf("/resources/%s/records/%s", resourceName, recordId) r, err := c.request("", "GET", uri, h, nil) if err != nil { return "", err } defer r.Body.Close() buf, err := ioutil.ReadAll(r.Body) return string(buf), err } func (c *Client) ListResourceRecord(resourceName string, offset, size int) (recordList []*ResourceRecord, count, total int, err error) { h := map[string]string{ "x-log-bodyrawsize": "0", "Content-Type": "application/json", } uri := fmt.Sprintf("/resources/%s/records?offset=%d&size=%d", resourceName, offset, size) r, err := c.request("", "GET", uri, h, nil) if err != nil { return nil, 0, 0, err } defer r.Body.Close() type ListResourceRecordResponse struct { ResourceRecordList []*ResourceRecord `json:"items"` Total int `json:"total"` Count int `json:"count"` } buf, err := ioutil.ReadAll(r.Body) if err != nil { return nil, 0, 0, readResponseError(err) } resources := &ListResourceRecordResponse{} if err = json.Unmarshal(buf, resources); err != nil { err = NewClientError(err) } return resources.ResourceRecordList, resources.Count, resources.Total, err }