overleaf/services/web/scripts/recurly/get_recurly_group_prices.js
Thomas 5e61fce3b4 Enable additional currencies when purchasing (or upgrading to) a group plan (#4884)
* Add script to fetch group data pricing from Recurly

* Update groups pricing data using script to fetch prices from Recurly

* Add additional currencies to saas settings

* Refactor group plans upgrade modal to use shared options from settings

GitOrigin-RevId: 6d13d5b152d01e0399f9d2b8f6f8bf99784589e8
2022-01-12 09:03:21 +00:00

45 lines
1.3 KiB
JavaScript

// Get prices from Recurly in GroupPlansData format, ie to update:
// app/templates/plans/groups.json
//
// Usage example:
// node scripts/recurly/get_recurly_group_prices.js
const recurly = require('recurly')
const Settings = require('@overleaf/settings')
const recurlySettings = Settings.apis.recurly
const recurlyApiKey = recurlySettings ? recurlySettings.apiKey : undefined
const client = new recurly.Client(recurlyApiKey)
async function getRecurlyGroupPrices() {
const prices = {}
const plans = client.listPlans({ params: { limit: 200 } })
for await (const plan of plans.each()) {
if (plan.code.substr(0, 6) === 'group_') {
const [, type, size, usage] = plan.code.split('_')
plan.currencies.forEach(planPricing => {
const { currency, unitAmount } = planPricing
prices[usage] = prices[usage] || {}
prices[usage][type] = prices[usage][type] || {}
prices[usage][type][currency] = prices[usage][type][currency] || {}
prices[usage][type][currency][size] = unitAmount
})
}
}
return prices
}
async function main() {
const prices = await getRecurlyGroupPrices()
console.log(JSON.stringify(prices, undefined, 2))
}
main()
.then(() => {
process.exit(0)
})
.catch(error => {
console.error({ error })
process.exit(1)
})