Small improvements to ZohoCRM-Node and OAuth fix

This commit is contained in:
Jan Oberhauser 2020-02-14 18:48:58 -08:00
parent f938693695
commit 6a08fc9da3
6 changed files with 46 additions and 17 deletions

View file

@ -955,17 +955,14 @@ class App {
let options = {};
// Here we need a variable that can be set on the credentials
// so that base on that include the credentails on the body or
// leave it as default with woukd include the credentails on the header.
// if (thatvariableistrue) {
// options = {
// body: {
// client_id: _.get(oauthCredentials, 'clientId') as string,
// client_secret: _.get(oauthCredentials, 'clientSecret', '') as string,
// },
// }
// }
if (_.get(oauthCredentials, 'authentication', 'header') as string === 'body') {
options = {
body: {
client_id: _.get(oauthCredentials, 'clientId') as string,
client_secret: _.get(oauthCredentials, 'clientSecret', '') as string,
},
};
}
const oAuthObj = new clientOAuth2({
clientId: _.get(oauthCredentials, 'clientId') as string,

View file

@ -37,5 +37,11 @@ export class GithubOAuth2Api implements ICredentialType {
type: 'hidden' as NodePropertyTypes,
default: '',
},
{
displayName: 'Authentication',
name: 'authentication',
type: 'hidden' as NodePropertyTypes,
default: 'header',
},
];
}

View file

@ -53,5 +53,24 @@ export class OAuth2Api implements ICredentialType {
description: 'For some services additional query parameters have to be set which can be defined here.',
placeholder: 'access_type=offline',
},
{
displayName: 'Authentication',
name: 'authentication',
type: 'options' as NodePropertyTypes,
options: [
{
name: 'Body',
value: 'body',
description: 'Send credentials in body',
},
{
name: 'Header',
value: 'header',
description: 'Send credentials as Basic Auth header',
},
],
default: 'header',
description: 'Resource to consume.',
},
];
}

View file

@ -68,7 +68,13 @@ export class ZohoOAuth2Api implements ICredentialType {
displayName: 'Auth URI Query Parameters',
name: 'authQueryParameters',
type: 'hidden' as NodePropertyTypes,
default: 'access_type=online',
default: 'access_type=offline',
},
{
displayName: 'Authentication',
name: 'authentication',
type: 'hidden' as NodePropertyTypes,
default: 'body',
},
];
}

View file

@ -9,12 +9,9 @@ import {
} from 'n8n-workflow';
export async function zohoApiRequest(this: IExecuteFunctions | IExecuteSingleFunctions | ILoadOptionsFunctions, method: string, resource: string, body: any = {}, qs: IDataObject = {}, uri?: string, option: IDataObject = {}): Promise<any> { // tslint:disable-line:no-any
const credentials = this.getCredentials('zohoOAuth2Api');
const options: OptionsWithUri = {
headers: {
'Content-Type': 'application/json',
//@ts-ignore
Authorization: `Zoho-oauthtoken ${credentials!.oauthTokenData.access_token}`
},
method,
body: {

View file

@ -80,12 +80,16 @@ export class ZohoCrm implements INodeType {
// }
responseData = await zohoApiRequest.call(this, 'POST', '/leads', body);
responseData = responseData.data;
} else {
throw new Error(`The operation "${operation}" is not known!`);
}
} else {
throw new Error(`The resource "${resource}" is not known!`);
}
if (Array.isArray(responseData)) {
returnData.push.apply(returnData, responseData as IDataObject[]);
} else {
} else if (responseData !== undefined) {
returnData.push(responseData as IDataObject);
}
}