util lib for TMS related scripts
Tính đến
Script này sẽ không được không được cài đặt trực tiếp. Nó là một thư viện cho các script khác để bao gồm các chỉ thị meta
// @require https://update.greasyfork.org/scripts/486123/1320358/TMS_Library.js
// ==UserScript==
// @name TMS_Library
// @namespace http://tampermonkey.net/
// @version 2024-01-31#4
// @description util lib for TMS related scripts
// @author bliushtein
// @icon data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==
// @grant GM_xmlhttpRequest
// ==/UserScript==
const Constants = {
DESIGN_GAP: "DesignGap",
CROSS_STREAM_GAP: "CrossStreamGap",
OVERHEAD_TYPES: ["DesignGap", "CrossStreamGap"],
DEV_STORY: "DevStory",
DESIGN_STORY: "DesignChapter",
BA_COMMUNICATION: "BACommunication",
CROSS_STREAM_COMMUNICATION: "CrossStreamCommunication",
DEV_TEST: "DevTest",
}
function delay(milliseconds){
return new Promise(resolve => {
setTimeout(resolve, milliseconds);
});
}
function sendRequest(url, method = 'GET', body = null) {
console.log(url, method, body);
return new Promise((resolve, reject) => {
GM_xmlhttpRequest({
method: method,
timeout: 5000,
onerror: reject,
ontimeout: reject,
onload: resolve,
headers: {
Accept: 'application/json',
'Content-Type': 'application/json',
// If a user agent is not passed - a POST request fails with 403 error
'User-Agent': 'Any',
},
data: body,
url: url,
});
}).then(response => {
if ([200, 201].indexOf(response.status) !== -1) {
if (response.responseText == null) {
return {};
}
return JSON.parse(response.responseText);
}
throw new Error(response.status + ' ' + response.statusText + ' ' + response.responseText);
});
}
async function getIssues(keys, fields = ["timetracking", "components", "issuetype", "labels", "priority", "customfield_10200", "customfield_10201", "customfield_10006", "summary", "status", "issuelinks"]) {
if (keys.length == 0) {
return {issues: []};
}
return await sendRequest(`https://tms.netcracker.com/rest/api/latest/search?jql=issuekey IN (${keys.join(",")})&fields=${fields.join(",")}`);
}
async function getSubtasts(keys, fields = ["timetracking", "components", "issuetype", "labels", "status"]) {
if (keys.length == 0) {
return {issues: []};
}
return await sendRequest(`https://tms.netcracker.com/rest/api/latest/search?jql=parent IN (${keys.join(",")})&fields=${fields.join(",")}`);
}