From cd7fd2ed3308700512976f56e0d01d86e3063bc7 Mon Sep 17 00:00:00 2001 From: Ian Walter Date: Fri, 31 Dec 2021 12:30:39 -0500 Subject: [PATCH] Working whip-storage --- .gitignore | 1 + docker-compose.yml | 11 +++++ example.env | 4 ++ packages/whip-storage/index.js | 9 +++++ packages/whip-storage/package.json | 4 ++ packages/whip-storage/tests/fixtures/app.js | 38 ++++++++++++++++++ .../tests/fixtures/josh-duncan-trunk-bay.jpg | Bin 0 -> 76648 bytes packages/whip-storage/tests/tests.js | 5 +++ packages/whip/lib/middleware/response.js | 3 ++ 9 files changed, 75 insertions(+) create mode 100644 packages/whip-storage/tests/fixtures/app.js create mode 100644 packages/whip-storage/tests/fixtures/josh-duncan-trunk-bay.jpg create mode 100644 packages/whip-storage/tests/tests.js diff --git a/.gitignore b/.gitignore index 37d7e73..837f7f8 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,3 @@ node_modules .env +.DS_Store diff --git a/docker-compose.yml b/docker-compose.yml index d25f7a1..5bdbb83 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -22,3 +22,14 @@ services: ports: - $SMTP_PORT:25 - $MAILDEV_PORT:80 + + minio: + image: minio/minio + ports: + - $MINIO_PORT:9000 + - $MINIO_CONSOLE_PORT:$MINIO_CONSOLE_PORT + entrypoint: bash -c 'mkdir -p /opt/minio/whip && minio server --console-address :$MINIO_CONSOLE_PORT /opt/minio' + environment: + MINIO_CONSOLE_PORT: $MINIO_CONSOLE_PORT + MINIO_ROOT_USER: $MINIO_ROOT_USER + MINIO_ROOT_PASSWORD: $MINIO_ROOT_PASSWORD diff --git a/example.env b/example.env index ea40215..1cdbe70 100644 --- a/example.env +++ b/example.env @@ -6,3 +6,7 @@ DB_PASS=wokeUpLikeThis DATABASE_URL="postgresql://whip:wokeUpLikeThis@localhost:5432/whip?schema=public" SMTP_PORT=25 MAILDEV_PORT=1080 +MINIO_PORT=9000 +MINIO_CONSOLE_PORT=9001 +MINIO_ROOT_USER=whip +MINIO_ROOT_PASSWORD=dontWasteNoTime diff --git a/packages/whip-storage/index.js b/packages/whip-storage/index.js index e69de29..6e8b559 100644 --- a/packages/whip-storage/index.js +++ b/packages/whip-storage/index.js @@ -0,0 +1,9 @@ +import { S3Client } from '@aws-sdk/client-s3' + +export default function storagePlugin (app, opts) { + app.storage = new S3Client(opts) + app.use(function storageMiddleware (req, res, next) { + req.storage = app.storage + next() + }) +} diff --git a/packages/whip-storage/package.json b/packages/whip-storage/package.json index 6560818..dbdee2b 100644 --- a/packages/whip-storage/package.json +++ b/packages/whip-storage/package.json @@ -2,6 +2,10 @@ "name": "@generates/whip-storage", "version": "0.0.0", "license": "UNLICENSED", + "type": "module", + "scripts": { + "example.app": "../../example.js ./tests/fixtures/app.js" + }, "dependencies": { "@aws-sdk/client-s3": "^3.45.0" } diff --git a/packages/whip-storage/tests/fixtures/app.js b/packages/whip-storage/tests/fixtures/app.js new file mode 100644 index 0000000..6a5a6f8 --- /dev/null +++ b/packages/whip-storage/tests/fixtures/app.js @@ -0,0 +1,38 @@ +import { promises as fs } from 'fs' +import { nanoid } from 'nanoid' +import { create } from '@generates/whip' +import { PutObjectCommand, GetObjectCommand } from '@aws-sdk/client-s3' +import storage from '../../index.js' + +const Bucket = 'whip' +const fileUrl = new URL('josh-duncan-trunk-bay.jpg', import.meta.url) +const app = create() + +app.add({ + plugin: storage, + opts: { + region: 'us-east-1', + forcePathStyle: true, + endpoint: 'http://localhost:9000', + credentials: { accessKeyId: 'whip', secretAccessKey: 'dontWasteNoTime' } + } +}) + +let Key +app.get('/', async function download (req, res) { + if (Key) { + const out = await req.storage.send(new GetObjectCommand({ Bucket, Key })) + // TODO: + // req.logger.info('GetObjectCommand response', out) + res.set('Content-Type', 'image/jpeg').send(out.Body) + } else { + Key = nanoid() + const Body = await fs.readFile(fileUrl) + const command = new PutObjectCommand({ Bucket, Key, Body }) + const out = await req.storage.send(command) + req.logger.info('PutObjectCommand response', out) + res.send('File uploaded') + } +}) + +export default app diff --git a/packages/whip-storage/tests/fixtures/josh-duncan-trunk-bay.jpg b/packages/whip-storage/tests/fixtures/josh-duncan-trunk-bay.jpg new file mode 100644 index 0000000000000000000000000000000000000000..25a59003873fbe550898b660f35cb6c9df7f71c5 GIT binary patch literal 76648 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%0Ab8;t+7X7ZoF{aENAw@!#h*ST5JFpn;EK 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%0Aaxa5HCpF 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 { + +}) diff --git a/packages/whip/lib/middleware/response.js b/packages/whip/lib/middleware/response.js index 37151db..9dc848a 100644 --- a/packages/whip/lib/middleware/response.js +++ b/packages/whip/lib/middleware/response.js @@ -15,6 +15,9 @@ export default function responseMiddleware (req, res, next) { if (typeof body === 'string') { res.writeHead(statusCode, req.state.headers) res.end(body) + } else if (typeof body?.pipe === 'function') { + res.writeHead(statusCode, req.state.headers) + body.pipe(res) } else { res .set('Content-Type', 'application/json')