~ciriarte/apizotl

df8bafb8c53676ee99fa818b99f2f0270c90bc1e — Carlos Iriarte 2 years ago a547556
fix: add json serialization
3 files changed, 18 insertions(+), 3 deletions(-)

M Cargo.lock
M Cargo.toml
M src/main.rs
M Cargo.lock => Cargo.lock +5 -0
@@ 524,6 524,8 @@ dependencies = [
 "kuchiki",
 "regex",
 "reqwest",
 "serde",
 "serde_json",
]

[[package]]


@@ 1006,6 1008,9 @@ name = "serde"
version = "1.0.118"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "06c64263859d87aa2eb554587e2d23183398d617427327cf2b3d0ed8c69e4800"
dependencies = [
 "serde_derive",
]

[[package]]
name = "serde_derive"

M Cargo.toml => Cargo.toml +3 -1
@@ 9,4 9,6 @@ edition = "2018"
[dependencies]
reqwest= { version = "0.10.0-alpha.2", features = ["blocking"] }
kuchiki= "*"
regex = { version = "1.4.2" }
\ No newline at end of file
regex = { version = "1.4.2" }
serde = { version = "1.0", features = ["derive"] }
serde_json = { version = "1.0" }

M src/main.rs => src/main.rs +10 -2
@@ 5,7 5,9 @@ extern crate kuchiki;
use kuchiki::traits::*;
use regex::Regex;

#[derive(Debug)]
use serde::{Deserialize, Serialize};

#[derive(Serialize, Deserialize, Debug)]
struct Person {
    name: String,
    dob: i32,


@@ 24,6 26,7 @@ fn main() -> std::result::Result<(), Box<dyn Error>> {
    res.copy_to(&mut buf)?;
    let s: String = String::from_utf8(buf)?;

    let mut presidents: Vec<Person> = vec![];
    let table_selector = ".wikitable:not(:last-of-type)";
    let document = kuchiki::parse_html().one(s);
    for table_match in document.select(table_selector).unwrap() {


@@ 90,9 93,14 @@ fn main() -> std::result::Result<(), Box<dyn Error>> {
                img: format!("https:{}", img),
            };

            println!("{:?}", person);
            presidents.push(person);
        }
    }

    let j = serde_json::to_string(&presidents)?;

    // Print, write to a file, or send to an HTTP server.
    println!("{}", j);

    Ok(())
}