39 lines
1.1 KiB
TypeScript
39 lines
1.1 KiB
TypeScript
import { Clarizen, ClarizenApiError } from "@arco/clarizen-lib";
|
|
|
|
export function getApiKey(): string | undefined {
|
|
return process.env.CLARIZEN_API_KEY ?? process.env.API_KEY_AW;
|
|
}
|
|
|
|
export function createClarizenClient(): Clarizen {
|
|
const apiKey = getApiKey();
|
|
if (!apiKey) {
|
|
throw new Error(
|
|
"Defina CLARIZEN_API_KEY ou API_KEY_AW no arquivo .env na raiz do projeto.",
|
|
);
|
|
}
|
|
|
|
return new Clarizen({
|
|
baseUrl: process.env.CLARIZEN_BASE_URL ?? "https://api.clarizen.com",
|
|
apiToken: apiKey,
|
|
});
|
|
}
|
|
|
|
export async function checkClarizenAuth(
|
|
clarizen: Clarizen,
|
|
): Promise<{ ok: true; userId: string } | { ok: false; message: string; status?: number }> {
|
|
try {
|
|
const session = await clarizen.authentication.getSessionInfo();
|
|
return { ok: true, userId: session.userId };
|
|
} catch (err) {
|
|
if (err instanceof ClarizenApiError) {
|
|
return {
|
|
ok: false,
|
|
message: err.message,
|
|
status: err.status === 401 || err.status === 403 ? err.status : 502,
|
|
};
|
|
}
|
|
const message = err instanceof Error ? err.message : "Falha de autenticação";
|
|
return { ok: false, message, status: 502 };
|
|
}
|
|
}
|