mirror of
https://github.com/rclone/rclone.git
synced 2025-01-24 12:56:36 +02:00
Direct support for dropbox's impersonate memberid
By optionally using the new `impersonate_id` flag we can avoid an unnecessary API call fetching the ID for member email/username
This commit is contained in:
parent
6a217c7dc1
commit
9ea2169df2
@ -137,8 +137,10 @@ var (
|
|||||||
// Gets an oauth config with the right scopes
|
// Gets an oauth config with the right scopes
|
||||||
func getOauthConfig(m configmap.Mapper) *oauthutil.Config {
|
func getOauthConfig(m configmap.Mapper) *oauthutil.Config {
|
||||||
// If not impersonating, use standard scopes
|
// If not impersonating, use standard scopes
|
||||||
if impersonate, _ := m.Get("impersonate"); impersonate == "" {
|
impersonate, _ := m.Get("impersonate")
|
||||||
return dropboxConfig
|
impersonateID, _ := m.Get("impersonate_id")
|
||||||
|
if impersonate == "" && impersonateID == "" {
|
||||||
|
return dropboxConfig // Default config if neither is set
|
||||||
}
|
}
|
||||||
// Make a copy of the config
|
// Make a copy of the config
|
||||||
config := *dropboxConfig
|
config := *dropboxConfig
|
||||||
@ -200,7 +202,7 @@ v1.55 or later is in use everywhere.
|
|||||||
Name: "shared_files",
|
Name: "shared_files",
|
||||||
Help: `Instructs rclone to work on individual shared files.
|
Help: `Instructs rclone to work on individual shared files.
|
||||||
|
|
||||||
In this mode rclone's features are extremely limited - only list (ls, lsl, etc.)
|
In this mode rclone's features are extremely limited - only list (ls, lsl, etc.)
|
||||||
operations and read operations (e.g. downloading) are supported in this mode.
|
operations and read operations (e.g. downloading) are supported in this mode.
|
||||||
All other operations will be disabled.`,
|
All other operations will be disabled.`,
|
||||||
Default: false,
|
Default: false,
|
||||||
@ -208,16 +210,16 @@ All other operations will be disabled.`,
|
|||||||
}, {
|
}, {
|
||||||
Name: "shared_folders",
|
Name: "shared_folders",
|
||||||
Help: `Instructs rclone to work on shared folders.
|
Help: `Instructs rclone to work on shared folders.
|
||||||
|
|
||||||
When this flag is used with no path only the List operation is supported and
|
|
||||||
all available shared folders will be listed. If you specify a path the first part
|
|
||||||
will be interpreted as the name of shared folder. Rclone will then try to mount this
|
|
||||||
shared to the root namespace. On success shared folder rclone proceeds normally.
|
|
||||||
The shared folder is now pretty much a normal folder and all normal operations
|
|
||||||
are supported.
|
|
||||||
|
|
||||||
Note that we don't unmount the shared folder afterwards so the
|
When this flag is used with no path only the List operation is supported and
|
||||||
--dropbox-shared-folders can be omitted after the first use of a particular
|
all available shared folders will be listed. If you specify a path the first part
|
||||||
|
will be interpreted as the name of shared folder. Rclone will then try to mount this
|
||||||
|
shared to the root namespace. On success shared folder rclone proceeds normally.
|
||||||
|
The shared folder is now pretty much a normal folder and all normal operations
|
||||||
|
are supported.
|
||||||
|
|
||||||
|
Note that we don't unmount the shared folder afterwards so the
|
||||||
|
--dropbox-shared-folders can be omitted after the first use of a particular
|
||||||
shared folder.
|
shared folder.
|
||||||
|
|
||||||
See also --dropbox-root-namespace for an alternative way to work with shared
|
See also --dropbox-root-namespace for an alternative way to work with shared
|
||||||
@ -255,6 +257,7 @@ folders.`,
|
|||||||
type Options struct {
|
type Options struct {
|
||||||
ChunkSize fs.SizeSuffix `config:"chunk_size"`
|
ChunkSize fs.SizeSuffix `config:"chunk_size"`
|
||||||
Impersonate string `config:"impersonate"`
|
Impersonate string `config:"impersonate"`
|
||||||
|
ImpersonateID string `config:"impersonate_id"`
|
||||||
SharedFiles bool `config:"shared_files"`
|
SharedFiles bool `config:"shared_files"`
|
||||||
SharedFolders bool `config:"shared_folders"`
|
SharedFolders bool `config:"shared_folders"`
|
||||||
BatchMode string `config:"batch_mode"`
|
BatchMode string `config:"batch_mode"`
|
||||||
@ -430,7 +433,9 @@ func NewFs(ctx context.Context, name, root string, m configmap.Mapper) (fs.Fs, e
|
|||||||
// NOTE: needs to be created pre-impersonation so we can look up the impersonated user
|
// NOTE: needs to be created pre-impersonation so we can look up the impersonated user
|
||||||
f.team = team.New(cfg)
|
f.team = team.New(cfg)
|
||||||
|
|
||||||
if opt.Impersonate != "" {
|
if opt.ImpersonateID != "" {
|
||||||
|
cfg.AsMemberID = opt.ImpersonateID
|
||||||
|
} else if opt.Impersonate != "" {
|
||||||
user := team.UserSelectorArg{
|
user := team.UserSelectorArg{
|
||||||
Email: opt.Impersonate,
|
Email: opt.Impersonate,
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user