gionuibk's picture
Upload folder using huggingface_hub
61d39e2 verified
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');