Compare commits

...

1 Commits

Author SHA1 Message Date
Shadowfacts 6ec519a11f
Handle feed URL redirects
Closes #1
2019-06-30 22:01:12 -04:00
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}} -> {:ok, %HTTPoison.Response{status_code: 404}} ->
Logger.warn("RSS feed #{feed.feed_url} not found") 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}} -> {:error, %HTTPoison.Error{reason: reason}} ->
Logger.error("Couldn't load RSS feed: #{reason}") Logger.error("Couldn't load RSS feed: #{reason}")
end end
@ -200,7 +212,7 @@ defmodule Frenzy.UpdateFeeds do
{:err, "404 not found"} {:err, "404 not found"}
{:ok, %HTTPoison.Response{status_code: status_code, headers: headers}} {: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} = {"Location", new_url} =
Enum.find(headers, fn {name, _value} -> Enum.find(headers, fn {name, _value} ->
name == "Location" name == "Location"