You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 

48 lines
848 B

const ms = require('ms')
const Now = require('../lib')
async function parsePlan(res) {
let id
let until
const {subscription} = await res.json()
if (subscription) {
id = subscription.plan.id
if (subscription.cancel_at_period_end) {
until = ms(
new Date(subscription.current_period_end * 1000) - new Date(),
{long: true}
)
}
} else {
id = 'oss'
}
return {id, until}
}
module.exports = class Plans extends Now {
async getCurrent() {
const res = await this._fetch('/www/user/plan')
return await parsePlan(res)
}
async set(plan) {
const res = await this._fetch('/www/user/plan', {
method: 'PUT',
body: {plan}
})
if (res.ok) {
return await parsePlan(res)
}
const err = new Error(res.statusText)
err.res = res
throw err
}
}