Buckets:
| import { createOpencodeClient } from "@opencode-ai/sdk/v2/client" | |
| import type { ServerConnection } from "@/context/server" | |
| import { decode64 } from "@/utils/base64" | |
| export function authTokenFromCredentials(input: { username?: string; password: string }) { | |
| return btoa(`${input.username ?? "opencode"}:${input.password}`) | |
| } | |
| export function authFromToken(token: string | null) { | |
| const decoded = decode64(token ?? undefined) | |
| if (!decoded) return | |
| const separator = decoded.indexOf(":") | |
| if (separator === -1) return | |
| return { | |
| username: decoded.slice(0, separator) || "opencode", | |
| password: decoded.slice(separator + 1), | |
| } | |
| } | |
| export function createSdkForServer({ | |
| server, | |
| ...config | |
| }: Omit<NonNullable<Parameters<typeof createOpencodeClient>[0]>, "baseUrl"> & { | |
| server: ServerConnection.HttpBase | |
| }) { | |
| const auth = (() => { | |
| if (!server.password) return | |
| return { | |
| Authorization: `Basic ${authTokenFromCredentials({ username: server.username, password: server.password })}`, | |
| } | |
| })() | |
| return createOpencodeClient({ | |
| ...config, | |
| headers: { | |
| ...(config.headers instanceof Headers ? Object.fromEntries(config.headers.entries()) : config.headers), | |
| ...auth, | |
| }, | |
| baseUrl: server.url, | |
| }) | |
| } | |
Xet Storage Details
- Size:
- 1.25 kB
- Xet hash:
- 81652a54dda62afe63ff810b4016f2cc7f0deef83f42d42ae640167d149f6677
·
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.