From 44dbd947df219266ed0b3da5b77fc7c2a60f9552 Mon Sep 17 00:00:00 2001 From: Matthias Beyer Date: Tue, 23 Apr 2019 15:04:22 +0200 Subject: Implement JSON frontend --- src/frontend/json.rs | 48 ++++-------------------------------------------- 1 file changed, 4 insertions(+), 44 deletions(-) diff --git a/src/frontend/json.rs b/src/frontend/json.rs index 7430040..9cf5573 100644 --- a/src/frontend/json.rs +++ b/src/frontend/json.rs @@ -18,56 +18,16 @@ impl JsonFrontend { } impl Frontend for JsonFrontend { - /// TODO: Implement to-JSON fn list_packages(&self, packages: Vec) -> Result<()> { + let output = serde_json::ser::to_string_pretty(&packages).map_err(Error::from)?; let mut outlock = self.0.lock(); - - packages.iter().fold(Ok(()), |accu, package| { - accu.and_then(|_| { - let status = if let Some(stat) = package.status() { - format!("{}", stat) - } else { - String::from("No status") - }; // not optimal, but works for now. - - let url = if let Some(url) = package.www() { - if let Some(url) = url.first() { - format!("{}", url.deref()) - } else { - String::from("") - } - } else { - String::from("") - }; // not optimal, but works for now - - writeln!(outlock, - "{name:10} - {version:8} - {repo:15} - {status:5} - {www}", - name = package.name().deref(), - version = package.version().deref(), - repo = package.repo().deref(), - status = status, - www = url).map(|_| ()).map_err(Error::from) - }) - }) + writeln!(outlock, "{}", output).map_err(Error::from) } - /// TODO: Implement to-JSON fn list_problems(&self, problems: Vec) -> Result<()> { + let output = serde_json::ser::to_string_pretty(&problems).map_err(Error::from)?; let mut outlock = self.0.lock(); - - problems.iter().fold(Ok(()), |accu, problem| { - accu.and_then(|_| { - writeln!(outlock, - "{repo:10} - {name:10} - {effname:10} - {maintainer:15} - {desc}", - repo = problem.repo().deref(), - name = problem.name().deref(), - effname = problem.effname().deref(), - maintainer = problem.maintainer().deref(), - desc = problem.problem_description()) - .map(|_| ()) - .map_err(Error::from) - }) - }) + writeln!(outlock, "{}", output).map_err(Error::from) } } -- cgit v1.2.3