Compare commits
12 Commits
Author | SHA1 | Date | |
---|---|---|---|
b871e4295d | |||
0945060a49
|
|||
f7eae96b8c
|
|||
c2a50a1480
|
|||
bb99c2dcd1
|
|||
e8382fb579 | |||
b5321377bd
|
|||
6e26bbbf5f
|
|||
59e178476e
|
|||
824c109a42
|
|||
f48159b31b
|
|||
6195001d4b
|
22
CHANGELOG.md
22
CHANGELOG.md
@@ -2,9 +2,31 @@
|
||||
|
||||
All notable changes to this project will be documented in this file. Dates are displayed in UTC.
|
||||
|
||||
#### [0.5.1](https://git.odit.services/kauft.es/linkylinky/compare/0.5.0...0.5.1)
|
||||
|
||||
- Added endpoint to query over all visited urls [`bb99c2d`](https://git.odit.services/kauft.es/linkylinky/commit/bb99c2dcd1ce89af1bc27a035be5265345d2a05f)
|
||||
- Added optional filtering by provider [`0945060`](https://git.odit.services/kauft.es/linkylinky/commit/0945060a49ed35c038df2c04bbd07174bc5654ca)
|
||||
- Shortened return to avoid variable memory asignment [`f7eae96`](https://git.odit.services/kauft.es/linkylinky/commit/f7eae96b8c3479d333fc00bc36bce451733700db)
|
||||
- Changed object property order (just for us pesky humans to improve readability) [`c2a50a1`](https://git.odit.services/kauft.es/linkylinky/commit/c2a50a14807e223987464c63fac6d67ed98b1a93)
|
||||
|
||||
#### [0.5.0](https://git.odit.services/kauft.es/linkylinky/compare/0.4.3...0.5.0)
|
||||
|
||||
> 21 August 2021
|
||||
|
||||
- 🚀RELEASE 0.5.0 [`e8382fb`](https://git.odit.services/kauft.es/linkylinky/commit/e8382fb579f769364693974cbe74ce06e9810a9a)
|
||||
- Removed visits 404 resolution [`59e1784`](https://git.odit.services/kauft.es/linkylinky/commit/59e178476e8f7e64de92ae23e859b87680e7af64)
|
||||
- Added migration for visits provider [`f48159b`](https://git.odit.services/kauft.es/linkylinky/commit/f48159b31bcaf7c7449c89fb1e3851bcb04f5e3c)
|
||||
- Reverted last change since we can defer it from the provider [`b532137`](https://git.odit.services/kauft.es/linkylinky/commit/b5321377bde9bd7de13e2eee4dd38a072cf0d4a3)
|
||||
- Changed the way visits entrys get compiled to enable provider visits count searches over the default api [`6e26bbb`](https://git.odit.services/kauft.es/linkylinky/commit/6e26bbbf5f29e4c1eaa56c5dc41ab77c192d0cfb)
|
||||
- Server now inserts provider on visit [`824c109`](https://git.odit.services/kauft.es/linkylinky/commit/824c109a420efd0e1e6de01d93827020f3fe5a5f)
|
||||
- Added package script for migration creation [`6195001`](https://git.odit.services/kauft.es/linkylinky/commit/6195001d4b701d39470ff4be0e265f9afb288e78)
|
||||
|
||||
#### [0.4.3](https://git.odit.services/kauft.es/linkylinky/compare/0.4.2...0.4.3)
|
||||
|
||||
> 21 August 2021
|
||||
|
||||
- Fixed auth error crashing the entire server thanks to fastify handling stuff not the same way that they do in the docs..... [`#1`](https://git.odit.services/kauft.es/linkylinky/issues/1)
|
||||
- 🚀RELEASE 0.4.3 [`0afa803`](https://git.odit.services/kauft.es/linkylinky/commit/0afa80345d47e09e20d4365634f8532248b2044c)
|
||||
|
||||
#### [0.4.2](https://git.odit.services/kauft.es/linkylinky/compare/0.4.1...0.4.2)
|
||||
|
||||
|
10
migrations/20210821094219_visits_providers.js
Normal file
10
migrations/20210821094219_visits_providers.js
Normal file
@@ -0,0 +1,10 @@
|
||||
|
||||
exports.up = function(knex) {
|
||||
return knex.schema.table('visits', function (table) {
|
||||
table.text('provider').defaultTo("N/A");
|
||||
});
|
||||
};
|
||||
|
||||
exports.down = function(knex) {
|
||||
|
||||
};
|
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@odit/shortener-backend",
|
||||
"version": "0.4.3",
|
||||
"version": "0.5.1",
|
||||
"main": "index.js",
|
||||
"license": "MIT",
|
||||
"private": false,
|
||||
@@ -20,7 +20,8 @@
|
||||
"dev": "nodemon src/server.js",
|
||||
"start": "node src/server.js",
|
||||
"migrate": "knex migrate:latest",
|
||||
"release": "release-it"
|
||||
"release": "release-it",
|
||||
"create:migration": "knex migrate:make"
|
||||
},
|
||||
"dependencies": {
|
||||
"argon2": "^0.28.2",
|
||||
|
@@ -75,20 +75,24 @@ fastify.decorate('verifyJWT', function async(request, reply, done) {
|
||||
//Automagic Amazn redirects on /a/
|
||||
fastify.get('/a/:id', async (req, res) => {
|
||||
res.redirect(302, `https://amazon.de/dp/${req.params.id}`)
|
||||
await knex('visits').insert({ shortcode: req.params.id, provider: 'a' });
|
||||
})
|
||||
|
||||
//Automagic Youtube redirects on /yt/
|
||||
fastify.get('/yt/:id', async (req, res) => {
|
||||
res.redirect(302, `https://youtu.be/${req.params.id}`)
|
||||
await knex('visits').insert({ shortcode: req.params.id, provider: 'yt' });
|
||||
})
|
||||
//Automagic Youtube Playlist redirects on /ytpl/
|
||||
fastify.get('/ytpl/:id', async (req, res) => {
|
||||
res.redirect(302, `https://youtube.com/playlist?list=${req.params.id}`)
|
||||
await knex('visits').insert({ shortcode: req.params.id, provider: 'ytpl' });
|
||||
})
|
||||
|
||||
//Automagic ebay item redirects on /e/
|
||||
fastify.get('/e/:id', async (req, res) => {
|
||||
res.redirect(302, `https://ebay.de/itm/${req.params.id}`)
|
||||
await knex('visits').insert({ shortcode: req.params.id, provider: 'e' });
|
||||
})
|
||||
|
||||
//Normal shorturls
|
||||
@@ -107,7 +111,7 @@ fastify.get('/:shortcode', async (req, res) => {
|
||||
return 404
|
||||
}
|
||||
res.redirect(302, target[0].target);
|
||||
await knex('visits').insert({ shortcode });
|
||||
await knex('visits').insert({ shortcode, provider: 'native' });
|
||||
})
|
||||
|
||||
//Create new url schema
|
||||
@@ -263,7 +267,7 @@ fastify.post('/api/auth/register', async (req, res) => {
|
||||
|
||||
//Anything in here has some kind of auth
|
||||
fastify.after(() => {
|
||||
//Get url api route
|
||||
//Get url visits api route
|
||||
fastify.get('/api/:shortcode/visits', { onRequest: fastify.auth([fastify.basicAuth, fastify.verifyJWT]) }, async (req, res) => {
|
||||
const shortcode = req.params.shortcode;
|
||||
|
||||
@@ -272,21 +276,24 @@ fastify.after(() => {
|
||||
return 404;
|
||||
}
|
||||
|
||||
const exists = await knex.select('shortcode', 'target')
|
||||
.from('urls')
|
||||
.where('shortcode', '=', shortcode)
|
||||
.limit(1);
|
||||
if (exists.length == 0) {
|
||||
return 404;
|
||||
}
|
||||
|
||||
const visits = await knex.select('timestamp')
|
||||
const visits = await knex.select('timestamp', 'provider')
|
||||
.from('visits')
|
||||
.where('shortcode', '=', shortcode);
|
||||
|
||||
return visits;
|
||||
});
|
||||
|
||||
//Get all visits api route
|
||||
fastify.get('/api/visits', { onRequest: fastify.auth([fastify.basicAuth, fastify.verifyJWT]) }, async (req, res) => {
|
||||
if(req.query.provider){
|
||||
return await knex.select('shortcode', 'provider', 'timestamp')
|
||||
.from('visits')
|
||||
.where("provider", "=", req.query.provider);
|
||||
}
|
||||
return await knex.select('shortcode', 'provider', 'timestamp')
|
||||
.from('visits');
|
||||
});
|
||||
|
||||
//Get url api route
|
||||
fastify.delete('/api/:shortcode', { onRequest: fastify.auth([fastify.basicAuth, fastify.verifyJWT]) }, async (req, res) => {
|
||||
const shortcode = req.params.shortcode;
|
||||
|
Reference in New Issue
Block a user