From a897ec5f95e29e080db45e70e150a07c85d38196 Mon Sep 17 00:00:00 2001 From: Francisco Pessano Date: Mon, 2 Jan 2023 18:12:02 -0300 Subject: [PATCH] fastify initial commit --- .eslintrc.json | 15 +++++++++++++++ .gitignore | 2 ++ Dockerfile | 15 +++++++++++++++ docker-compose.yml | 10 ++++++++++ forbidden-ids.json | 10 ++++++++++ package.json | 33 +++++++++++++++++++++++++++++++++ src/index.js | 19 +++++++++++++++++++ src/routes/add-url.js | 16 ++++++++++++++++ src/routes/index.js | 5 +++++ src/routes/url-shortener.js | 6 ++++++ 10 files changed, 131 insertions(+) create mode 100644 .eslintrc.json create mode 100644 .gitignore create mode 100644 Dockerfile create mode 100644 docker-compose.yml create mode 100644 forbidden-ids.json create mode 100644 package.json create mode 100644 src/index.js create mode 100644 src/routes/add-url.js create mode 100644 src/routes/index.js create mode 100644 src/routes/url-shortener.js diff --git a/.eslintrc.json b/.eslintrc.json new file mode 100644 index 0000000..faf2b00 --- /dev/null +++ b/.eslintrc.json @@ -0,0 +1,15 @@ +{ + "env": { + "browser": true, + "commonjs": true, + "es2021": true + }, + "extends": "standard", + "overrides": [ + ], + "parserOptions": { + "ecmaVersion": "latest" + }, + "rules": { + } +} diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..97008e5 --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +node_modules +yarn.lock \ No newline at end of file diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..ea254b7 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,15 @@ +FROM ubuntu:latest + +RUN apt upgrade && apt update +RUN apt install -y curl +RUN curl -fsSL https://deb.nodesource.com/setup_19.x | bash - &&\ +apt-get install -y nodejs + +RUN npm install --global yarn + +COPY [".", "/usr/src"] +WORKDIR "/usr/src" + +RUN yarn + +CMD ["yarn", "dev"] \ No newline at end of file diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..8ad0fb6 --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,10 @@ +version: "3.8" + +services: + app: + build: . + volumes: + - .:/usr/src + - /usr/src/node_modules + ports: + - "3000:3000" \ No newline at end of file diff --git a/forbidden-ids.json b/forbidden-ids.json new file mode 100644 index 0000000..6b7b4ed --- /dev/null +++ b/forbidden-ids.json @@ -0,0 +1,10 @@ +{"forbidden-ids": [ + "settings", + "register", + "login", + "admin", + "franp", + "github", + "linkedin", + "add" +]} \ No newline at end of file diff --git a/package.json b/package.json new file mode 100644 index 0000000..14587a2 --- /dev/null +++ b/package.json @@ -0,0 +1,33 @@ +{ + "name": "url-shorter", + "description": "", + "version": "1.0.0", + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1", + "start": "node src/index.js", + "dev": "nodemon src/index.js" + }, + "repository": { + "type": "git", + "url": "https://github.com/monatheoctocat/my_package.git" + }, + "keywords": [], + "author": "FranP-Code", + "license": "ISC", + "bugs": { + "url": "https://github.com/monatheoctocat/my_package/issues" + }, + "homepage": "https://github.com/monatheoctocat/my_package", + "dependencies": { + "@fastify/jwt": "^6.5.0", + "fastify": "^4.10.2" + }, + "devDependencies": { + "eslint": "^8.0.1", + "eslint-config-standard": "^17.0.0", + "eslint-plugin-import": "^2.25.2", + "eslint-plugin-n": "^15.0.0", + "eslint-plugin-promise": "^6.0.0", + "nodemon": "^2.0.20" + } +} diff --git a/src/index.js b/src/index.js new file mode 100644 index 0000000..e35d34d --- /dev/null +++ b/src/index.js @@ -0,0 +1,19 @@ +const fastify = require('fastify')({ logger: true }) + +const addUrl = require('./routes/add-url') +const index = require('./routes/index') +const urlShortener = require('./routes/url-shortener') + +fastify.register(index) +fastify.register(urlShortener) +fastify.register(addUrl) + +const start = async () => { + try { + await fastify.listen({ port: process.env.PORT || 3000, host: '0.0.0.0' }) + } catch (err) { + fastify.log.error(err) + process.exit(1) + } +} +start() diff --git a/src/routes/add-url.js b/src/routes/add-url.js new file mode 100644 index 0000000..ec856c3 --- /dev/null +++ b/src/routes/add-url.js @@ -0,0 +1,16 @@ +module.exports = async function (fastify, options) { + fastify.register(require('@fastify/jwt'), { + secret: 'supersecret123' + }) + + fastify.post('/add', (req, reply) => { + // some code + const token = fastify.jwt.sign({ abc: 123 }) + console.log(token) + reply.send({ token }) + }) + + fastify.listen({ port: 3000 }, (err) => { + if (err) throw err + }) +} diff --git a/src/routes/index.js b/src/routes/index.js new file mode 100644 index 0000000..c9f4f33 --- /dev/null +++ b/src/routes/index.js @@ -0,0 +1,5 @@ +module.exports = async function (fastify, options) { + fastify.get('/', async (request, reply) => { + return { test: 'testValue' } + }) +} diff --git a/src/routes/url-shortener.js b/src/routes/url-shortener.js new file mode 100644 index 0000000..c378b1f --- /dev/null +++ b/src/routes/url-shortener.js @@ -0,0 +1,6 @@ +module.exports = async function (fastify, options) { + fastify.get('/:id', async (request, reply) => { + const { id } = request.params + return { test: id } + }) +}