@mieweb/wikigdrive
Version:
Google Drive to MarkDown synchronization
34 lines (31 loc) • 990 B
text/typescript
import {FileContentService} from '../utils/FileContentService.ts';
import {AuthConfig} from '../model/AccountJson.ts';
import {UsageError} from './usage.ts';
interface Params {
client_id?: string;
client_secret?: string;
service_account?: string;
}
export async function getAuthConfig(params: Params, mainFileService: FileContentService): Promise<AuthConfig> {
if (params.service_account) {
const rootFileService = new FileContentService('/');
return {
service_account: await rootFileService.readJson(params.service_account)
};
} else
if (params.client_id && params.client_secret) {
return {
user_account: {
type: 'user_account',
client_id: params.client_id,
client_secret: params.client_secret
}
};
} else {
const authConfig = await mainFileService.readJson('auth_config.json');
if (!authConfig) {
throw new UsageError('No authentication credentials provided');
}
return authConfig;
}
}