UNPKG

alia

Version:
53 lines (52 loc) 1.93 kB
import { ConfigService } from './config.service.js'; import logger from '../utils/logger.js'; import { request } from '../utils/request.js'; import { inject } from '../utils/di.js'; export class GistService { #configService = inject(ConfigService); // constructor(configService: ConfigService) { // this.#configService = configService // } async restore() { logger.info('restore config from gist...'); const gistId = this.#configService.gistId; let data = {}; data = await request.call(gistId, { method: 'GET', headers: { 'User-Agent': 'nodejs' } }); const { updated_at, files } = data; logger.info(`fetched: ${updated_at}`); const gistFile = files[this.#configService.fileName]; if (!gistFile) { throw new Error(`gist must contain a file named '${this.#configService.fileName}'`); } const aliaConfig = JSON.parse(gistFile.content); aliaConfig.meta = this.#configService.meta; this.#configService.save(aliaConfig); logger.info('...done:', this.#configService.filePath); } async backup() { logger.info('backup local config to gist...'); const gistId = this.#configService.gistId; const token = this.#configService.token; const config = this.#configService.config; config.meta = {}; const data = JSON.stringify({ description: 'Alia Config', files: { [this.#configService.fileName]: { content: JSON.stringify(config, null, 2) } } }); const { html_url } = await request.call(gistId, { method: 'PATCH', headers: { 'User-Agent': 'nodejs', Authorization: `token ${token}` } }, data); logger.info('...done:', html_url); } }