mirror of
https://github.com/rclone/rclone
synced 2024-11-14 13:36:24 +01:00
51 lines
1.2 KiB
Go
51 lines
1.2 KiB
Go
package src
|
|
|
|
import (
|
|
"bytes"
|
|
"encoding/json"
|
|
"io"
|
|
"net/url"
|
|
)
|
|
|
|
//CustomPropertyResponse struct we send and is returned by the API for CustomProperty request.
|
|
type CustomPropertyResponse struct {
|
|
CustomProperties map[string]interface{} `json:"custom_properties"`
|
|
}
|
|
|
|
//SetCustomProperty will set specified data from Yandex Disk
|
|
func (c *Client) SetCustomProperty(remotePath string, property string, value string) error {
|
|
rcm := map[string]interface{}{
|
|
property: value,
|
|
}
|
|
cpr := CustomPropertyResponse{rcm}
|
|
data, _ := json.Marshal(cpr)
|
|
body := bytes.NewReader(data)
|
|
err := c.SetCustomPropertyRequest(remotePath, body)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
return err
|
|
}
|
|
|
|
//SetCustomPropertyRequest will make an CustomProperty request and return a URL to CustomProperty data to.
|
|
func (c *Client) SetCustomPropertyRequest(remotePath string, body io.Reader) error {
|
|
values := url.Values{}
|
|
values.Add("path", remotePath)
|
|
req, err := c.scopedRequest("PATCH", "/v1/disk/resources?"+values.Encode(), body)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
resp, err := c.HTTPClient.Do(req)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
if err := CheckAPIError(resp); err != nil {
|
|
return err
|
|
}
|
|
|
|
//If needed we can read response and check if custom_property is set.
|
|
|
|
return nil
|
|
}
|