use tonic::{Request, Status, metadata::MetadataValue, transport::Channel}; use youtube_chat_rs::stream_list::{ LiveChatMessageListRequest, v3_data_live_chat_message_service_client::V3DataLiveChatMessageServiceClient, }; #[tokio::main] async fn main() -> Result<(), Box> { let channel = Channel::from_static("dns:///youtube.googleapis.com:443") .connect() .await?; let mut client = V3DataLiveChatMessageServiceClient::with_interceptor(channel, auth_header); let request = tonic::Request::new(LiveChatMessageListRequest { part: vec!["snippet".to_string()], live_chat_id: Some("A0VHDvkheIg".to_string()), // TODO Fetch Latest Stream ID max_results: Some(20), page_token: None, hl: None, profile_image_size: None, }); let response = client.stream_list(request).await?; println!("RESPONSE={:?}", response); Ok(()) } fn auth_header(mut req: Request<()>) -> Result, Status> { let token: MetadataValue<_> = "Bearer my-secret-token" .parse() .expect("failed to parse token"); req.metadata_mut() .insert("x-goog-api-key", token) .expect("WHAT"); Ok(req) }