| 
									
										
										
										
											2021-12-02 12:23:05 +02:00
										 |  |  | import { | 
					
						
							|  |  |  | 	OptionsWithUri, | 
					
						
							|  |  |  | } from 'request'; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | import { | 
					
						
							|  |  |  | 	IExecuteFunctions, | 
					
						
							|  |  |  | 	IExecuteSingleFunctions, | 
					
						
							|  |  |  | 	IHookFunctions, | 
					
						
							|  |  |  | 	ILoadOptionsFunctions, | 
					
						
							| 
									
										
										
										
											2022-05-26 17:06:30 +03:00
										 |  |  | } from 'n8n-core'; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | import { | 
					
						
							|  |  |  | 	IDataObject, | 
					
						
							| 
									
										
										
										
											2021-12-02 12:23:05 +02:00
										 |  |  | 	NodeApiError, | 
					
						
							|  |  |  | 	NodeOperationError, | 
					
						
							|  |  |  | } from 'n8n-workflow'; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | export async function friendGridApiRequest(this: IHookFunctions | IExecuteFunctions | IExecuteSingleFunctions | ILoadOptionsFunctions, | 
					
						
							| 
									
										
										
										
											2022-02-01 14:05:27 +02:00
										 |  |  | 	method: string, endpoint: string, body: object = {}, qs: object = {}, uri?: string): Promise<any> { // tslint:disable-line:no-any
 | 
					
						
							| 
									
										
										
										
											2021-12-02 12:23:05 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  | 	//Get credentials the user provided for this node
 | 
					
						
							|  |  |  | 	const credentials = await this.getCredentials('friendGridApi') as IDataObject; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	if (credentials === undefined) { | 
					
						
							|  |  |  | 		throw new NodeOperationError(this.getNode(), 'No credentials got returned!'); | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	//Make http request according to <https://sendgrid.com/docs/api-reference/>
 | 
					
						
							|  |  |  | 	const options: OptionsWithUri = { | 
					
						
							|  |  |  | 		method, | 
					
						
							|  |  |  | 		headers: { | 
					
						
							| 
									
										
										
										
											2022-05-20 00:58:23 +03:00
										 |  |  | 			'Accept': 'application/json', | 
					
						
							| 
									
										
										
										
											2021-12-02 12:23:05 +02:00
										 |  |  | 			'Authorization': `Bearer ${credentials.apiKey}`, | 
					
						
							|  |  |  | 		}, | 
					
						
							| 
									
										
										
										
											2022-02-01 13:33:51 +02:00
										 |  |  | 		qs, | 
					
						
							| 
									
										
										
										
											2021-12-02 12:23:05 +02:00
										 |  |  | 		body, | 
					
						
							| 
									
										
										
										
											2022-02-01 13:33:51 +02:00
										 |  |  | 		uri: uri || `https://api.sendgrid.com/v3/${endpoint}`, | 
					
						
							| 
									
										
										
										
											2021-12-02 12:23:05 +02:00
										 |  |  | 		json: true, | 
					
						
							|  |  |  | 	}; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	if (Object.keys(options.qs).length === 0) { | 
					
						
							|  |  |  | 		delete options.qs; | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | 	if (Object.keys(options.body).length === 0) { | 
					
						
							|  |  |  | 		delete options.body; | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	try { | 
					
						
							|  |  |  | 		return this.helpers.request!(options); | 
					
						
							| 
									
										
										
										
											2022-05-20 00:58:23 +03:00
										 |  |  | 	// tslint:disable-next-line:no-any
 | 
					
						
							|  |  |  | 	} catch (error: any) { | 
					
						
							| 
									
										
										
										
											2021-12-02 12:23:05 +02:00
										 |  |  | 		throw new NodeApiError(this.getNode(), error); | 
					
						
							|  |  |  | 	} | 
					
						
							| 
									
										
										
										
											2022-05-20 00:58:23 +03:00
										 |  |  | } |