8 Commits

Author SHA1 Message Date
fd5142020d Added BADGE API endpoint (no auth needed)
All checks were successful
continuous-integration/drone/push Build is passing
2022-02-02 15:25:55 +01:00
40f1ea4757 Added badge-maker dependency 2022-02-02 15:24:59 +01:00
eb053df154 Merge pull request 'Update dependency dotenv to v15' (#19) from renovate/dotenv-15.x into main
All checks were successful
continuous-integration/drone/push Build is passing
Reviewed-on: #19
2022-02-01 20:34:58 +00:00
5b518c5884 Update dependency dotenv to v15
All checks were successful
continuous-integration/drone/push Build is passing
continuous-integration/drone/pr Build is passing
2022-01-31 05:17:19 +00:00
d320b20dfc Merge pull request 'Update dependency dotenv to v14' (#18) from renovate/dotenv-14.x into main
All checks were successful
continuous-integration/drone/push Build is passing
Reviewed-on: #18
2022-01-17 16:39:02 +00:00
6fd89b75ab Merge pull request 'Update dependency knex to v0.95.15' (#16) from renovate/knex-0.x into main
All checks were successful
continuous-integration/drone/push Build is passing
Reviewed-on: #16
2022-01-17 16:38:40 +00:00
ae4a930ddb Update dependency dotenv to v14
All checks were successful
continuous-integration/drone/push Build is passing
continuous-integration/drone/pr Build is passing
2022-01-17 04:01:54 +00:00
bc466e7fd9 Update dependency knex to v0.95.15
All checks were successful
continuous-integration/drone/push Build is passing
continuous-integration/drone/pr Build is passing
2022-01-16 17:02:25 +00:00
3 changed files with 3500 additions and 2 deletions

View File

@@ -25,14 +25,15 @@
},
"dependencies": {
"argon2": "^0.28.2",
"dotenv": "^12.0.0",
"badge-maker": "^3.3.1",
"dotenv": "^15.0.0",
"fastify": "^3.20.1",
"fastify-auth": "^1.1.0",
"fastify-basic-auth": "^2.1.0",
"fastify-cors": "^6.0.2",
"fastify-jwt": "^4.0.0",
"isbot": "^3.3.3",
"knex": "0.95.0",
"knex": "0.95.15",
"sqlite3": "^5.0.2",
"uniqid": "^5.3.0"
},

View File

@@ -3,6 +3,7 @@ var uniqid = require('uniqid');
require('dotenv').config();
const argon2 = require('argon2');
const isBot = require('isbot')
const { makeBadge, ValidationError } = require('badge-maker')
let config = {
domain: process.env.DOMAIN || "localhost:3000",
@@ -259,6 +260,40 @@ fastify.get('/api/:shortcode', async (req, res) => {
}
});
//Get url api route
fastify.get('/api/badge/:shortcode', async (req, res) => {
const shortcode = req.params.shortcode;
const label = req.query.label || 'vists';
const color = req.query.color || 'green';
const style = req.query.style || 'for-the-badge';
//This should never happen but better safe than 500
if (!shortcode) {
return 404;
}
const exists = await knex.select('shortcode', 'target', 'no_preview', 'clientside')
.from('urls')
.where('shortcode', '=', shortcode)
.limit(1);
if (exists.length == 0) {
return 404;
}
const visits = await knex.select('timestamp')
.from('visits')
.where('shortcode', '=', shortcode);
const format = {
label,
message: visits.length.toString(),
color,
style
}
res.type('image/svg+xml')
return makeBadge(format);
});
//User registration
fastify.post('/api/auth/register', async (req, res) => {

3462
yarn.lock Normal file

File diff suppressed because it is too large Load Diff