diff --git a/graph-proxy/Cargo.lock b/graph-proxy/Cargo.lock
index 0c362212..3c3cacb8 100644
--- a/graph-proxy/Cargo.lock
+++ b/graph-proxy/Cargo.lock
@@ -174,6 +174,7 @@ dependencies = [
"static_assertions_next",
"tempfile",
"thiserror 1.0.68",
+ "url",
]
[[package]]
diff --git a/graph-proxy/Cargo.toml b/graph-proxy/Cargo.toml
index ca021676..862c9a63 100644
--- a/graph-proxy/Cargo.toml
+++ b/graph-proxy/Cargo.toml
@@ -16,7 +16,7 @@ exclude = ["test-resources/"]
[dependencies]
anyhow = { version = "1.0.95" }
argo-workflows-openapi = { path = "./argo-workflows-openapi" }
-async-graphql = { version = "7.0.13", features = ["chrono"] }
+async-graphql = { version = "7.0.13", features = ["chrono", "url"] }
async-graphql-axum = { version = "7.0.13" }
axum = { version = "0.7.9" }
axum-extra = { version = "0.9.6", features = ["typed-header"] }
diff --git a/graph-proxy/src/graphql/workflows.rs b/graph-proxy/src/graphql/workflows.rs
index cf8cfd94..8d2d4b5b 100644
--- a/graph-proxy/src/graphql/workflows.rs
+++ b/graph-proxy/src/graphql/workflows.rs
@@ -1,8 +1,8 @@
use super::{Visit, VisitInput, CLIENT};
use crate::ArgoServerUrl;
use argo_workflows_openapi::{
- APIResult, IoArgoprojWorkflowV1alpha1NodeStatus, IoArgoprojWorkflowV1alpha1Workflow,
- IoArgoprojWorkflowV1alpha1WorkflowStatus,
+ APIResult, IoArgoprojWorkflowV1alpha1Artifact, IoArgoprojWorkflowV1alpha1NodeStatus,
+ IoArgoprojWorkflowV1alpha1Workflow, IoArgoprojWorkflowV1alpha1WorkflowStatus,
};
use async_graphql::{
connection::{Connection, CursorType, Edge, EmptyFields, OpaqueCursor},
@@ -10,7 +10,7 @@ use async_graphql::{
};
use axum_extra::headers::{authorization::Bearer, Authorization};
use chrono::{DateTime, Utc};
-use std::{collections::HashMap, ops::Deref};
+use std::{collections::HashMap, ops::Deref, path::Path};
use tracing::{debug, instrument};
use url::Url;
@@ -30,6 +30,12 @@ pub(super) enum WorkflowParsingError {
UnrecognisedTaskDisplayName,
#[error("status was expected but was not present")]
MissingWorkflowStatus,
+ #[error("artifact.s3 was expected but was not present")]
+ UnrecognisedArtifactStore,
+ #[error("artifact.s3.key was expected but was not present")]
+ MissingArtifactKey,
+ #[error("artifact file name is not valid UTF-8")]
+ InvalidArtifactFilename,
}
/// A Workflow consisting of one or more [`Task`]s
@@ -174,7 +180,7 @@ impl WorkflowRunningStatus<'_> {
.data_unchecked::