#[macro_use]
extern crate tracing;
mod api;
mod audit;
mod chunks;
mod error;
mod event;
mod faucet;
mod files;
mod folders;
mod register;
mod uploader;
mod wallet;
#[cfg(feature = "test-utils")]
pub mod test_utils;
pub use sn_networking as networking;
pub use sn_protocol as protocol;
pub use sn_registers as registers;
pub use sn_transfers as transfers;
const MAX_CONCURRENT_TASKS: usize = 32;
pub use self::{
audit::{DagError, SpendDag, SpendDagGet, SpendFault},
error::Error,
event::{ClientEvent, ClientEventsBroadcaster, ClientEventsReceiver},
faucet::{get_tokens_from_faucet, load_faucet_wallet_from_genesis_wallet},
files::{
download::{FilesDownload, FilesDownloadEvent},
FilesApi, BATCH_SIZE,
},
folders::{FolderEntry, FoldersApi, Metadata},
register::ClientRegister,
uploader::{UploadCfg, UploadEvent, UploadSummary, Uploader},
wallet::{broadcast_signed_spends, send, StoragePaymentResult, WalletClient},
};
pub(crate) use error::Result;
use sn_networking::Network;
use std::sync::Arc;
#[cfg(target_arch = "wasm32")]
use console_error_panic_hook;
#[cfg(target_arch = "wasm32")]
use wasm_bindgen::prelude::*;
#[cfg(target_arch = "wasm32")]
use web_sys::console;
#[cfg(target_arch = "wasm32")]
#[wasm_bindgen(start)]
pub async fn main_js() -> std::result::Result<(), JsValue> {
console_error_panic_hook::set_once();
console::log_1(&JsValue::from_str("Hello safe world!"));
tracing_wasm::set_as_global_default();
Ok(())
}
#[wasm_bindgen]
#[cfg(target_arch = "wasm32")]
pub async fn get_data(peer: &str, data_address: &str) -> std::result::Result<(), JsError> {
let bytes = hex::decode(&data_address).expect("Input address is not a hex string");
let xor_name = xor_name::XorName(
bytes
.try_into()
.expect("Failed to parse XorName from hex string"),
);
use sn_protocol::storage::ChunkAddress;
console::log_1(&JsValue::from_str(peer));
let the_peer = sn_peers_acquisition::parse_peer_addr(peer)?;
console::log_1(&JsValue::from_str(&format!(
"Provided Peer was {the_peer:?}"
)));
let client = Client::quick_start(Some(vec![the_peer]))
.await
.map_err(|e| JsError::new(&format!("Client could not start: {e:?}")))?;
console::log_1(&JsValue::from_str("Client started {chunk:?}"));
let chunk = client
.get_chunk(ChunkAddress::new(xor_name), false, None)
.await
.map_err(|e| JsError::new(&format!("Client get data failed: {e:?}")))?;
console::log_1(&JsValue::from_str(&format!("Data found {chunk:?}")));
Ok(())
}
#[derive(Clone)]
pub struct Client {
network: Network,
events_broadcaster: ClientEventsBroadcaster,
signer: Arc<bls::SecretKey>,
}