Spaces:
Sleeping
Sleeping
| const meteringServiceWrapper = extension.import('service:meteringService'); | |
| // TODO DS: move this to its own router and just use under this path | |
| extension.get('/metering/usage', { subdomain: 'api' }, async (req, res) => { | |
| const meteringService = meteringServiceWrapper.meteringService; | |
| const actor = req.actor; | |
| if ( ! actor ) { | |
| throw Error('actor not found in context'); | |
| } | |
| const actorUsagePromise = meteringService.getActorCurrentMonthUsageDetails(actor); | |
| const actorAllowanceInfoPromise = meteringService.getAllowedUsage(actor); | |
| const [actorUsage, allowanceInfo] = await Promise.all([actorUsagePromise, actorAllowanceInfoPromise]); | |
| res.status(200).json({ ...actorUsage, allowanceInfo }); | |
| return; | |
| }); | |
| extension.get('/metering/usage/:appId', { subdomain: 'api' }, async (req, res) => { | |
| const meteringService = meteringServiceWrapper.meteringService; | |
| const actor = req.actor; | |
| if ( ! actor ) { | |
| throw Error('actor not found in context'); | |
| } | |
| const appId = req.params.appId; | |
| if ( ! appId ) { | |
| res.status(400).json({ error: 'appId parameter is required' }); | |
| return; | |
| } | |
| const appUsage = await meteringService.getActorCurrentMonthAppUsageDetails(actor, appId); | |
| res.status(200).json(appUsage); | |
| return; | |
| }); | |
| extension.get('/metering/globalUsage', { subdomain: 'api' }, async (req, res) => { | |
| const meteringService = meteringServiceWrapper.meteringService; | |
| const actor = req.actor; | |
| if ( ! actor ) { | |
| throw Error('actor not found in context'); | |
| } | |
| // check if actor is allowed to view global usage | |
| const allowedUsers = extension.config.allowedGlobalUsageUsers || []; | |
| if ( ! allowedUsers.includes(actor.type?.user.uuid) ) { | |
| res.status(403).json({ error: 'You are not authorized to view global usage' }); | |
| return; | |
| } | |
| const globalUsage = await meteringService.getGlobalUsage(); | |
| res.status(200).json(globalUsage); | |
| return; | |
| }); | |
| console.debug('Loaded /metering/usage route'); |