diff --git a/src/services/storage/aws-s3.ts b/src/services/storage/aws-s3.ts index 8a658d37..07bc3dc9 100644 --- a/src/services/storage/aws-s3.ts +++ b/src/services/storage/aws-s3.ts @@ -11,8 +11,10 @@ const AWS_S3_BUCKET = process.env.NEXT_PUBLIC_AWS_S3_BUCKET ?? ''; const AWS_S3_REGION = process.env.NEXT_PUBLIC_AWS_S3_REGION ?? ''; const AWS_S3_ACCESS_KEY = process.env.AWS_S3_ACCESS_KEY ?? ''; const AWS_S3_SECRET_ACCESS_KEY = process.env.AWS_S3_SECRET_ACCESS_KEY ?? ''; -export const AWS_S3_BASE_URL = - `https://${AWS_S3_BUCKET}.s3.${AWS_S3_REGION}.amazonaws.com`; + +export const AWS_S3_BASE_URL = AWS_S3_BUCKET && AWS_S3_REGION + ? `https://${AWS_S3_BUCKET}.s3.${AWS_S3_REGION}.amazonaws.com` + : undefined; export const awsS3Client = () => new S3Client({ region: AWS_S3_REGION, @@ -25,8 +27,7 @@ export const awsS3Client = () => new S3Client({ const urlForKey = (key?: string) => `${AWS_S3_BASE_URL}/${key}`; export const isUrlFromAwsS3 = (url: string) => - Boolean(AWS_S3_BASE_URL) && - url.startsWith(AWS_S3_BASE_URL); + AWS_S3_BASE_URL && url.startsWith(AWS_S3_BASE_URL); export const awsS3PutObjectCommandForKey = (Key: string) => new PutObjectCommand({ Bucket: AWS_S3_BUCKET, Key, ACL: 'public-read' }); diff --git a/src/services/storage/cloudflare-r2.ts b/src/services/storage/cloudflare-r2.ts index f80265d7..cf4ac5d2 100644 --- a/src/services/storage/cloudflare-r2.ts +++ b/src/services/storage/cloudflare-r2.ts @@ -17,14 +17,17 @@ const CLOUDFLARE_R2_ACCESS_KEY = process.env.CLOUDFLARE_R2_ACCESS_KEY ?? ''; const CLOUDFLARE_R2_SECRET_ACCESS_KEY = process.env.CLOUDFLARE_R2_SECRET_ACCESS_KEY ?? ''; -const CLOUDFLARE_R2_ENDPOINT = - `https://${CLOUDFLARE_R2_ACCOUNT_ID}.r2.cloudflarestorage.com`; - -export const CLOUDFLARE_R2_BASE_URL_PUBLIC = - `https://${CLOUDFLARE_R2_PUBLIC_DOMAIN}`; +const CLOUDFLARE_R2_ENDPOINT = CLOUDFLARE_R2_ACCOUNT_ID + ? `https://${CLOUDFLARE_R2_ACCOUNT_ID}.r2.cloudflarestorage.com` + : undefined; +export const CLOUDFLARE_R2_BASE_URL_PUBLIC = CLOUDFLARE_R2_PUBLIC_DOMAIN + ? `https://${CLOUDFLARE_R2_PUBLIC_DOMAIN}` + : undefined; export const CLOUDFLARE_R2_BASE_URL_PRIVATE = - `${CLOUDFLARE_R2_ENDPOINT}/${CLOUDFLARE_R2_BUCKET}`; + CLOUDFLARE_R2_ENDPOINT && CLOUDFLARE_R2_BUCKET + ? `${CLOUDFLARE_R2_ENDPOINT}/${CLOUDFLARE_R2_BUCKET}` + : undefined; export const cloudflareR2Client = () => new S3Client({ region: 'auto', @@ -39,12 +42,13 @@ const urlForKey = (key?: string, isPublic = true) => isPublic ? `${CLOUDFLARE_R2_BASE_URL_PUBLIC}/${key}` : `${CLOUDFLARE_R2_BASE_URL_PRIVATE}/${key}`; -export const isUrlFromCloudflareR2 = (url: string) => - Boolean(CLOUDFLARE_R2_BASE_URL_PRIVATE) && - Boolean(CLOUDFLARE_R2_BASE_URL_PUBLIC) && ( - url.startsWith(CLOUDFLARE_R2_BASE_URL_PRIVATE) || - url.startsWith(CLOUDFLARE_R2_BASE_URL_PUBLIC) - ); +export const isUrlFromCloudflareR2 = (url: string) => ( + CLOUDFLARE_R2_BASE_URL_PRIVATE && + url.startsWith(CLOUDFLARE_R2_BASE_URL_PRIVATE) +) || ( + CLOUDFLARE_R2_BASE_URL_PUBLIC && + url.startsWith(CLOUDFLARE_R2_BASE_URL_PUBLIC) +); export const cloudflareR2PutObjectCommandForKey = (Key: string) => new PutObjectCommand({ Bucket: CLOUDFLARE_R2_BUCKET, Key }); diff --git a/src/services/storage/vercel-blob.ts b/src/services/storage/vercel-blob.ts index a8b5094f..fb6f013c 100644 --- a/src/services/storage/vercel-blob.ts +++ b/src/services/storage/vercel-blob.ts @@ -6,10 +6,12 @@ const VERCEL_BLOB_STORE_ID = process.env.BLOB_READ_WRITE_TOKEN?.match( /^vercel_blob_rw_([a-z0-9]+)_[a-z0-9]+$/i, )?.[1].toLowerCase(); -export const VERCEL_BLOB_BASE_URL = - `https://${VERCEL_BLOB_STORE_ID}.public.blob.vercel-storage.com`; +export const VERCEL_BLOB_BASE_URL = VERCEL_BLOB_STORE_ID + ? `https://${VERCEL_BLOB_STORE_ID}.public.blob.vercel-storage.com` + : undefined; export const isUrlFromVercelBlob = (url: string) => + VERCEL_BLOB_BASE_URL && url.startsWith(VERCEL_BLOB_BASE_URL); export const vercelBlobUploadFromClient = async (