use std::future::ready; use futures_util::StreamExt; use serde::{Deserialize, Serialize}; use tracing::{info, trace, warn}; use tracing_subscriber::EnvFilter; use wot_discovery::{Discovered, Discoverer}; use wot_td::extend::ExtendableThing; #[derive(Debug, Clone, Serialize, Deserialize)] struct A {} impl ExtendableThing for A { type InteractionAffordance = (); type PropertyAffordance = (); type ActionAffordance = (); type EventAffordance = (); type Form = (); type ExpectedResponse = (); type DataSchema = (); type ObjectSchema = (); type ArraySchema = (); } #[tokio::main] async fn main() -> Result<(), Box> { let filter = EnvFilter::try_from_default_env() .or_else(|_| EnvFilter::try_new("info")) .unwrap(); tracing_subscriber::fmt().with_env_filter(filter).init(); let d = Discoverer::new()?.ext::(); d.stream()? .for_each(|discovered| { match discovered { Ok(Discovered { thing: t, .. }) => { info!("found {:?} {:?}", t.title, t.id,); trace!("{}", serde_json::to_string_pretty(&t).unwrap()); } Err(e) => warn!("something went wrong {:?}", e), } ready(()) }) .await; Ok(()) }