import type { generateAuthURIOptions } from "./types/auth"; import { v4 as uuidv4 } from "uuid"; /** ユーザー認可によるトークン取得のURIを生成します。 */ export default function generateAuthURI(options: generateAuthURIOptions) { const session = options.session ?? uuidv4(); const uri = new URL("/api/auth", options.origin); uri.searchParams.set("session", session); uri.searchParams.set("client", options.name); uri.searchParams.set("scope", options.scope.join(",")); if (options.icon) uri.searchParams.set("icon", options.icon.toString()); if (options.about) uri.searchParams.set("about", options.about); if (options.callback) { if (options.callback.insertSession) options.callback.url.searchParams.set(options.callback.insertSession, session); uri.searchParams.set("icon", options.callback.toString()); } return { /** 生成されたURI */ uri: uri, /** session */ session: session, }; }