zjhttpc 0.12.0

HTTP client made by Jinhui ZHANG. Aims at easy to use, with special features I want
Documentation
use zjhttpc::Result;
use zjhttpc::client::ZJHttpClient;
use zjhttpc::requestx::Request;

/// Subscribe to Wikimedia's recent-changes SSE feed and print a few events.
#[async_std::main]
async fn main() -> Result<()> {
	let client = ZJHttpClient::builder().build().unwrap();

	let mut req = Request::new("GET", "https://stream.wikimedia.org/v2/stream/recentchange")?
		.set_header("Accept", "text/event-stream");

	let mut resp = client.send(&mut req).await?;
	println!("status: {}", resp.status_code());

	let mut sse = match resp.body_sse_stream() {
		Some(s) => s,
		None => {
			println!("no body stream");
			return Ok(());
		}
	};

	let mut count = 0;
	while let Some(ev) = sse.next_event().await? {
		count += 1;
		let kind = ev.event.as_deref().unwrap_or("message");
		let data = ev.data.trim_end_matches('\n');
		println!(
			"#{count} [{kind}] id={:?} retry={:?} data={data}",
			ev.id, ev.retry
		);
		if count >= 5 {
			break;
		}
	}

	Ok(())
}