rust_project 0.1.5

upload test
Documentation
#![allow(dead_code, unused_must_use, unused_imports, non_snake_case)]
use http::{
    header::{COOKIE, USER_AGENT},
    HeaderMap, HeaderValue,
};
use reqwest;

use jsonpath;
use scraper::{Html, Selector};
use std::thread::{sleep, spawn};
use std::time::Duration;

extern crate futures;
use tokio::runtime::Runtime;

pub fn main2() {
    
    let RUNTIME = Runtime::new().unwrap();

    futures::executor::block_on(async move{
        RUNTIME.spawn(async move {web_request().await})
        .await.unwrap()
    });

    // futures::executor::block_on(web_request());
    futures::executor::block_on(sleepus());
}

// #[tokio::main]
pub async fn web_request() -> Result<(), reqwest::Error> {
    let url = "https://ssrl.scrape.center/";
    let resp = reqwest::get(url).await?;

    println!("Resp:{:?},{}", resp.version(), resp.status());
    println!("Header: {:#?}\n", resp.headers());
    parse_html(resp).await;

    let url = "https://spa1.scrape.center/api/movie/?limit=10&offset=0";
    let resp = reqwest::get(url).await?;
    let json_body: serde_json::Value = resp.json().await?;
    println!("Json:{:#?}", json_body);
    let json_sel = jsonpath::Selector::new("$.results.*.name").unwrap();
    for json_ele in json_sel.find(&json_body) {
        println!("json title:{}", json_ele.as_str().unwrap());
    }

    // post
    let _resp = reqwest::Client::new()
        .post(url)
        .form(&[("name", "value")])
        .send()
        .await;

    let _resp = reqwest::Client::new()
        .post(url)
        .header("Auth", "xxx")
        .send()
        .await;

    let client = reqwest::Client::builder()
        .cookie_store(true)
        .build()
        .unwrap();
    let mut headers = HeaderMap::new();
    headers.insert(COOKIE, HeaderValue::from_str("key=value").unwrap());
    headers.insert(USER_AGENT, HeaderValue::from_str("my user-agent").unwrap());
    let _reps = client.get(url).headers(headers).send().await?;
    println!("{_reps:#?}");

    Ok(())
}


async fn sleepus() {
    for i in 1..=6 {
        println!("Sleepus {}", i);
        sleep(Duration::from_millis(500));
    }
}

async fn parse_html(resp:reqwest::Response) {
    let body = resp.text().await.unwrap();
    let doc = Html::parse_fragment(&body);
    let selector = Selector::parse(".m-b-sm").unwrap();
    for elem in doc.select(&selector) {
        println!("title: {}", elem.inner_html());
    }
}