Refine storage check logic further

This commit is contained in:
Sam Becker 2024-01-21 20:56:13 -06:00
parent 1801660e64
commit 9867bfa4a0
3 changed files with 25 additions and 18 deletions

View File

@ -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' });

View File

@ -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 });

View File

@ -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 (