🐛 Fix issue with Dropbox App Folder type apps. (#1569)

#1542
This commit is contained in:
Ricardo Espinoza 2021-03-25 18:25:05 -04:00 committed by GitHub
parent 0a63701a13
commit be02fc8752
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
4 changed files with 54 additions and 8 deletions

View file

@ -14,5 +14,21 @@ export class DropboxApi implements ICredentialType {
type: 'string' as NodePropertyTypes,
default: '',
},
{
displayName: 'APP Access Type',
name: 'accessType',
type: 'options' as NodePropertyTypes,
options: [
{
name: 'App Folder',
value: 'folder',
},
{
name: 'Full Dropbox',
value: 'full',
},
],
default: 'full',
},
];
}

View file

@ -50,5 +50,21 @@ export class DropboxOAuth2Api implements ICredentialType {
type: 'hidden' as NodePropertyTypes,
default: 'header',
},
{
displayName: 'APP Access Type',
name: 'accessType',
type: 'options' as NodePropertyTypes,
options: [
{
name: 'App Folder',
value: 'folder',
},
{
name: 'Full Dropbox',
value: 'full',
},
],
default: 'full',
},
];
}

View file

@ -13,6 +13,7 @@ import {
import {
dropboxApiRequest,
dropboxpiRequestAllItems,
getCredentials,
getRootDirectory,
simplify,
} from './GenericFunctions';
@ -793,15 +794,20 @@ export class Dropbox implements INodeType {
let headers: IDataObject = {};
let simple = false;
// get the root directory to set it as the default search folder
const { root_info: { root_namespace_id } } = await getRootDirectory.call(this);
headers = {
'dropbox-api-path-root': JSON.stringify({
'.tag': 'root',
'root': root_namespace_id,
}),
};
const { accessType } = getCredentials.call(this);
if (accessType === 'full') {
// get the root directory to set it as the default for all operations
const { root_info: { root_namespace_id } } = await getRootDirectory.call(this);
headers = {
'dropbox-api-path-root': JSON.stringify({
'.tag': 'root',
'root': root_namespace_id,
}),
};
}
for (let i = 0; i < items.length; i++) {
body = {};

View file

@ -114,4 +114,12 @@ export function simplify(data: IDataObject[]) {
return results;
}
export function getCredentials(this: IExecuteFunctions) {
const authenticationMethod = this.getNodeParameter('authentication', 0) as string;
if (authenticationMethod === 'accessToken') {
return this.getCredentials('dropboxApi') as IDataObject;
} else {
return this.getCredentials('dropboxOAuth2Api') as IDataObject;
}
}