credentials update

This commit is contained in:
Michael Kret 2022-05-31 10:46:20 +03:00
parent e6fef4b494
commit 2ca27006fd
3 changed files with 21 additions and 54 deletions

View file

@ -1,4 +1,6 @@
import {
IAuthenticateHeaderAuth,
ICredentialTestRequest,
ICredentialType,
INodeProperties,
} from 'n8n-workflow';
@ -28,4 +30,18 @@ export class GithubApi implements ICredentialType {
default: '',
},
];
authenticate: IAuthenticateHeaderAuth = {
type: 'headerAuth',
properties: {
name: 'Authorization',
value: '=token {{$credentials?.accessToken}}',
},
};
test: ICredentialTestRequest = {
request: {
baseURL: '={{$credentials?.server}}',
url: '/user',
method: 'GET',
},
};
}

View file

@ -37,23 +37,23 @@ export async function githubApiRequest(this: IHookFunctions | IExecuteFunctions,
try {
const authenticationMethod = this.getNodeParameter('authentication', 0, 'accessToken') as string;
let credentialType = '';
if (authenticationMethod === 'accessToken') {
const credentials = await this.getCredentials('githubApi');
credentialType = 'githubApi';
const baseUrl = credentials!.server || 'https://api.github.com';
options.uri = `${baseUrl}${endpoint}`;
options.headers!.Authorization = `token ${credentials.accessToken}`;
return await this.helpers.request(options);
} else {
const credentials = await this.getCredentials('githubOAuth2Api');
credentialType = 'githubOAuth2Api';
const baseUrl = credentials.server || 'https://api.github.com';
options.uri = `${baseUrl}${endpoint}`;
//@ts-ignore
return await this.helpers.requestOAuth2.call(this, 'githubOAuth2Api', options);
}
return await this.helpers.requestWithAuthentication.call(this, credentialType, options);
} catch (error) {
throw new NodeApiError(this.getNode(), error);
}

View file

@ -1,16 +1,9 @@
import {
OptionsWithUri,
} from 'request';
import {
IExecuteFunctions,
} from 'n8n-core';
import {
ICredentialsDecrypted,
ICredentialTestFunctions,
IDataObject,
INodeCredentialTestResult,
INodeExecutionData,
INodeType,
INodeTypeDescription,
@ -45,7 +38,6 @@ export class Github implements INodeType {
{
name: 'githubApi',
required: true,
testedBy: 'githubApiTest',
displayOptions: {
show: {
authentication: ['accessToken'],
@ -1594,47 +1586,6 @@ export class Github implements INodeType {
],
};
methods = {
credentialTest: {
async githubApiTest(
this: ICredentialTestFunctions,
credential: ICredentialsDecrypted,
): Promise<INodeCredentialTestResult> {
const credentials = credential.data;
const baseUrl = (credentials!.server as string) || 'https://api.github.com';
const options: OptionsWithUri = {
method: 'GET',
headers: {
'User-Agent': 'n8n',
Authorization: `token ${credentials!.accessToken}`,
},
uri: baseUrl.endsWith('/') ? baseUrl + 'user' : baseUrl + '/user',
json: true,
timeout: 5000,
};
try {
const response = await this.helpers.request(options);
if (!response.id) {
return {
status: 'Error',
message: `Token is not valid: ${response.error}`,
};
}
} catch (error) {
return {
status: 'Error',
message: `Settings are not valid: ${error}`,
};
}
return {
status: 'OK',
message: 'Authentication successful!',
};
},
},
};
async execute(this: IExecuteFunctions): Promise<INodeExecutionData[][]> {
const items = this.getInputData();
const returnData: IDataObject[] = [];