gaunt-sloth-assistant
Version:
[](https://github.com/Galvanized-Pukeko/gaunt-sloth-assistant/actions/workflows/unit-tests.yml) [
* @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;
}
if (!config.baseUrl) {
displayWarning('No Jira base URL provided');
return null;
}
// Get username from environment variable or config
const username = env.JIRA_USERNAME || config.username;
if (!username) {
throw new Error('Missing JIRA username. The username can be defined as JIRA_USERNAME environment variable or as "username" in config.');
}
// Get token from environment variable or config
const token = env.JIRA_LEGACY_API_TOKEN || config.token;
if (!token) {
throw new Error('Missing JIRA Legacy API token. The legacy token can be defined as JIRA_LEGACY_API_TOKEN environment variable or as "token" in config.');
}
try {
const issue = await getJiraIssue({
...config,
username,
token,
}, 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
* @param config Jira configuration
* @param issueId Jira issue ID
* @returns Jira issue response
*/
async function getJiraIssue(config, issueId) {
const auth = Buffer.from(`${config.username}:${config.token}`).toString('base64');
const url = `${config.baseUrl}${issueId}`;
if (config.displayUrl) {
display(`Loading Jira issue ${config.displayUrl}${issueId}`);
}
display(`Retrieving jira from api ${url.replace(/^https?:\/\//, '')}`);
const response = await fetch(url, {
headers: {
Authorization: `Basic ${auth}`,
Accept: 'application/json',
},
});
if (!response.ok) {
throw new Error(`Failed to fetch Jira issue from ${url} with status: ${response.statusText}`);
}
return response.json();
}
//# sourceMappingURL=jiraIssueLegacyProvider.js.map