credentials

This commit is contained in:
Petar Radovic 2025-04-23 19:47:15 +02:00
parent c1d14a1ef9
commit dcf80d95b1
2 changed files with 38 additions and 11 deletions

View File

@ -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<String>,
}
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<CryptarchiaInfo, reqwest::Error> {
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<CryptarchiaInfo, reqwest::Error> {
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::<CryptarchiaInfo>().await?;
Ok(info)
}

View File

@ -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<dyn error::Error>> {
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(())
}