Handle feed URL redirects

Closes #1
This commit is contained in:
Shadowfacts 2019-06-30 21:41:18 -04:00
parent e004b65263
commit 6ec519a11f
Signed by: shadowfacts
GPG Key ID: 94A5AB95422746E5
1 changed files with 13 additions and 1 deletions

View File

@ -74,6 +74,18 @@ defmodule Frenzy.UpdateFeeds do
{:ok, %HTTPoison.Response{status_code: 404}} ->
Logger.warn("RSS feed #{feed.feed_url} not found")
{:ok, %HTTPoison.Response{status_code: status_code, headers: headers}}
when status_code in [301, 302] ->
{"Location", new_url} =
Enum.find(headers, fn {name, _value} ->
name == "Location"
end)
Logger.debug("Got 301 redirect from #{feed.feed_url} to #{new_url}, updating feed URL")
changeset = Feed.changeset(feed, %{feed_url: new_url})
{:ok, feed} = Repo.insert(changeset)
update_feed(feed)
{:error, %HTTPoison.Error{reason: reason}} ->
Logger.error("Couldn't load RSS feed: #{reason}")
end
@ -200,7 +212,7 @@ defmodule Frenzy.UpdateFeeds do
{:err, "404 not found"}
{:ok, %HTTPoison.Response{status_code: status_code, headers: headers}}
when status_code == 301 or status_code == 302 ->
when status_code in [301, 302] ->
{"Location", new_url} =
Enum.find(headers, fn {name, _value} ->
name == "Location"