This commit is contained in:
thePR0M3TH3AN committed 2026-01-25 19:59:24 -05:00
1 parent c6c1278342
commit 6ec83e4237
2 files changed
+30 -2

No files matched your search

+1
View File
@@ -78,6 +78,7 @@ function buildS3TestConfig(config, overrides = {}) {
region: resolveRegion(config),
endpoint: resolveEndpoint(config),
forcePathStyle: resolveForcePathStyle(config),
publicBaseUrl: config.publicBaseUrl,
...overrides,
};
}
+29 -2
View File
@@ -14,6 +14,7 @@ import {
multipartUpload,
} from "./s3-multipart.js";
import { userLogger } from "../utils/logger.js";
import { buildPublicUrl } from "../r2.js";
export async function testS3Connection(config) {
if (!config) {
@@ -82,7 +83,32 @@ export async function testS3Connection(config) {
);
userLogger.info("[Storage Test] File retrieval successful.");
// 3. Delete
// 3. Public URL check
let warnings = [];
if (config.publicBaseUrl) {
userLogger.info(`[Storage Test] Verifying public access via ${config.publicBaseUrl}...`);
const publicUrl = buildPublicUrl(config.publicBaseUrl, testKey);
try {
const response = await fetch(publicUrl, { method: "HEAD", cache: "no-cache" });
if (response.ok) {
userLogger.info("[Storage Test] Public access confirmed.");
} else {
const msg = `[Storage Test] WARNING: Public access failed (HTTP ${response.status}). Check your Public URL and CORS settings.`;
userLogger.warn(msg);
warnings.push(msg);
}
} catch (fetchErr) {
const msg = `[Storage Test] WARNING: Public access check failed: ${fetchErr.message}. Check CORS.`;
userLogger.warn(msg);
warnings.push(msg);
}
} else {
const msg = "[Storage Test] WARNING: Public Bucket URL is missing. Uploads will fail until this is configured.";
userLogger.warn(msg);
warnings.push(msg);
}
// 4. Delete
userLogger.info(`[Storage Test] Cleaning up temporary file "${testKey}"...`);
await s3.send(
new DeleteObjectCommand({
@@ -92,9 +118,10 @@ export async function testS3Connection(config) {
);
userLogger.info("[Storage Test] Cleanup successful.");
const successMessage = `Connection verified! Successfully uploaded, retrieved, and deleted test file in "${config.bucket}".`;
return {
success: true,
message: `Connection verified! Successfully uploaded, retrieved, and deleted test file in "${config.bucket}".`,
message: warnings.length ? `${successMessage} ${warnings.join(" ")}` : successMessage,
};
} catch (error) {
userLogger.error("[Storage Test] Operation failed:", error);