@cyc-seattle/gsuite-sdk (中文(简体) )
围绕Google Workspace API进行打包:Admin SDK目录和组设置.
pnpm add @cyc-seattle/gsuite-sdk
每个客户都要一个 GoogleAuth 实例 googleapis。它使用应用程序默认证书(ADC),除非您通过一个密钥。 设定 scopes 你给API打电话.
目录和组设置
import { DirectoryClient, GroupSettingsClient } from "@cyc-seattle/gsuite-sdk";
import { google } from "googleapis";
const auth = new google.auth.GoogleAuth({
scopes: [
"https://www.googleapis.com/auth/admin.directory.group",
"https://www.googleapis.com/auth/apps.groups.settings",
],
});
const members = await new DirectoryClient(auth).listMembers("[email protected]");
const settings = await new GroupSettingsClient(auth).getSettings("[email protected]");
客户选项
DirectoryClient 财务报告和审定财务报表 GroupSettingsClient 选择第二个参数 :
rootUrl向谷歌以外的地方发送请求,例如 工作空间假. googleapis只使用它的起源.pacing套装safeCall等待时间 :requestDelayMs在每项请求之前(违约500起)和retryDelayMs在重试瞬间错误(默认为6000)之前.
const directory = new DirectoryClient(auth, { rootUrl, pacing: { requestDelayMs: 0, retryDelayMs: 0 } });
检索
safeCall 结束请求 。 它在请求和重试瞬间错误之间等待,例如速率限制和5xx响应.
import { safeCall } from "@cyc-seattle/gsuite-sdk";
await safeCall(() => row.save());
safeCall(request, pacing) 一样 pacing 作为客户.
工作空间假
@cyc-seattle/gsuite-sdk/fake 设置目录和组设置 API。 它服务于呼叫 DirectoryClient 财务报告和审定财务报表 GroupSettingsClient 做,从记忆.
import { ManualClock, WorkspaceModel, startFakeServer } from "@cyc-seattle/gsuite-sdk/fake";
const clock = new ManualClock();
const fake = await startFakeServer({ model: new WorkspaceModel({ clock }) });
const directory = new DirectoryClient(auth, { rootUrl: fake.rootUrl, pacing: { requestDelayMs: 0, retryDelayMs: 0 } });
// ...
await fake.close();
startFakeServer 在自由回放端口上监听, 除非给出 host 财务报告和审定财务报表 port。客户端仍然需要一个认证对象,但假的忽略了它的代号。 A 类 GoogleAuth 谁 authClient 是一个 UserRefreshClient 持有任何访问符不需要 ADC . test/features/world.ts 建立一个.
WorkspaceModel 拥有团体、成员和设置。 在单位测试中直接使用,或在测试前播种:通过 { settled: true } 改为 insertGroup 或者说 insertMember 以跳过新组延迟。 其选项:
| 选项 | 默认 | 它会做什么 |
|---|---|---|
clock | 系统 | 模特儿看时间的地方. ManualClock 继续前进 advance(ms)。 。 。 . |
newGroupDelayMs | 60 000 个 | 新组拒绝成员插入多久 |
pageSize | 200个 | 列表返回的最大页面 |
它和谷歌一样回答:
| 大小写 | 状态 | 原因 | 消息 |
|---|---|---|---|
| 一个未知的组 | 404 (韩语) | notFound | Resource Not Found: groupKey |
| 一个未知成员 | 404 (韩语) | notFound | Resource Not Found: memberKey |
| 成员插入一个组合中仍然太新 | 404 (韩语) | notFound | Resource Not Found: groupKey |
| 已经是成员了 | 409个 | duplicate | Member already exists. |
| 已经存在的组 | 409个 | duplicate | Entity already exists. |
| 成员构成周期 | 412号 | conditionNotMet | Cyclic memberships not allowed |
| 未知组的设置 | 404 (韩语) | notFound | Not Found |
Google不记录循环状态或设置404消息. 假的跟JSON API的公约一样.
衍生的会籍没有被模拟,因为SDK只读取直接会籍.
分组设置在 Atom XML 中回答, 除非请求请求 alt=json就像谷歌一样.
容器图像
每期发布 ghcr.io/cyc-seattle/workspace-fake:<version> 财务报告和审定财务报表 :latest从 Dockerfile假的忽略了认证符 所以任何无记名符号都有效.
- 它在8080号口听.
PORT改变这一点. NEW_GROUP_DELAY_MS设定新组拒绝成员插入的长度(默认为6000)。 准备吧0立即播种一个团体及其成员.GET /healthz返回 200.- 它以 uid 1000 运行,没有写入文件,因此它使用只读的根文件系统工作,所有的能力被放弃.
- 通过目录 API 种子 :
POST /admin/directory/v1/groups,则POST .../groups/<group>/members。 。 。 .
docker run -p 8080:8080 -e NEW_GROUP_DELAY_MS=0 ghcr.io/cyc-seattle/workspace-fake
发展
mise run test 运行单元测试 test/。 。 。 . mise run integration 运行 Gherkin 特性 features/ 在测试过程中开始的. mise run ci 运行两者, 之后 check。见 AGENTS.md。 。 。 .
释放
每次合并到 main 一旦CI通过,就会从PR标题中释放. 标题必须是常规承诺. fix: 使补丁发布, feat: 轻度释放,以及 ! 类型之后是主释放。 类型,例如: docs:, (中文(简体) ), build:,以及 test: 释放什么。 语义-放行发布为npm并创建了GitHub发布.