Skip to content

Commit

Permalink
feat: telemetry add telemetryId report
Browse files Browse the repository at this point in the history
  • Loading branch information
moonrailgun committed Feb 22, 2024
1 parent b02e0b7 commit 355690e
Show file tree
Hide file tree
Showing 3 changed files with 50 additions and 9 deletions.
6 changes: 3 additions & 3 deletions src/server/main.ts
Original file line number Diff line number Diff line change
Expand Up @@ -73,14 +73,14 @@ if (env.allowOpenapi) {
}

// fallback
app.get('/*', (req, res) => {
if (req.accepts('html')) {
app.use('/*', (req, res) => {
if (req.method === 'GET' && req.accepts('html')) {
res.sendFile(path.join(process.cwd(), 'public', 'index.html'));
}
});

app.use((err: any, req: any, res: any, next: any) => {
logger.error(err);
logger.error('[express]', err);
res.status(500).json({ message: err.message });
});

Expand Down
3 changes: 3 additions & 0 deletions src/server/model/telemetry.ts
Original file line number Diff line number Diff line change
Expand Up @@ -22,13 +22,16 @@ export async function recordTelemetryEvent(req: Request) {
return;
}

const telemetryId = req.params.telemetryId;

const { origin, pathname } = new URL(url);
const payload = Object.keys(others).length > 0 ? others : undefined;

await prisma.telemetryEvent.create({
data: {
sessionId: session.id,
workspaceId,
telemetryId,
eventName,
urlOrigin: origin,
urlPath: pathname,
Expand Down
50 changes: 44 additions & 6 deletions src/server/router/telemetry.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6,21 +6,21 @@ import { makeBadge } from 'badge-maker';

export const telemetryRouter = Router();

const blankGifBuffer = Buffer.from(
'R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7',
'base64'
);

telemetryRouter.get(
'/:workspaceId/blank.gif',
validate(
query('name').optional().isString(),
query('url').optional().isURL()
),
async (req, res) => {
const buffer = Buffer.from(
'R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7',
'base64'
);

recordTelemetryEvent(req);

res.header('Content-Type', 'image/gif').send(buffer);
res.header('Content-Type', 'image/gif').send(blankGifBuffer);
}
);

Expand All @@ -46,3 +46,41 @@ telemetryRouter.get(
res.header('Content-Type', 'image/svg+xml').send(svg);
}
);

telemetryRouter.get(
'/:workspaceId/:telemetryId.gif',
validate(
query('name').optional().isString(),
query('url').optional().isURL()
),
async (req, res) => {
recordTelemetryEvent(req);

res.header('Content-Type', 'image/gif').status(200).send(blankGifBuffer);
}
);

telemetryRouter.get(
'/:workspaceId/:telemetryId/badge.svg',
validate(
query('name').optional().isString(),
query('url').optional().isURL(),
query('title').optional().isString(),
query('start').optional().isNumeric()
),
async (req, res) => {
const title = req.query.title || 'visitor';
const start = req.query.start ? Number(req.query.start) : 0;

recordTelemetryEvent(req);
const num = await sumTelemetryEvent(req);

const svg = makeBadge({
label: String(title),
message: numify(num + start),
color: 'green',
});

res.header('Content-Type', 'image/svg+xml').status(200).send(svg);
}
);

0 comments on commit 355690e

Please sign in to comment.