Permintaan Situs
Belum dirilisMemungkinkan tugas latar belakang memanggil API sebuah situs web dengan login dari tab Cowork di situs itu. Jika belum ada tab yang terbuka di sana, Cowork membukanya di latar belakang. Cowork mengirim permintaan dari tab tersebut; tidak ada cookie, token, atau header yang pernah sampai ke Extension. Hanya situs, method, dan path yang tercantum di dozin.sites yang diizinkan.
dozin.sites
| Field | Tipe | Wajib | Deskripsi |
|---|---|---|---|
host | string | Ya | Nama host huruf kecil, tanpa skema, port, atau path |
methods | string[] | Ya | Satu atau lebih dari GET, POST, PUT, PATCH, DELETE |
pathPrefixes | string[] | Ya | 1–16 path yang harus menjadi awal permintaan |
minIntervalMs | number | Tidak | Jeda minimum antara dua permintaan ke host ini; default 1000, paling banyak 60000 |
ctx.site.request(request) Belum dirilis
| Nama | Tipe | Wajib | Deskripsi |
|---|---|---|---|
request.host | string | Ya | Sebuah host dari dozin.sites |
request.method | string | Tidak | Default GET |
request.path | string | Ya | Diawali / dan salah satu pathPrefixes; tanpa ?, #, .. |
request.query | Record<string, string | number | boolean> | Tidak | Satu nilai per key |
request.body | unknown | Tidak | Body JSON; tidak diizinkan dengan GET |
Nilai kembalian
Promise<{ status: number, contentType: string | null, body: unknown }>. body berupa JSON hasil parse jika responsnya JSON.
Error
Promise di-reject dengan error yang code-nya:
code | Arti |
|---|---|
NEED_LOGIN | Cowork tidak bisa membuka tab di situs itu, atau situs menjawab bahwa pengguna belum login |
SITE_NOT_ALLOWED | Host, method, atau path tidak ada di dozin.sites |
RATE_LIMITED | Situs menjawab 429 |
NETWORK_ERROR | Permintaan tidak sampai ke situs |
BAD_REQUEST | Query atau body tidak valid, body dengan GET, atau argumen yang tidak bisa dikirim ke Cowork |
RUN_ENDED | Run yang melakukan panggilan sudah berakhir |
ctx.site.session(host) Belum dirilis
Memberi tahu apakah pengguna tampaknya sudah login di situs itu.
| Nama | Tipe | Wajib | Deskripsi |
|---|---|---|---|
host | string | Ya | Sebuah host dari dozin.sites |
Mengembalikan Promise<{ loggedIn: boolean | null }>: hasil permintaan terakhir ke situs itu jika ada; jika tidak, null saat ada tab terbuka di situs itu (Cowork belum bisa memastikannya) dan false saat tidak ada.
Contoh
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');
}Terkait
- Tugas Latar Belakang Asal
ctx.site - Ikhtisar Field
package.json