|
32 | 32 |
|
33 | 33 | let resp = match result { |
34 | 34 | Ok(body) => { |
| 35 | + tracing::info!( |
| 36 | + "Got a valid response from builder, content-type {:?}", |
| 37 | + content_type |
| 38 | + ); |
| 39 | + println!( |
| 40 | + "Got a valid response from builder, content-type {:?}", |
| 41 | + content_type |
| 42 | + ); |
35 | 43 | let mut response = response_builder.status(200); |
36 | 44 |
|
37 | 45 | if let Some(response_headers) = response.headers_mut() { |
@@ -78,11 +86,14 @@ where |
78 | 86 | StatusCode::INTERNAL_SERVER_ERROR |
79 | 87 | })?, |
80 | 88 | }; |
81 | | - |
82 | | - response.body(Body::from(body_content)).map_err(|e| { |
| 89 | + dbg!(&body_content.len()); |
| 90 | + let resp = response.body(Body::from(body_content)).map_err(|e| { |
83 | 91 | error!(error = ?e); |
| 92 | + dbg!(&e); |
84 | 93 | StatusCode::INTERNAL_SERVER_ERROR |
85 | | - }) |
| 94 | + }); |
| 95 | + dbg!(&resp); |
| 96 | + resp |
86 | 97 | } |
87 | 98 | Err(body) => { |
88 | 99 | let mut response = response_builder.status(body.code); |
@@ -241,9 +252,9 @@ where |
241 | 252 | let content_type = headers |
242 | 253 | .get(CONTENT_TYPE) |
243 | 254 | .and_then(|value| value.to_str().ok()); |
244 | | - |
| 255 | + dbg!(&headers); |
245 | 256 | let fork_name = headers |
246 | | - .get("") |
| 257 | + .get(CONSENSUS_VERSION_HEADER) |
247 | 258 | .and_then(|value| ForkName::from_str(value.to_str().unwrap()).ok()); |
248 | 259 |
|
249 | 260 | let bytes = Bytes::from_request(req, _state) |
@@ -363,7 +374,7 @@ where |
363 | 374 | } |
364 | 375 |
|
365 | 376 | // Headers |
366 | | -#[derive(Default, Clone, Copy)] |
| 377 | +#[derive(Default, Clone, Copy, Debug)] |
367 | 378 | pub enum ContentType { |
368 | 379 | #[default] |
369 | 380 | Json, |
@@ -540,3 +551,43 @@ impl FromStr for Accept { |
540 | 551 | accept_type.ok_or_else(|| "accept header is not supported".to_string()) |
541 | 552 | } |
542 | 553 | } |
| 554 | + |
| 555 | +#[cfg(test)] |
| 556 | +mod tests { |
| 557 | + use std::usize; |
| 558 | + |
| 559 | + use super::*; |
| 560 | + use axum::body::to_bytes; |
| 561 | + use beacon_api_types::{ |
| 562 | + Blob, BlobsBundle, EthSpec, ExecutionPayload, ExecutionPayloadAndBlobs, |
| 563 | + ExecutionPayloadDeneb, FullPayloadContents, KzgCommitment, KzgProof, MainnetEthSpec, |
| 564 | + }; |
| 565 | + |
| 566 | + #[tokio::test] |
| 567 | + async fn test_something() { |
| 568 | + let payload_and_blobs: ExecutionPayloadAndBlobs<MainnetEthSpec> = |
| 569 | + ExecutionPayloadAndBlobs { |
| 570 | + blobs_bundle: BlobsBundle { |
| 571 | + commitments: vec![KzgCommitment::empty_for_testing()].into(), |
| 572 | + proofs: vec![KzgProof::empty()].into(), |
| 573 | + blobs: vec![Blob::<MainnetEthSpec>::new(vec![ |
| 574 | + 42; |
| 575 | + MainnetEthSpec::bytes_per_blob() |
| 576 | + ]) |
| 577 | + .unwrap()] |
| 578 | + .into(), |
| 579 | + }, |
| 580 | + execution_payload: ExecutionPayload::Deneb(ExecutionPayloadDeneb { |
| 581 | + ..Default::default() |
| 582 | + }), |
| 583 | + }; |
| 584 | + let full_payload = FullPayloadContents::PayloadAndBlobs(payload_and_blobs); |
| 585 | + let resp = build_response_with_headers(Ok(full_payload), ContentType::Ssz, ForkName::Deneb) |
| 586 | + .await |
| 587 | + .unwrap(); |
| 588 | + let body = to_bytes(resp.into_body(), usize::MAX).await.unwrap(); |
| 589 | + dbg!(&body.len()); |
| 590 | + FullPayloadContents::<MainnetEthSpec>::from_ssz_bytes_by_fork(&body, ForkName::Deneb) |
| 591 | + .unwrap(); |
| 592 | + } |
| 593 | +} |
0 commit comments