跳到正文

適用版本: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 會以一個錯誤拒絕,其 code 為:

code意思
NEED_LOGINCowork 無法在該網站開啟分頁,或網站回應使用者未登入
SITE_NOT_ALLOWED主機、方法或路徑不在 dozin.sites 裡
RATE_LIMITED網站回應 429
NETWORK_ERROR請求沒有到達網站
BAD_REQUESTquery 或 body 無效、GET 帶了 body,或參數無法傳給 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