diff --git a/Cargo.lock b/Cargo.lock index 613d5ec49..980549e95 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -4916,6 +4916,7 @@ dependencies = [ "futures", "hotshot-types", "serde", + "serde_json", "tagged-base64", "thiserror 1.0.69", "tide-disco", @@ -5346,6 +5347,7 @@ dependencies = [ "rand 0.8.5", "reqwest 0.12.12", "serde", + "serde_json", "sha2 0.10.8", "surf-disco", "tagged-base64", diff --git a/hotshot-builder-api/Cargo.toml b/hotshot-builder-api/Cargo.toml index a948e2b27..b10f8d696 100644 --- a/hotshot-builder-api/Cargo.toml +++ b/hotshot-builder-api/Cargo.toml @@ -15,6 +15,7 @@ hotshot-types = { workspace = true } serde = { workspace = true } tagged-base64 = { workspace = true } thiserror = { workspace = true } +serde_json = { workspace = true } tide-disco = { workspace = true } toml = { workspace = true } vbs = { workspace = true } diff --git a/hotshot-task-impls/Cargo.toml b/hotshot-task-impls/Cargo.toml index 9d594a1ac..6b6720cab 100644 --- a/hotshot-task-impls/Cargo.toml +++ b/hotshot-task-impls/Cargo.toml @@ -29,6 +29,7 @@ jf-vid = { workspace = true } lru = { workspace = true } rand = { workspace = true } serde = { workspace = true } +serde_json = { workspace = true } sha2 = { workspace = true } surf-disco = { workspace = true } tagged-base64 = { workspace = true } diff --git a/hotshot-task-impls/src/builder.rs b/hotshot-task-impls/src/builder.rs index c0d7fad74..2f86493f5 100644 --- a/hotshot-task-impls/src/builder.rs +++ b/hotshot-task-impls/src/builder.rs @@ -163,14 +163,28 @@ pub mod v0_1 { ); let ep = format!("{}{}", self.base_url, endpoint); - let response = reqwest::get(ep.clone()).await; - println!("requested from {}: {:?}", ep, response); + let response = reqwest::get(ep.clone()).await.map_err(|err| { + BuilderClientError::Api(format!("Failed to make request: {:#}", err)) + })?; - println!("querying {}", endpoint); - self.client.get(endpoint).send().await.map_err(|err| { - println!("error: {:#}", err); - err.into() - }) + // Try to deserialize the response + let response_text = response.text().await.map_err(|err| { + BuilderClientError::Api(format!("Failed to get response text: {:#}", err)) + })?; + + let response_json: AvailableBlockHeaderInput = + serde_json::from_str(&response_text).map_err(|err| { + BuilderClientError::Api(format!("Failed to deserialize response: {:#}", err)) + })?; + Ok(response_json) + /* println!("requested from {}: {:?}", ep, response); + + println!("querying {}", endpoint); + self.client.get(endpoint).send().await.map_err(|err| { + println!("error: {:#}", err); + err.into() + }) + */ } /// Claim block diff --git a/sequencer-sqlite/Cargo.lock b/sequencer-sqlite/Cargo.lock index 738e77caa..921f5f71e 100644 --- a/sequencer-sqlite/Cargo.lock +++ b/sequencer-sqlite/Cargo.lock @@ -4704,6 +4704,7 @@ dependencies = [ "futures", "hotshot-types", "serde", + "serde_json", "tagged-base64", "thiserror 1.0.69", "tide-disco", @@ -5011,6 +5012,7 @@ dependencies = [ "rand 0.8.5", "reqwest 0.12.12", "serde", + "serde_json", "sha2 0.10.8", "surf-disco", "tagged-base64",