mirror of
https://github.com/n8n-io/n8n.git
synced 2025-02-21 02:56:40 -08:00
fix(Action Network Node): Fix pagination issue and add credential test (#3011)
* fix(Action Network Node): Pagination
* Fixed lint issue
* Added credential test
* ⚡ Move credentials verification and injection to the credentials file
Co-authored-by: Jonathan Bennetts <jonathan.bennetts@gmail.com>
Co-authored-by: ricardo <ricardoespinoza105@gmail.com>
This commit is contained in:
parent
e964c83f46
commit
9ef339e525
|
@ -1,5 +1,8 @@
|
|||
import {
|
||||
ICredentialDataDecryptedObject,
|
||||
ICredentialTestRequest,
|
||||
ICredentialType,
|
||||
IHttpRequestOptions,
|
||||
INodeProperties,
|
||||
} from 'n8n-workflow';
|
||||
|
||||
|
@ -15,4 +18,14 @@ export class ActionNetworkApi implements ICredentialType {
|
|||
default: '',
|
||||
},
|
||||
];
|
||||
test: ICredentialTestRequest = {
|
||||
request: {
|
||||
baseURL: 'https://actionnetwork.org/api/v2',
|
||||
url: '/events?per_page=1',
|
||||
},
|
||||
};
|
||||
async authenticate(credentials: ICredentialDataDecryptedObject, requestOptions: IHttpRequestOptions): Promise<IHttpRequestOptions> {
|
||||
requestOptions.headers = { 'OSDI-API-Token': credentials.apiKey };
|
||||
return requestOptions;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -6,7 +6,6 @@ import {
|
|||
IDataObject,
|
||||
ILoadOptionsFunctions,
|
||||
NodeApiError,
|
||||
NodeOperationError,
|
||||
} from 'n8n-workflow';
|
||||
|
||||
import {
|
||||
|
@ -35,16 +34,7 @@ export async function actionNetworkApiRequest(
|
|||
body: IDataObject = {},
|
||||
qs: IDataObject = {},
|
||||
) {
|
||||
const credentials = await this.getCredentials('actionNetworkApi') as { apiKey: string } | undefined;
|
||||
|
||||
if (credentials === undefined) {
|
||||
throw new NodeOperationError(this.getNode(), 'No credentials got returned!');
|
||||
}
|
||||
|
||||
const options: OptionsWithUri = {
|
||||
headers: {
|
||||
'OSDI-API-Token': credentials.apiKey,
|
||||
},
|
||||
method,
|
||||
body,
|
||||
qs,
|
||||
|
@ -61,7 +51,7 @@ export async function actionNetworkApiRequest(
|
|||
}
|
||||
|
||||
try {
|
||||
return await this.helpers.request!(options);
|
||||
return await this.helpers.requestWithAuthentication.call(this, 'actionNetworkApi', options);
|
||||
} catch (error) {
|
||||
throw new NodeApiError(this.getNode(), error);
|
||||
}
|
||||
|
@ -95,13 +85,15 @@ export async function handleListing(
|
|||
return returnData.slice(0, limit);
|
||||
}
|
||||
|
||||
qs.page = responseData.page as number;
|
||||
} while (responseData.total_pages && qs.page < responseData.total_pages);
|
||||
if (responseData._links && responseData._links.next && responseData._links.next.href) {
|
||||
const queryString = new URLSearchParams(responseData._links.next.href.split('?')[1]);
|
||||
qs.page = queryString.get('page') as string;
|
||||
}
|
||||
} while (responseData._links && responseData._links.next);
|
||||
|
||||
return returnData;
|
||||
}
|
||||
|
||||
|
||||
// ----------------------------------------
|
||||
// helpers
|
||||
// ----------------------------------------
|
||||
|
|
|
@ -186,10 +186,11 @@ export const personFields: INodeProperties[] = [
|
|||
displayName: 'Limit',
|
||||
name: 'limit',
|
||||
type: 'number',
|
||||
default: 50,
|
||||
default: 25,
|
||||
description: 'The number of results to return.',
|
||||
typeOptions: {
|
||||
minValue: 1,
|
||||
maxValue: 25,
|
||||
},
|
||||
displayOptions: {
|
||||
show: {
|
||||
|
|
Loading…
Reference in a new issue