|
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 | + dbg!( |
| 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,13 @@ 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); |
84 | 92 | StatusCode::INTERNAL_SERVER_ERROR |
85 | | - }) |
| 93 | + }); |
| 94 | + dbg!(&resp); |
| 95 | + resp |
86 | 96 | } |
87 | 97 | Err(body) => { |
88 | 98 | let mut response = response_builder.status(body.code); |
@@ -241,9 +251,9 @@ where |
241 | 251 | let content_type = headers |
242 | 252 | .get(CONTENT_TYPE) |
243 | 253 | .and_then(|value| value.to_str().ok()); |
244 | | - |
| 254 | + dbg!(&headers); |
245 | 255 | let fork_name = headers |
246 | | - .get("") |
| 256 | + .get(CONSENSUS_VERSION_HEADER) |
247 | 257 | .and_then(|value| ForkName::from_str(value.to_str().unwrap()).ok()); |
248 | 258 |
|
249 | 259 | let bytes = Bytes::from_request(req, _state) |
@@ -363,7 +373,7 @@ where |
363 | 373 | } |
364 | 374 |
|
365 | 375 | // Headers |
366 | | -#[derive(Default, Clone, Copy)] |
| 376 | +#[derive(Default, Clone, Copy, Debug)] |
367 | 377 | pub enum ContentType { |
368 | 378 | #[default] |
369 | 379 | Json, |
@@ -540,3 +550,41 @@ impl FromStr for Accept { |
540 | 550 | accept_type.ok_or_else(|| "accept header is not supported".to_string()) |
541 | 551 | } |
542 | 552 | } |
| 553 | + |
| 554 | +#[cfg(test)] |
| 555 | +mod tests { |
| 556 | + use std::usize; |
| 557 | + |
| 558 | + use super::*; |
| 559 | + use axum::body::to_bytes; |
| 560 | + use beacon_api_types::{ |
| 561 | + Blob, BlobsBundle, EthSpec, ExecutionPayload, ExecutionPayloadAndBlobs, |
| 562 | + ExecutionPayloadDeneb, FullPayloadContents, KzgCommitment, KzgProof, MainnetEthSpec, |
| 563 | + }; |
| 564 | + |
| 565 | + #[tokio::test] |
| 566 | + async fn test_something() { |
| 567 | + let payload_and_blobs: ExecutionPayloadAndBlobs<MainnetEthSpec> = |
| 568 | + ExecutionPayloadAndBlobs { |
| 569 | + blobs_bundle: BlobsBundle { |
| 570 | + commitments: vec![KzgCommitment::empty_for_testing()].into(), |
| 571 | + proofs: vec![KzgProof::empty()].into(), |
| 572 | + blobs: vec![Blob::<MainnetEthSpec>::new(vec![ |
| 573 | + 42; |
| 574 | + MainnetEthSpec::bytes_per_blob() |
| 575 | + ]) |
| 576 | + .unwrap()] |
| 577 | + .into(), |
| 578 | + }, |
| 579 | + execution_payload: ExecutionPayload::Deneb(ExecutionPayloadDeneb { |
| 580 | + ..Default::default() |
| 581 | + }), |
| 582 | + }; |
| 583 | + let full_payload = FullPayloadContents::PayloadAndBlobs(payload_and_blobs); |
| 584 | + let resp = build_response_with_headers(Ok(full_payload), ContentType::Ssz, ForkName::Deneb) |
| 585 | + .await |
| 586 | + .unwrap(); |
| 587 | + let body = to_bytes(resp.into_body(), usize::MAX).await.unwrap(); |
| 588 | + dbg!(FullPayloadContents::<MainnetEthSpec>::from_ssz_bytes_by_fork(&body, ForkName::Deneb)); |
| 589 | + } |
| 590 | +} |
0 commit comments