if image cannot be downloaded, fall back to oringinal url

This commit is contained in:
2025-04-16 08:44:18 -06:00
parent 0bd55d3f67
commit a9bc8ef390
6 changed files with 17 additions and 12 deletions

View File

@@ -11,6 +11,7 @@ COPY . .
RUN mkdir -p storage RUN mkdir -p storage
RUN rm -rf /app/storage/* RUN rm -rf /app/storage/*
ENV NEXT_PUBLIC_ENABLE_FILE_SYNC=true
RUN pnpm run build RUN pnpm run build
FROM node:22-alpine AS production FROM node:22-alpine AS production

View File

@@ -1,7 +1,7 @@
#!/bin/bash #!/bin/bash
MAJOR_VERSION="2" MAJOR_VERSION="2"
MINOR_VERSION="6" MINOR_VERSION="7"
VERSION="$MAJOR_VERSION.$MINOR_VERSION" VERSION="$MAJOR_VERSION.$MINOR_VERSION"
TAG_FLAG=false TAG_FLAG=false

View File

@@ -1,6 +1,6 @@
services: services:
canvas_manager: canvas_manager:
image: alexmickelson/canvas_management:2.6 image: alexmickelson/canvas_management:2.7
user: "1000:1000" user: "1000:1000"
container_name: canvas-manager-2 container_name: canvas-manager-2
ports: ports:

View File

@@ -39,7 +39,7 @@ export async function paginatedRequest<T extends any[]>(request: {
var requestCount = 1; var requestCount = 1;
const url = new URL(request.url); const url = new URL(request.url);
url.searchParams.set("per_page", "100"); url.searchParams.set("per_page", "100");
const { data: firstData, headers: firstHeaders } = await axiosClient.get<T>( const { data: firstData, headers: firstHeaders } = await axiosClient.get<T>(
url.toString() url.toString()
); );
@@ -64,5 +64,3 @@ export async function paginatedRequest<T extends any[]>(request: {
return returnData as T; return returnData as T;
} }

View File

@@ -7,7 +7,7 @@ import FormData from "form-data";
export const downloadUrlToTempDirectory = async ( export const downloadUrlToTempDirectory = async (
sourceUrl: string sourceUrl: string
): Promise<string> => { ): Promise<{fileName: string, success: boolean}> => {
try { try {
const fileName = const fileName =
path.basename(new URL(sourceUrl).pathname) || `tempfile-${Date.now()}`; path.basename(new URL(sourceUrl).pathname) || `tempfile-${Date.now()}`;
@@ -16,10 +16,10 @@ export const downloadUrlToTempDirectory = async (
responseType: "arraybuffer", responseType: "arraybuffer",
}); });
await fs.writeFile(tempFilePath, response.data); await fs.writeFile(tempFilePath, response.data);
return tempFilePath; return {fileName: tempFilePath, success: true};
} catch (error) { } catch (error) {
console.error("Error downloading or saving the file:", error); console.log("Error downloading or saving the file:", sourceUrl, error);
throw error; return {fileName: sourceUrl, success: false};
} }
}; };
@@ -93,6 +93,7 @@ export const uploadToCanvasPart2 = async ({
const redirectResponse = await axiosClient.get(redirectUrl); const redirectResponse = await axiosClient.get(redirectUrl);
console.log("redirect response", redirectResponse.data); console.log("redirect response", redirectResponse.data);
} }
// console.log("returning from part 2", JSON.stringify(response.data));
return response.data.url; return response.data.url;
} catch (error) { } catch (error) {
console.error("Error uploading file to Canvas part 2:", error); console.error("Error uploading file to Canvas part 2:", error);

View File

@@ -18,9 +18,14 @@ export const canvasFileRouter = router({
}) })
) )
.mutation(async ({ input: { sourceUrl, canvasCourseId } }) => { .mutation(async ({ input: { sourceUrl, canvasCourseId } }) => {
const localFile = sourceUrl.startsWith("/") const { fileName: localFile, success } = sourceUrl.startsWith("/")
? fileStorageLocation + sourceUrl ? { fileName: fileStorageLocation + sourceUrl, success: true }
: await downloadUrlToTempDirectory(sourceUrl); : await downloadUrlToTempDirectory(sourceUrl);
if (!success) {
console.log("could not download file, returning sourceUrl", sourceUrl);
return sourceUrl;
}
console.log("local temp file", localFile); console.log("local temp file", localFile);
const { upload_url, upload_params } = await uploadToCanvasPart1( const { upload_url, upload_params } = await uploadToCanvasPart1(
localFile, localFile,
@@ -32,7 +37,7 @@ export const canvasFileRouter = router({
upload_url, upload_url,
upload_params, upload_params,
}); });
console.log("canvas url done"); console.log("canvas url done", canvasUrl);
return canvasUrl; return canvasUrl;
}), }),
}); });