const ms = require('ms') const Now = require('../lib') async function parsePlan(json) { const { subscription } = json let id let until let name if (subscription) { const planItems = subscription.items.data const mainPlan = planItems.find(d => d.plan.metadata.is_main_plan === '1') if (mainPlan) { id = mainPlan.plan.id name = mainPlan.plan.name if (subscription.cancel_at_period_end) { until = ms( new Date(subscription.current_period_end * 1000) - new Date(), { long: true } ) } } else { id = 'oss' } } else { id = 'oss' } return { id, name, until } } module.exports = class Plans extends Now { async getCurrent() { const res = await this._fetch('/plan') const json = await res.json() return parsePlan(json) } async set(plan) { const res = await this._fetch('/plan', { method: 'PUT', body: { plan } }) const json = await res.json() if (res.ok) { return parsePlan(json) } const err = new Error(json.error.message) err.code = json.error.code throw err } }