From 8ce2e809e9eacb202fe8c1b2359c971c9c49dbf0 Mon Sep 17 00:00:00 2001 From: Petar Radovic Date: Wed, 23 Apr 2025 19:47:15 +0200 Subject: [PATCH] credentials --- sz-poc-offsite-2025/evm/lightnode/src/lib.rs | 35 ++++++++++++++----- sz-poc-offsite-2025/evm/lightnode/src/main.rs | 14 ++++++-- 2 files changed, 38 insertions(+), 11 deletions(-) diff --git a/sz-poc-offsite-2025/evm/lightnode/src/lib.rs b/sz-poc-offsite-2025/evm/lightnode/src/lib.rs index d2d4254..b1635bc 100644 --- a/sz-poc-offsite-2025/evm/lightnode/src/lib.rs +++ b/sz-poc-offsite-2025/evm/lightnode/src/lib.rs @@ -2,34 +2,51 @@ use std::ops::Range; use executor_http_client::{BasicAuthCredentials, ExecutorHttpClient}; use nomos::CryptarchiaInfo; -use reqwest::Url; +use reqwest::{RequestBuilder, Url}; use serde::{Deserialize, Serialize}; -use tracing::{error, error_span, info}; +use tracing::{error, info}; pub const CRYPTARCHIA_INFO: &str = "/cryptarchia/info"; pub const STORAGE_BLOCK: &str = "/storage/block"; mod nomos; +#[derive(Clone, Debug)] +pub struct Credentials { + pub username: String, + pub password: Option, +} + pub struct NomosClient { base_url: Url, reqwest_client: reqwest::Client, + basic_auth: Credentials, } impl NomosClient { - pub fn new(base_url: Url) -> Self { + pub fn new(base_url: Url, basic_auth: Credentials) -> Self { Self { base_url, reqwest_client: reqwest::Client::new(), + basic_auth, } } - pub async fn get_cryptarchia_info( - &self, - base_url: Url, - ) -> Result { - let url = base_url.join(CRYPTARCHIA_INFO).expect("Invalid URL"); - let response = self.reqwest_client.get(url).send().await?; + pub async fn get_cryptarchia_info(&self) -> Result { + let url = self.base_url.join(CRYPTARCHIA_INFO).expect("Invalid URL"); + + let request = self.reqwest_client.get(url).basic_auth( + self.basic_auth.username.clone(), + self.basic_auth.password.clone(), + ); + + info!("Sending request with creds {:?}", self.basic_auth); + + let response = request.send().await?; + if !response.status().is_success() { + error!("Failed to get cryptarchia info: {}", response.status()); + } + let info = response.json::().await?; Ok(info) } diff --git a/sz-poc-offsite-2025/evm/lightnode/src/main.rs b/sz-poc-offsite-2025/evm/lightnode/src/main.rs index c691c94..1a44268 100644 --- a/sz-poc-offsite-2025/evm/lightnode/src/main.rs +++ b/sz-poc-offsite-2025/evm/lightnode/src/main.rs @@ -1,5 +1,6 @@ use clap::Parser; -use evm_lightnode::NomosClient; +use evm_lightnode::{Credentials, NomosClient}; +use executor_http_client::BasicAuthCredentials; use url::Url; use std::error; @@ -19,13 +20,22 @@ async fn main() -> Result<(), Box> { let args = Args::parse(); let url = std::env::var("NOMOS_EXECUTOR").unwrap_or(TESTNET_EXECUTOR.to_string()); + let user = std::env::var("NOMOS_USER").unwrap_or_default(); + let password = std::env::var("NOMOS_PASSWORD").unwrap_or_default(); + let basic_auth = Credentials { + username: user, + password: Some(password), + }; let filter = EnvFilter::try_from_default_env().unwrap_or_else(|_| EnvFilter::new(&args.log_level)); fmt::fmt().with_env_filter(filter).with_target(false).init(); - let consensus = NomosClient::new(Url::parse(&url).unwrap()); + let consensus = NomosClient::new(Url::parse(&url).unwrap(), basic_auth); + + let info = consensus.get_cryptarchia_info().await?; + println!("Cryptarchia Info: {:?}", info); Ok(()) }