alia
Version:
Alias To Go
51 lines (50 loc) • 1.78 kB
JavaScript
import logger from '../utils/logger.js';
import { request } from '../utils/request.js';
export class GistService {
configService;
constructor(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);
}
}