aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/main.rs35
1 files changed, 35 insertions, 0 deletions
diff --git a/src/main.rs b/src/main.rs
new file mode 100644
index 0000000..951c94c
--- /dev/null
+++ b/src/main.rs
@@ -0,0 +1,35 @@
1extern crate reqwest;
2extern crate serde_json;
3
4use serde_json::Value;
5
6fn main() {
7 println!("{}", get_extract("scale"));
8}
9
10fn get_extract(title: &str) -> String {
11 let url = format!("https://en.wikipedia.org/w/api.php?action=query&format=json&prop=extracts&list=&meta=&indexpageids=1&continue=%7C%7Cimageinfo&titles={}&exlimit=20&explaintext=1&exsectionformat=plain", title);
12 let res = reqwest::get(&url);
13
14 match res {
15 Ok(mut res) => {
16 if res.status().is_success() {
17 let mut v: Value = serde_json::from_str(&res.text().unwrap()).unwrap();
18
19 // Fetch page and pageids of requested title(s)
20 let pageid = &v["query"]["pageids"][0];
21 let pageid_str = match pageid {
22 Value::String(id) => id,
23 _ => panic!("wut"),
24 };
25
26 format!("{:#}", &v["query"]["pages"][pageid_str]["extract"])
27 } else {
28 format!("Error while parsing url.\nRecieved {}", res.status())
29 }
30 },
31 Err(_) => {
32 format!("Failed to parse URL")
33 }
34 }
35}