跳到正文

适用版本:Cowork 0.1.45 · 适用于所有 Cowork 用户

查看 Markdown

站点请求 ​

尚未发布

让后台任务借用 Cowork 里某个网站标签页的登录状态,调用该网站的 API。那里没有打开的标签页时,Cowork 会在后台打开一个。Cowork 从那个标签页发出请求;cookie、token 或请求头都不会到达 Extension。只允许 dozin.sites 里列出的站点、方法和路径。

dozin.sites ​

字段类型必填说明
hoststring是小写主机名,不含协议、端口或路径
methodsstring[]是GET、POST、PUT、PATCH、DELETE 中的任意几个
pathPrefixesstring[]是1–16 个路径,请求路径必须以其中之一开头
minIntervalMsnumber否对这个主机的两次请求之间的最短间隔;默认 1000,最多 60000

ctx.site.request(request) 尚未发布 ​

名称类型必填说明
request.hoststring是dozin.sites 里的某个 host
request.methodstring否默认 GET
request.pathstring是以 / 开头,并以某个 pathPrefixes 开头;不能含 ?、#、..
request.queryRecord<string, string | number | boolean>否每个键一个值
request.bodyunknown否JSON 请求体;GET 不允许

返回值 ​

Promise<{ status: number, contentType: string | null, body: unknown }>。响应是 JSON 时,body 为解析后的 JSON。

错误 ​

promise 以一个错误 reject,其 code 为:

code含义
NEED_LOGINCowork 无法在该站点上打开标签页,或站点回应用户未登录
SITE_NOT_ALLOWED主机、方法或路径不在 dozin.sites 里
RATE_LIMITED站点返回 429
NETWORK_ERROR请求没有到达站点
BAD_REQUESTquery 或请求体无效、GET 带了请求体,或参数无法发送给 Cowork
RUN_ENDED发起调用的那次运行已经结束

ctx.site.session(host) 尚未发布 ​

判断用户在该站点上是否看起来已登录。

名称类型必填说明
hoststring是dozin.sites 里的某个 host

返回 Promise<{ loggedIn: boolean | null }>:有对该站点的上一次请求时,为那次请求的结果;否则,打开了该站点的标签页时为 null(Cowork 还无法判断),没有打开时为 false。

示例 ​

js
const { loggedIn } = await ctx.site.session('welladjustedhk.janeapp.com');
if (loggedIn === false) return ctx.status('Please log in to Jane', 'warn');
try {
  const res = await ctx.site.request({ host: 'welladjustedhk.janeapp.com', path: '/admin/api/v2/locations' });
  ctx.status(`OK · HTTP ${res.status}`);
} catch (error) {
  ctx.status(error.code === 'NEED_LOGIN' ? 'Please log in to Jane' : `Error: ${error.code}`, 'error');
}

相关 ​

适用于 Micromeet Cowork 0.1.41 · build 261111110020