UNPKG

gaunt-sloth-assistant

Version:

[![Tests and Lint](https://github.com/Galvanized-Pukeko/gaunt-sloth-assistant/actions/workflows/unit-tests.yml/badge.svg)](https://github.com/Galvanized-Pukeko/gaunt-sloth-assistant/actions/workflows/unit-tests.yml) [![Integration Tests](https://github.co

62 lines 2.74 kB
import { display, displayError, displayWarning } from '#src/consoleUtils.js'; import { getJiraCredentials, jiraRequest } from '#src/helpers/jira/jiraClient.js'; /** * Gets Jira issue using Atlassian REST API v3 with Personal Access Token * * TODO we need to figure out how would this work with public jira. * * @param config Jira configuration * @param issueId Jira issue ID * @returns Jira issue content */ export async function get(config, issueId) { if (!config) { displayWarning('No Jira config provided'); return null; } if (!issueId) { displayWarning('No issue ID provided'); return null; } const credentials = getJiraCredentials(config); try { const issue = await getJiraIssue(credentials, issueId); if (!issue) { return null; } const summary = issue.fields.summary; const description = issue.fields.description; return `Jira Issue: ${issueId}\nSummary: ${summary}\n\nDescription:\n${description}`; } catch (error) { displayError(`Failed to get Jira issue: ${error instanceof Error ? error.message : String(error)}`); return null; } } /** * Helper function to get Jira issue details using Atlassian REST API v2. * * The feature was initially developed to use Atlassian REST API v3, which by * default returns the ADF JSON format for description, which is not very useful for us. * * @param config Jira configuration * @param jiraKey Jira issue ID * @returns Jira issue response */ async function getJiraIssue(credentials, jiraKey) { // Jira Cloud ID can be found by authenticated user at https://company.atlassian.net/_edge/tenant_info // According to doc https://developer.atlassian.com/cloud/jira/platform/rest/v3/api-group-issues/#api-rest-api-3-issue-issueidorkey-get permissions to read this resource: // https://developer.atlassian.com/cloud/jira/platform/rest/v2/api-group-issues/#api-rest-api-2-issue-issueidorkey-get // either Classic (RECOMMENDED) read:jira-work // or Granular read:issue-meta:jira, read:issue-security-level:jira, read:issue.vote:jira, read:issue.changelog:jira, // read:avatar:jira, read:issue:jira, read:status:jira, read:user:jira, read:field-configuration:jira if (credentials.displayUrl) { display(`Loading Jira issue ${credentials.displayUrl}${jiraKey}`); } // This filter will be necessary for V3: `&expand=renderedFields` to convert ADF to HTML const filters = '?fields=summary,description'; // Limit JSON to summary and description return jiraRequest(credentials, `/rest/api/2/issue/${jiraKey}${filters}`, { method: 'GET', }); } //# sourceMappingURL=jiraIssueProvider.js.map