From 88693f0eaada159b8b27637b92cc6c2f16c59ef8 Mon Sep 17 00:00:00 2001 From: mordax Date: Tue, 18 Dec 2018 21:03:13 -0500 Subject: [PATCH] Trying to pull a json object within a json object using a passed url value --- src/lib.rs | 40 +++++++++++++++++++++++++++++++++++++++- 1 file changed, 39 insertions(+), 1 deletion(-) diff --git a/src/lib.rs b/src/lib.rs index c52a666..9c644c1 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -68,6 +68,7 @@ impl ClientBuilder { struct Star { starred_at: DateTime, repo: Repository, + //lang: Languages, } impl fmt::Display for Star { @@ -83,6 +84,7 @@ struct Repository { full_name: String, description: Option, stargazers_count: i32, + languages_url: Option, } impl fmt::Display for Repository { @@ -93,11 +95,33 @@ impl fmt::Display for Repository { write!(f, " - {}", description)?; } + if let Some(ref languages_url) = self.languages_url { + write!(f, " - {}", languages_url)?; + } + Ok(()) } } -pub fn collect_stars(config: Config) -> Result<(), Box> { +#[derive(Debug, Deserialize)] +struct Languages { + key: Option, + value: Option, +} + +impl fmt::Display for Languages { + fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { + if let Some(ref key) = self.key { + write!(f, " - {}", key)?; + } + if let Some(ref value) = self.value { + write!(f, " - {}", value)?; + } + Ok(()) + } +} + +pub fn collect_stars(config: Config) -> Result<(), Box> { //Where the json extraction happens let mut builder = ClientBuilder::new(); if let Some(ref token) = config.token { @@ -120,6 +144,20 @@ pub fn collect_stars(config: Config) -> Result<(), Box> { } } + let mut langs: Vec = Vec::new(); + + for star in stars.iter(){ + let ref mut next = star.repo.languages_url; + if let Some(ref link) = next{ + let mut res = client.get(link).send()?; + next = &mut extract_link_next(res.headers()); + + let mut s: Vec = res.json()?; + langs.append(&mut s); + } + println!("{:?}", langs) + } + for star in stars.iter() { println!("{}", star); }