ente/cli/internal/api/files.go

37 lines
832 B
Go
Raw Normal View History

package api
2023-09-25 13:40:36 +00:00
import (
"context"
"github.com/ente-io/cli/utils/constants"
"github.com/spf13/viper"
2023-09-25 13:40:36 +00:00
"strconv"
"strings"
2023-09-25 13:40:36 +00:00
)
var (
downloadHost = "https://files.ente.io/?fileID="
)
func downloadUrl(fileID int64) string {
apiEndpoint := viper.GetString("endpoint.api")
if apiEndpoint == "" || strings.Compare(apiEndpoint, constants.EnteApiUrl) == 0 {
return downloadHost + strconv.FormatInt(fileID, 10)
}
return apiEndpoint + "/files/download/" + strconv.FormatInt(fileID, 10)
}
2023-09-25 13:40:36 +00:00
func (c *Client) DownloadFile(ctx context.Context, fileID int64, absolutePath string) error {
req := c.downloadClient.R().
SetContext(ctx).
SetOutput(absolutePath)
attachToken(req)
r, err := req.Get(downloadUrl(fileID))
2023-09-25 13:40:36 +00:00
if r.IsError() {
return &ApiError{
StatusCode: r.StatusCode(),
Message: r.String(),
}
}
return err
}