From 0cd9b630415ba21755d289f9f40be00a88c9399c Mon Sep 17 00:00:00 2001 From: Jemma Poffinbarger Date: Wed, 15 Jan 2025 16:33:49 +0000 Subject: [PATCH] feat: update config to support new CDN and prep for move to AWS SDK v3 --- src/config-manager.ts | 14 +++++++++++++- src/services/api/routes/friend_messages.ts | 4 ++-- src/services/api/routes/posts.ts | 4 ++-- src/types/common/config.ts | 2 ++ src/util.ts | 4 ++-- 5 files changed, 21 insertions(+), 7 deletions(-) diff --git a/src/config-manager.ts b/src/config-manager.ts index ff0c641..26a2743 100644 --- a/src/config-manager.ts +++ b/src/config-manager.ts @@ -28,7 +28,9 @@ export const config: Config = { s3: { endpoint: process.env.PN_MIIVERSE_API_CONFIG_S3_ENDPOINT || '', key: process.env.PN_MIIVERSE_API_CONFIG_S3_ACCESS_KEY || '', - secret: process.env.PN_MIIVERSE_API_CONFIG_S3_ACCESS_SECRET || '' + secret: process.env.PN_MIIVERSE_API_CONFIG_S3_ACCESS_SECRET || '', + bucket: process.env.PN_MIIVERSE_API_CONFIG_S3_BUCKET || '', + region: process.env.PN_MIIVERSE_API_CONFIG_S3_REGION || '' }, grpc: { friends: { @@ -77,6 +79,16 @@ if (!config.s3.secret) { process.exit(0); } +if (!config.s3.bucket) { + LOG_ERROR('Failed to find s3 bucket. Set the PN_MIIVERSE_API_CONFIG_S3_BUCKET environment variable'); + process.exit(0); +} + +if (!config.s3.region) { + LOG_ERROR('Failed to find s3 region. Set the PN_MIIVERSE_API_CONFIG_S3_REGION environment variable'); + process.exit(0); +} + if (!config.grpc.friends.ip) { LOG_ERROR('Failed to find NEX Friends gRPC ip. Set the PN_MIIVERSE_API_CONFIG_GRPC_FRIENDS_IP environment variable'); process.exit(0); diff --git a/src/services/api/routes/friend_messages.ts b/src/services/api/routes/friend_messages.ts index aedf4c2..75368f9 100644 --- a/src/services/api/routes/friend_messages.ts +++ b/src/services/api/routes/friend_messages.ts @@ -209,7 +209,7 @@ router.post('/', upload.none(), async function (request: express.Request, respon const paintingBuffer = await processPainting(painting); if (paintingBuffer) { - await uploadCDNAsset('pn-cdn', `paintings/${request.pid}/${post.id}.png`, paintingBuffer, 'public-read'); + await uploadCDNAsset(`paintings/${request.pid}/${post.id}.png`, paintingBuffer, 'public-read'); } else { LOG_WARN(`PAINTING FOR POST ${post.id} FAILED TO PROCESS`); } @@ -218,7 +218,7 @@ router.post('/', upload.none(), async function (request: express.Request, respon if (screenshot) { const screenshotBuffer = Buffer.from(screenshot, 'base64'); - await uploadCDNAsset('pn-cdn', `screenshots/${request.pid}/${post.id}.jpg`, screenshotBuffer, 'public-read'); + await uploadCDNAsset(`screenshots/${request.pid}/${post.id}.jpg`, screenshotBuffer, 'public-read'); post.screenshot = `/screenshots/${request.pid}/${post.id}.jpg`; post.screenshot_length = screenshot.length; diff --git a/src/services/api/routes/posts.ts b/src/services/api/routes/posts.ts index af9c111..be9f6bc 100644 --- a/src/services/api/routes/posts.ts +++ b/src/services/api/routes/posts.ts @@ -395,7 +395,7 @@ async function newPost(request: express.Request, response: express.Response): Pr const paintingBuffer = await processPainting(painting); if (paintingBuffer) { - await uploadCDNAsset('pn-cdn', `paintings/${request.pid}/${post.id}.png`, paintingBuffer, 'public-read'); + await uploadCDNAsset(`paintings/${request.pid}/${post.id}.png`, paintingBuffer, 'public-read'); } else { LOG_WARN(`PAINTING FOR POST ${post.id} FAILED TO PROCESS`); } @@ -404,7 +404,7 @@ async function newPost(request: express.Request, response: express.Response): Pr if (screenshot) { const screenshotBuffer = Buffer.from(screenshot, 'base64'); - await uploadCDNAsset('pn-cdn', `screenshots/${request.pid}/${post.id}.jpg`, screenshotBuffer, 'public-read'); + await uploadCDNAsset(`screenshots/${request.pid}/${post.id}.jpg`, screenshotBuffer, 'public-read'); post.screenshot = `/screenshots/${request.pid}/${post.id}.jpg`; post.screenshot_length = screenshot.length; diff --git a/src/types/common/config.ts b/src/types/common/config.ts index 130e192..c471b0e 100644 --- a/src/types/common/config.ts +++ b/src/types/common/config.ts @@ -13,6 +13,8 @@ export interface Config { endpoint: string; key: string; secret: string; + bucket: string; + region: string; }; grpc: { friends: { diff --git a/src/util.ts b/src/util.ts index b534bf2..002e501 100644 --- a/src/util.ts +++ b/src/util.ts @@ -146,11 +146,11 @@ export function processPainting(painting: string): Buffer | null { } } -export async function uploadCDNAsset(bucket: string, key: string, data: Buffer, acl: string): Promise { +export async function uploadCDNAsset(key: string, data: Buffer, acl: string): Promise { const awsPutParams = { Body: data, Key: key, - Bucket: bucket, + Bucket: config.s3.bucket, ACL: acl };