rtrm's picture
rtrm HF Staff
fix: OOM on Chrome (#1)
34d2b84 unverified
// src/routes/api/bandwidth/+server.ts
import { json } from '@sveltejs/kit';
import { DynamoDBClient, PutItemCommand } from '@aws-sdk/client-dynamodb';
import { randomUUID } from 'crypto';
const REGION = process.env.AWS_REGION || 'us-east-1'; // Fallback region if none is set
const TABLE_NAME = process.env.DYNAMODB_TABLE;
if (!TABLE_NAME) {
console.error(
'DYNAMODB_TABLE environment variable is not set. Please set DYNAMODB_TABLE to your DynamoDB table name.'
);
}
const ddbClient = new DynamoDBClient({ region: REGION });
export async function POST({ request }) {
try {
const { bandwidth, latency, location, progress } = await request.json();
if (
typeof bandwidth !== 'number' ||
typeof latency !== 'number' ||
typeof location !== 'string' ||
typeof progress !== 'number'
) {
return json({ error: 'Invalid data' }, { status: 400 });
}
if (!TABLE_NAME) {
return json({ error: 'failed to save measurements' }, { status: 500 });
}
const item = {
id: { S: randomUUID() }, // primary key
bandwidth: { N: bandwidth.toString() },
latency: { N: latency.toString() },
location: { S: location },
timestamp: { S: new Date().toISOString() },
progress: { N: progress.toString() }
};
const putParams = {
TableName: TABLE_NAME,
Item: item
};
await ddbClient.send(new PutItemCommand(putParams));
//console.log('Received bandwidth data:', { bandwidth, latency, location, progress });
return json({ success: true });
} catch (error) {
console.error('Error processing bandwidth data:', error);
return json({ error: 'Unable to process the request' }, { status: 500 });
}
}