import fs from 'fs' import http from 'http' import path from 'path' import fetch from 'node-fetch' import { createRequire } from "module"; const require = createRequire(import.meta.url); const jiraReq = require("./JiraInput.json"); export class ConfluenceTools{ constructor(domain_name, board_id){ this.domain_name = domain_name; this.board_id = board_id; } get_all_pages(){ console.log("Getting all Pages\n\n"); let pages = []; fetch(`https://${this.domain_name}.atlassian.net/wiki/rest/api/space/${this.board_id}/content/page?start=0&limit=1000`, { method: 'GET', authorization: jiraReq.authStr, headers: { 'Authorization': jiraReq.authStr, 'Accept': 'application/json', 'Content-Type': 'application/json' } }) .then(response => { console.log(`Response: ${response.status}`); return response.text(); }) .then(text => { const obj = JSON.parse(text); const num_pages = obj.size; for(let i = 0; i < num_pages; i++) { pages.push({"id":obj.results[i].id, "status":obj.results[i].status, "title":obj.results[i].title, "link":`https://${this.domain_name}.atlassian.net/wiki${obj.results[i]._links.tinyui}`}); } console.log({"Pages":pages}); return pages; }) .catch(err => console.error(err)); } get_content(contentID){ console.log(`Getting Content: ${contentID}\n\n`); fetch(`https://${this.domain_name}.atlassian.net/wiki/rest/api/content/${contentID}`, { method: 'GET', authorization: jiraReq.authStr, headers: { 'Authorization': jiraReq.authStr, 'Accept': 'application/json', 'Content-Type': 'application/json' } }) .then(response => { console.log(`Response: ${response.status}`); return response.text(); }) .then(text => { const obj = JSON.parse(text); const data = { title: `${obj.title}`, type: `${obj.type}`, status: `${obj.status}`, space: { name: `${obj.space.name}`, key: `${obj.space.key}` }, link: `https://${this.domain_name}.atlassian.net/wiki${obj._links.tinyui}` }; console.log(data); return {data}; }) .catch(err => console.error(err)); } create_content(content_type, content_title, content_body){ const bodyData = `{ "type":"${content_type}", "title":"${content_title}", "space":{"key":"${this.board_id}"}, "body":{"storage": {"value":"<p>${content_body}</p>","representation":"storage"}}}` fetch(`https://${this.domain_name}.atlassian.net/wiki/rest/api/content/`, { method: 'POST', headers: { 'Authorization': jiraReq.authStr, 'Accept': 'application/json', 'Content-Type': 'application/json' }, body: bodyData }) .then(response => { console.log(`Response: ${response.status} ${response.statusText}`); return response.text(); }) .then(text => { const obj = JSON.parse(text); const content_link = `https://${this.domain_name}.atlassian.net/wiki${obj._links.tinyui}`; console.log(content_link); return content_link }) .catch(err => console.error(err)); } } //testing stuff //const test = new ConfluenceTools("wdcapstonetest","VG"); //test.get_all_pages(); //test.get_content('851969'); //test.create_content("page","Title Page API Test 6", "Hi Vova");