NodeJs 获取 Confluence 信息

2023-03-18 17:01:20 浏览数 (1)


前言

之前我们写了一篇 - Jira 任务同步到 Microsoft Teams 的文章。今天我们来讲讲获取 Confluence 的信息。获取信息后将其同步到 Microsoft Teams 的操作请参考 发送数据到 Microsoft Teams 的 Channel 上。

本文操作的 Node 版本是 v12.20.2npm 版本是 6.14.11,使用了 koa 库,且在 mac m1 系统上运行。下面我们一步步来操作~

配置 Confluence 信息

在进行接口请求之前,我们需要用到下面的这些配置信息。

代码语言:javascript复制
{
  "confluence": {
    "username": "your_username",
    "password": "your_password",
    "hostname": "https://your_domain.com"
  }
}

我们获取这些配置,其中用用户名和密码用来生成 tokenhostname 表明我们将连接的服务地址。

我们结合 config 使用:

代码语言:javascript复制
import config from 'config'

const confluence_token = Buffer.from(`${ config.confluence.username }:${ config.confluence.password }`).toString('base64')

或者,我们可以结合 dotenv 使用:

代码语言:javascript复制
const dotenv = require('dotenv');
dotenv.config();
const username = process.env.username;
const password = process.env.password;

const confluence_token = Buffer.from(`${username}:${password}`).toString('base64');

连接服务

这里使用 axios 进行服务连接:

代码语言:javascript复制
const axios = require('axios'); // 网络请求库

axios.get(`${ config.confulence.hostname }/rest/api/content/search`, {
  headers: {
    Authorization: `Basic ${ confluence_token }`
  }
})

上面的案例是以 get 接口为例,引入了 axios 网络请求库。并且,在请求头上添加请求的凭证,即可访问 confluence 服务。

下面我们用例子讲讲如何调用。

调用示范

我们假设有下面两个简单的场景:

1. 获取 Confluence 上指定人员创建,且类型是文档,指定创建时间范围的记录

代码语言:javascript复制
class Demo {
  // 类静态方法
  static async getPersonalCreatedConfluence(creator, timeRange) {
    return await axios.get(`${config.confluence.hostname}/rest/api/content/search`, {
      params: {
        // cql
        cql: `creator = ${ creator } and type = page and created >= ${ timeRange[0] } and created <= ${ timeRange[1] }`,
        limit: 100,
        expand: 'history',
      },
      headers: {
        Authorization: `Basic ${confluence_token}`
      }
    })
  }
}
// 调用
Demo.getPersonalCreatedConfluence('jimmy', ['2023-03-15', '2023-03-16'])

上面采用了 cqlConfluence Query Language 查询方式,我们指定 creatortypetimeRange。我们还限制了一次查询出来一页展示 100 条数据,并将操作的历史查询出来。更多相关 CQL 的内容,可以点击 Adcanced Searching using CQL。

2. 获取 Confluence 上指定人员更新,且类型是文档,指定修改时间范围的记录

代码语言:javascript复制
class Demo {
  static async getPersonalUpdateConfluence(contributor, timeRange) {
    return await axios.get(`${config.confluence.hostname}/rest/api/content/search`, {
      params: {
        // cql
        cql: `contributor = ${ contributor } and type = page and lastModified >= ${ timeRange[0] } and lastModified <= ${ timeRange[1] }`,
        limit: 100,
        expand: 'history.lastUpdated',
      },
      headers: {
        Authorization: `Basic ${confluence_token}`
      }
    });
  }
}
//  调用同上
Demo.getPersonalUpdateConfluence('jimmy', ['2023-03-15', '2023-03-16'])

代码跟上面

0 人点赞