UNPKG

synergia-jira-connector

Version:

Easy to use NodeJS wrapper for the Jira REST API.

95 lines (83 loc) 3.45 kB
"use strict"; var errorStrings = require('./../lib/error'); module.exports = IssueLinkClient; /** * Used to access Jira REST endpoints in '/rest/api/2/issueLink' * @param {JiraClient} jiraClient * @constructor IssueLinkClient */ function IssueLinkClient (jiraClient) { this.jiraClient = jiraClient; /** * Creates an issue link between two issues. The user requires the link issue permission for the issue which will * be linked to another issue. The specified link type in the request is used to create the link and will create a * link from the first issue to the second issue using the outward description. It also create a link from the * second issue to the first issue using the inward description of the issue link type. It will add the supplied * comment to the first issue. The comment can have a restriction who can view it. If group is specified, only * users of this group can view this comment, if roleLevel is specified only users who have the specified role can * view this comment. The user who creates the issue link needs to belong to the specified group or have the * specified role. * * @memberOf IssueLinkClient# * @method createIssueLink * @param opts The options for the request sent to the Jira API * @param opts.issueLink See {@link https://docs.atlassian.com/jira/REST/latest/#d2e5010} * @param callback Called when the link has been created. */ this.createIssueLink = function (opts, callback) { if (!opts.issueLink) { throw new Error(errorStrings.NO_ISSUE_LINK_ERROR); } var options = { method: 'POST', uri: this.jiraClient.buildURL('/issueLink'), json: true, followAllRedirects: true, body: opts.issueLink }; this.jiraClient.makeRequest(options, callback, 'Issue Link Created'); }; /** * Gets an issue link with the specified id. * * @method getIssueLink * @memberOf IssueLinkClient# * @param opts The options used in the request to the Jira API * @param opts.linkId The id of the link to retrieve. * @param callback Called when the Issue Link has been retrieved. */ this.getIssueLink = function (opts, callback) { if (!opts.linkId) { throw new Error(errorStrings.NO_ISSUE_LINK_ID_ERROR); } var options = { method: 'GET', uri: this.jiraClient.buildURL('/issueLink/' + opts.linkId), json: true, followAllRedirects: true }; this.jiraClient.makeRequest(options, callback); }; /** * Deletes an issue link with the specified id. To be able to delete an issue link you must be able to view both * issues and must have the link issue permission for at least one of the issues. * * @method deleteIssueLink * @memberOf IssueLinkClient# * @param opts The options used in the request to the Jira API * @param opts.linkId The id of the link to delete. * @param callback Called when the Issue Link has been deleted. */ this.deleteIssueLink = function (opts, callback) { if (!opts.linkId) { throw new Error(errorStrings.NO_ISSUE_LINK_ID_ERROR); } var options = { method: 'DELETE', uri: this.jiraClient.buildURL('/issueLink/' + opts.linkId), json: true, followAllRedirects: true }; this.jiraClient.makeRequest(options, callback, 'Issue Link Deleted'); }; }