import { google } from 'googleapis'; import { env } from '$env/dynamic/private'; import quotedPrintable from 'quoted-printable'; // tiny, zero-dep package export const scopes = ['https://www.googleapis.com/auth/gmail.send']; export function getOAuthClient() { return new google.auth.OAuth2( env.GOOGLE_CLIENT_ID, env.GOOGLE_CLIENT_SECRET, env.GOOGLE_REDIRECT_URI ); } export function createAuthUrl() { return getOAuthClient().generateAuthUrl({ access_type: 'offline', prompt: 'consent', scope: scopes }); } export async function exchangeCodeForTokens(code: string) { const { tokens } = await getOAuthClient().getToken(code); if (!tokens.refresh_token) throw new Error('No refresh_token returned'); return tokens.refresh_token; } export async function sendGmail( refreshToken: string, { to, subject, text, qr_code }: { to: string; subject: string; text: string; qr_code: string } ) { const oauth = getOAuthClient(); oauth.setCredentials({ refresh_token: refreshToken }); const gmail = google.gmail({ version: 'v1', auth: oauth }); const message_html = `
${text}
This email has been generated with the help of *insert software name*