diff --git a/Cargo.lock b/Cargo.lock index 784dc1357..aa1d75762 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -338,6 +338,7 @@ checksum = "e79b3f8a79cccc2898f31920fc69f304859b3bd567490f75ebf51ae1c792a9ac" dependencies = [ "compression-codecs", "compression-core", + "futures-io", "pin-project-lite", "tokio", ] @@ -408,6 +409,7 @@ version = "0.0.18" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0d8c50d65ce1b0e0cb65a785ff615f78860d7754290647d3b983208daa4f85e6" dependencies = [ + "async-compression", "crc32fast", "futures-lite", "pin-project", diff --git a/Cargo.toml b/Cargo.toml index 702b4e77e..53ff423f3 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -36,7 +36,7 @@ dotenvy = "0.15" futures = "0.3" tokio-stream = "0.1" async-trait = "0.1" -async_zip = { version = "0.0.18", features = ["tokio"] } +async_zip = { version = "0.0.18", features = ["tokio", "deflate"] } fs2 = "0.4" base64 = "0.22" bytes = "1" diff --git a/apps/fabro-web/app/lib/api-client.ts b/apps/fabro-web/app/lib/api-client.ts index 4c298fd0c..bb59e3607 100644 --- a/apps/fabro-web/app/lib/api-client.ts +++ b/apps/fabro-web/app/lib/api-client.ts @@ -408,6 +408,13 @@ export function requestSignalOptions(request?: Request): RawAxiosRequestConfig { return request?.signal ? { signal: request.signal } : {}; } +/** Absolute href for a path under a run, for links the browser follows itself. */ +function runApiPath(id: string, suffix: string): string { + return `${generatedApiConfiguration.basePath ?? ""}/api/v1/runs/${ + encodeURIComponent(id) + }${suffix}`; +} + export function stageArtifactDownloadUrl( id: string, stageId: string, @@ -418,13 +425,12 @@ export function stageArtifactDownloadUrl( filename, retry: String(retry), }); - return `${generatedApiConfiguration.basePath ?? ""}/api/v1/runs/${ - encodeURIComponent(id) - }/stages/${encodeURIComponent(stageId)}/artifacts/download?${searchParams}`; + return runApiPath( + id, + `/stages/${encodeURIComponent(stageId)}/artifacts/download?${searchParams}`, + ); } export function runArtifactsDownloadUrl(id: string): string { - return `${generatedApiConfiguration.basePath ?? ""}/api/v1/runs/${ - encodeURIComponent(id) - }/artifacts/download`; + return runApiPath(id, "/artifacts/download"); } diff --git a/apps/fabro-web/app/routes/run-artifacts.tsx b/apps/fabro-web/app/routes/run-artifacts.tsx index c03d68875..0f75d6a2e 100644 --- a/apps/fabro-web/app/routes/run-artifacts.tsx +++ b/apps/fabro-web/app/routes/run-artifacts.tsx @@ -138,8 +138,7 @@ function ArtifactList({ runId, files }: { runId: string; files: readonly Artifac