UNPKG

motionlink-cli

Version:

Making it easy to use Notion as a Content Management system for personal websites, portfolios, blogs, business homepages, and other kinds of static websites.

69 lines 2.66 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.Host = void 0; const express_1 = __importDefault(require("express")); const openurl_1 = __importDefault(require("openurl")); const logger_1 = require("../logger"); const HANDLER_PORT = 8080; var Host; (function (Host) { Host["none"] = "none"; Host["netlify"] = "netlify"; })(Host = exports.Host || (exports.Host = {})); class ConsoleService { constructor() { this.logger = (0, logger_1.getLogger)(); } /** * Makes a connect request to the Motionlink Console. * * Returns the Motionlink vars and host site url string on success, throws on error. * * If given host was none, the returned site url is empty. */ async connect(githubRepoUrl, host, consoleUrl) { return new Promise((resolve, reject) => { const app = (0, express_1.default)(); if (!Boolean(consoleUrl)) { consoleUrl = 'https://app.motionlink.co'; } let server; app.get('/callback', (req, res) => { const status = req.query.status === 'true'; if (status) { resolve({ secureUrl: req.query.secureUrl, vars: req.query.vars, }); } else { reject(req.query.message); } res.redirect(`${consoleUrl}/connect_completed`); setTimeout(() => server.close(), 2000); }); server = app.listen(HANDLER_PORT, async () => { const redirectUri = `http://localhost:${HANDLER_PORT}/callback`; const queryUrl = new URL(`${consoleUrl}/market`); queryUrl.searchParams.append('source', githubRepoUrl); queryUrl.searchParams.append('host', host); queryUrl.searchParams.append('redirect_uri', redirectUri); queryUrl.searchParams.append('q', 'connect'); this.logger.logWithColor(queryUrl.href); openurl_1.default.open(queryUrl.href); }); }); } static get instance() { var _a; return (_a = this._instance) !== null && _a !== void 0 ? _a : (this._instance = new ConsoleService()); } static setMockedInstance(instance) { this._instance = instance; } } exports.default = ConsoleService; //# sourceMappingURL=console_service.js.map