From 8a18630ae59227565112be795b3dbe48d7c710a7 Mon Sep 17 00:00:00 2001 From: Jordan Petridis Date: Mon, 12 Mar 2018 20:49:02 +0200 Subject: [PATCH] Initial integration of the itunes resolver with the Add button. --- hammond-gtk/src/headerbar.rs | 12 ++++++++++++ hammond-gtk/src/utils.rs | 8 +++----- 2 files changed, 15 insertions(+), 5 deletions(-) diff --git a/hammond-gtk/src/headerbar.rs b/hammond-gtk/src/headerbar.rs index 15c6b83..3b5bd50 100644 --- a/hammond-gtk/src/headerbar.rs +++ b/hammond-gtk/src/headerbar.rs @@ -12,6 +12,7 @@ use std::sync::mpsc::Sender; use app::Action; use stacks::Content; +use utils::itunes_to_rss; #[derive(Debug, Clone)] pub struct Header { @@ -154,8 +155,18 @@ impl Header { } } +// FIXME: THIS ALSO SUCKS! fn on_add_bttn_clicked(entry: >k::Entry, sender: Sender) -> Result<(), Error> { let url = entry.get_text().unwrap_or_default(); + let url = if url.contains("itunes.com") || url.contains("apple.com") { + info!("Detected itunes url."); + let foo = itunes_to_rss(&url)?; + info!("Resolved to {}", foo); + foo + } else { + url.to_owned() + }; + let source = Source::from_url(&url).context("Failed to convert url to a Source entry.")?; entry.set_text(""); @@ -165,6 +176,7 @@ fn on_add_bttn_clicked(entry: >k::Entry, sender: Sender) -> Result<(), Ok(()) } +// FIXME: THIS SUCKS! fn on_url_change( entry: >k::Entry, result: >k::Label, diff --git a/hammond-gtk/src/utils.rs b/hammond-gtk/src/utils.rs index b0a93fe..5d94e7a 100644 --- a/hammond-gtk/src/utils.rs +++ b/hammond-gtk/src/utils.rs @@ -133,11 +133,9 @@ fn lookup_id(id: u32) -> Result { let url = format!("https://itunes.apple.com/lookup?id={}&entity=podcast", id); let req: Value = reqwest::get(&url)?.json()?; // FIXME: First time using serde, this could be done better and avoid using [] for indexing. - let feedurl = req["results"][0]["feedUrl"] - .as_str() - .ok_or_else(|| format_err!("Failed to get url from itunes response"))? - .into(); - Ok(feedurl) + let feedurl = req["results"][0]["feedUrl"].as_str(); + let feedurl = feedurl.ok_or_else(|| format_err!("Failed to get url from itunes response"))?; + Ok(feedurl.into()) } #[cfg(test)]