mirror of
https://github.com/rclone/rclone.git
synced 2025-01-11 00:40:03 +01:00
fichier: support downloading password protected files and folders
This commit is contained in:
parent
062919e08c
commit
92b3518c78
@ -4,6 +4,7 @@ import (
|
|||||||
"context"
|
"context"
|
||||||
"io"
|
"io"
|
||||||
"net/http"
|
"net/http"
|
||||||
|
"net/url"
|
||||||
"regexp"
|
"regexp"
|
||||||
"strconv"
|
"strconv"
|
||||||
"strings"
|
"strings"
|
||||||
@ -90,6 +91,7 @@ func (f *Fs) getDownloadToken(ctx context.Context, url string) (*GetTokenRespons
|
|||||||
request := DownloadRequest{
|
request := DownloadRequest{
|
||||||
URL: url,
|
URL: url,
|
||||||
Single: 1,
|
Single: 1,
|
||||||
|
Pass: f.opt.FilePassword,
|
||||||
}
|
}
|
||||||
opts := rest.Opts{
|
opts := rest.Opts{
|
||||||
Method: "POST",
|
Method: "POST",
|
||||||
@ -118,10 +120,16 @@ func fileFromSharedFile(file *SharedFile) File {
|
|||||||
|
|
||||||
func (f *Fs) listSharedFiles(ctx context.Context, id string) (entries fs.DirEntries, err error) {
|
func (f *Fs) listSharedFiles(ctx context.Context, id string) (entries fs.DirEntries, err error) {
|
||||||
opts := rest.Opts{
|
opts := rest.Opts{
|
||||||
Method: "GET",
|
Method: "GET",
|
||||||
RootURL: "https://1fichier.com/dir/",
|
RootURL: "https://1fichier.com/dir/",
|
||||||
Path: id,
|
Path: id,
|
||||||
Parameters: map[string][]string{"json": {"1"}},
|
Parameters: map[string][]string{"json": {"1"}},
|
||||||
|
ContentType: "application/x-www-form-urlencoded",
|
||||||
|
}
|
||||||
|
if f.opt.FolderPassword != "" {
|
||||||
|
opts.Method = "POST"
|
||||||
|
opts.Parameters = nil
|
||||||
|
opts.Body = strings.NewReader("json=1&pass=" + url.QueryEscape(f.opt.FolderPassword))
|
||||||
}
|
}
|
||||||
|
|
||||||
var sharedFiles SharedFolderResponse
|
var sharedFiles SharedFolderResponse
|
||||||
|
@ -44,6 +44,18 @@ func init() {
|
|||||||
Name: "shared_folder",
|
Name: "shared_folder",
|
||||||
Required: false,
|
Required: false,
|
||||||
Advanced: true,
|
Advanced: true,
|
||||||
|
}, {
|
||||||
|
Help: "If you want to download a shared file that is password protected, add this parameter",
|
||||||
|
Name: "file_password",
|
||||||
|
Required: false,
|
||||||
|
Advanced: true,
|
||||||
|
IsPassword: true,
|
||||||
|
}, {
|
||||||
|
Help: "If you want to list the files in a shared folder that is password protected, add this parameter",
|
||||||
|
Name: "folder_password",
|
||||||
|
Required: false,
|
||||||
|
Advanced: true,
|
||||||
|
IsPassword: true,
|
||||||
}, {
|
}, {
|
||||||
Name: config.ConfigEncoding,
|
Name: config.ConfigEncoding,
|
||||||
Help: config.ConfigEncodingHelp,
|
Help: config.ConfigEncodingHelp,
|
||||||
@ -75,9 +87,11 @@ func init() {
|
|||||||
|
|
||||||
// Options defines the configuration for this backend
|
// Options defines the configuration for this backend
|
||||||
type Options struct {
|
type Options struct {
|
||||||
APIKey string `config:"api_key"`
|
APIKey string `config:"api_key"`
|
||||||
SharedFolder string `config:"shared_folder"`
|
SharedFolder string `config:"shared_folder"`
|
||||||
Enc encoder.MultiEncoder `config:"encoding"`
|
FilePassword string `config:"file_password"`
|
||||||
|
FolderPassword string `config:"folder_password"`
|
||||||
|
Enc encoder.MultiEncoder `config:"encoding"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// Fs is the interface a cloud storage system must provide
|
// Fs is the interface a cloud storage system must provide
|
||||||
|
@ -19,6 +19,7 @@ type ListFilesRequest struct {
|
|||||||
type DownloadRequest struct {
|
type DownloadRequest struct {
|
||||||
URL string `json:"url"`
|
URL string `json:"url"`
|
||||||
Single int `json:"single"`
|
Single int `json:"single"`
|
||||||
|
Pass string `json:"pass,omitempty"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// RemoveFolderRequest is the request structure of the corresponding request
|
// RemoveFolderRequest is the request structure of the corresponding request
|
||||||
|
Loading…
Reference in New Issue
Block a user