Minor improvements to Jira-Node

This commit is contained in:
Jan Oberhauser 2020-05-05 22:56:24 +02:00
parent e4cc3a4bc9
commit 79a09c98a7
2 changed files with 30 additions and 25 deletions

View file

@ -1,4 +1,4 @@
import { import {
OptionsWithUri, OptionsWithUri,
} from 'request'; } from 'request';
@ -9,30 +9,35 @@ import {
ILoadOptionsFunctions, ILoadOptionsFunctions,
} from 'n8n-core'; } from 'n8n-core';
import { import {
IDataObject, IDataObject,
ICredentialDataDecryptedObject, ICredentialDataDecryptedObject,
} from 'n8n-workflow'; } from 'n8n-workflow';
export async function jiraSoftwareCloudApiRequest(this: IHookFunctions | IExecuteFunctions | IExecuteSingleFunctions | ILoadOptionsFunctions, endpoint: string, method: string, body: any = {}, query?: IDataObject, uri?: string): Promise<any> { // tslint:disable-line:no-any export async function jiraSoftwareCloudApiRequest(this: IHookFunctions | IExecuteFunctions | IExecuteSingleFunctions | ILoadOptionsFunctions, endpoint: string, method: string, body: any = {}, query?: IDataObject, uri?: string): Promise<any> { // tslint:disable-line:no-any
let data; let domain; let data; let domain;
let jiraCloudCredentials: ICredentialDataDecryptedObject | undefined;
try { const jiraVersion = this.getNodeParameter('jiraVersion', 0) as string;
jiraCloudCredentials = this.getCredentials('jiraSoftwareCloudApi');
} catch (error) { let jiraCredentials: ICredentialDataDecryptedObject | undefined;
if (jiraVersion === 'server') {
jiraCredentials = this.getCredentials('jiraSoftwareServerApi');
} else {
jiraCredentials = this.getCredentials('jiraSoftwareCloudApi');
} }
const jiraServerCredentials = this.getCredentials('jiraSoftwareServerApi');
if (jiraCloudCredentials === undefined && jiraServerCredentials === undefined) { if (jiraCredentials === undefined) {
throw new Error('No credentials got returned!'); throw new Error('No credentials got returned!');
} }
if (jiraCloudCredentials !== undefined) {
domain = jiraCloudCredentials!.domain; if (jiraVersion === 'server') {
data = Buffer.from(`${jiraCloudCredentials!.email}:${jiraCloudCredentials!.apiToken}`).toString('base64'); domain = jiraCredentials!.domain;
data = Buffer.from(`${jiraCredentials!.email}:${jiraCredentials!.password}`).toString('base64');
} else { } else {
domain = jiraServerCredentials!.domain; domain = jiraCredentials!.domain;
data = Buffer.from(`${jiraServerCredentials!.email}:${jiraServerCredentials!.password}`).toString('base64'); data = Buffer.from(`${jiraCredentials!.email}:${jiraCredentials!.apiToken}`).toString('base64');
} }
const options: OptionsWithUri = { const options: OptionsWithUri = {
headers: { headers: {
Authorization: `Basic ${data}`, Authorization: `Basic ${data}`,

View file

@ -141,11 +141,11 @@ export class JiraSoftwareCloud implements INodeType {
const issueTypes = await jiraSoftwareCloudApiRequest.call(this, '/issuetype', 'GET'); const issueTypes = await jiraSoftwareCloudApiRequest.call(this, '/issuetype', 'GET');
const jiraVersion = this.getCurrentNodeParameter('jiraVersion') as string; const jiraVersion = this.getCurrentNodeParameter('jiraVersion') as string;
if (jiraVersion === "server") { if (jiraVersion === 'server') {
for (const issueType of issueTypes) { for (const issueType of issueTypes) {
const issueTypeName = issueType.name; const issueTypeName = issueType.name;
const issueTypeId = issueType.id; const issueTypeId = issueType.id;
returnData.push({ returnData.push({
name: issueTypeName, name: issueTypeName,
value: issueTypeId, value: issueTypeId,
@ -156,7 +156,7 @@ export class JiraSoftwareCloud implements INodeType {
if (issueType.scope.project.id === projectId) { if (issueType.scope.project.id === projectId) {
const issueTypeName = issueType.name; const issueTypeName = issueType.name;
const issueTypeId = issueType.id; const issueTypeId = issueType.id;
returnData.push({ returnData.push({
name: issueTypeName, name: issueTypeName,
value: issueTypeId, value: issueTypeId,
@ -164,7 +164,7 @@ export class JiraSoftwareCloud implements INodeType {
} }
} }
} }
return returnData; return returnData;
}, },
@ -210,10 +210,10 @@ export class JiraSoftwareCloud implements INodeType {
// select them easily // select them easily
async getUsers(this: ILoadOptionsFunctions): Promise<INodePropertyOptions[]> { async getUsers(this: ILoadOptionsFunctions): Promise<INodePropertyOptions[]> {
const returnData: INodePropertyOptions[] = []; const returnData: INodePropertyOptions[] = [];
const jiraVersion = this.getCurrentNodeParameter("jiraVersion") as string; const jiraVersion = this.getCurrentNodeParameter('jiraVersion') as string;
if (jiraVersion === "server") { if (jiraVersion === 'server') {
// the interface call must bring username // the interface call must bring username
const users = await jiraSoftwareCloudApiRequest.call(this, "/user/search", "GET", {}, const users = await jiraSoftwareCloudApiRequest.call(this, '/user/search', 'GET', {},
{ {
username: "'", username: "'",
} }
@ -221,7 +221,7 @@ export class JiraSoftwareCloud implements INodeType {
for (const user of users) { for (const user of users) {
const userName = user.displayName; const userName = user.displayName;
const userId = user.name; const userId = user.name;
returnData.push({ returnData.push({
name: userName, name: userName,
value: userId, value: userId,
@ -240,7 +240,7 @@ export class JiraSoftwareCloud implements INodeType {
}); });
} }
} }
return returnData; return returnData;
}, },
@ -324,7 +324,7 @@ export class JiraSoftwareCloud implements INodeType {
}; };
} }
if (additionalFields.assignee) { if (additionalFields.assignee) {
if (jiraVersion === "server") { if (jiraVersion === 'server') {
fields.assignee = { fields.assignee = {
name: additionalFields.assignee as string, name: additionalFields.assignee as string,
}; };
@ -386,7 +386,7 @@ export class JiraSoftwareCloud implements INodeType {
}; };
} }
if (updateFields.assignee) { if (updateFields.assignee) {
if (jiraVersion === "server") { if (jiraVersion === 'server') {
fields.assignee = { fields.assignee = {
name: updateFields.assignee as string, name: updateFields.assignee as string,
}; };