mirror of
https://github.com/rclone/rclone
synced 2024-11-14 13:36:24 +01:00
79 lines
1.9 KiB
Go
79 lines
1.9 KiB
Go
package src
|
|
|
|
import (
|
|
"encoding/json"
|
|
"strings"
|
|
)
|
|
|
|
// FlatFileListRequest struct client for FlatFileList Request
|
|
type FlatFileListRequest struct {
|
|
client *Client
|
|
HTTPRequest *HTTPRequest
|
|
}
|
|
|
|
// FlatFileListRequestOptions struct - options for request
|
|
type FlatFileListRequestOptions struct {
|
|
MediaType []MediaType
|
|
Limit *uint32
|
|
Offset *uint32
|
|
Fields []string
|
|
PreviewSize *PreviewSize
|
|
PreviewCrop *bool
|
|
}
|
|
|
|
// Request get request
|
|
func (req *FlatFileListRequest) Request() *HTTPRequest {
|
|
return req.HTTPRequest
|
|
}
|
|
|
|
// NewFlatFileListRequest create new FlatFileList Request
|
|
func (c *Client) NewFlatFileListRequest(options ...FlatFileListRequestOptions) *FlatFileListRequest {
|
|
var parameters = make(map[string]interface{})
|
|
if len(options) > 0 {
|
|
opt := options[0]
|
|
if opt.Limit != nil {
|
|
parameters["limit"] = *opt.Limit
|
|
}
|
|
if opt.Offset != nil {
|
|
parameters["offset"] = *opt.Offset
|
|
}
|
|
if opt.Fields != nil {
|
|
parameters["fields"] = strings.Join(opt.Fields, ",")
|
|
}
|
|
if opt.PreviewSize != nil {
|
|
parameters["preview_size"] = opt.PreviewSize.String()
|
|
}
|
|
if opt.PreviewCrop != nil {
|
|
parameters["preview_crop"] = *opt.PreviewCrop
|
|
}
|
|
if opt.MediaType != nil {
|
|
var strMediaTypes = make([]string, len(opt.MediaType))
|
|
for i, t := range opt.MediaType {
|
|
strMediaTypes[i] = t.String()
|
|
}
|
|
parameters["media_type"] = strings.Join(strMediaTypes, ",")
|
|
}
|
|
}
|
|
return &FlatFileListRequest{
|
|
client: c,
|
|
HTTPRequest: createGetRequest(c, "/resources/files", parameters),
|
|
}
|
|
}
|
|
|
|
// Exec run FlatFileList Request
|
|
func (req *FlatFileListRequest) Exec() (*FilesResourceListResponse, error) {
|
|
data, err := req.Request().run(req.client)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
var info FilesResourceListResponse
|
|
err = json.Unmarshal(data, &info)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
if cap(info.Items) == 0 {
|
|
info.Items = []ResourceInfoResponse{}
|
|
}
|
|
return &info, nil
|
|
}
|