Skip to content

Commit

Permalink
Merge pull request #9 from acarteas/bug/8_proxy_failure
Browse files Browse the repository at this point in the history
Support serving podcasts behind a proxy
  • Loading branch information
acarteas authored Aug 11, 2021
2 parents 089a9fc + bb58b95 commit 9b6e248
Show file tree
Hide file tree
Showing 5 changed files with 12 additions and 10 deletions.
1 change: 1 addition & 0 deletions src/Directory2Rss.ConsoleApp/Program.cs
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@ static void GenerateEmptyConfig()
{
PodcastConfig config = new PodcastConfig();
config.Listings.Add("<ENTER UNIQUE, SHORT TITLE (NO SPACES)>", new PodcastListing());
config.ListingUrl = "<ENTER PUBLIC FACING URL (e.g. http://mywebsite.com OR http://localhost)>";
config.IPAddress = "<ENTER YOUR IP ADDRESS>";
config.Listings.FirstOrDefault().Value.PodcastTitle = "<ENTER PODCAST TITLE>";
config.Listings.FirstOrDefault().Value.DirectoryToServe = "<ENTER DIRECTORY THAT CONTAINS PODCAST (e.g. C:/Podcasts/MyFavoritePodcast)>";
Expand Down
1 change: 1 addition & 0 deletions src/Directory2Rss.ConsoleApp/config.example.json
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
{
"IPAddress": "<ENTER YOUR IP ADDRESS>",
"ListingUrl": "<ENTER PUBLIC FACING URL (e.g. http://mywebsite.com OR http://localhost)>",
"HttpPort": "<ENTER HTTP PORT (DEFAULT IS 80)",
"Listings": {
"<ENTER UNIQUE, SHORT TITLE (NO SPACES)>": {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ public async Task GetRoot()
writer.WriteLine("<ul>");
foreach(var listing in Config.Listings)
{
string url = string.Format("http://{0}/{1}/rss", Config.IPAddress, listing.Key);
string url = $"http://{Config.IPAddress}:{Config.HttpPort}/{listing.Key}/rss";
writer.WriteLine("<li><a href=\"{0}\">{1}</li>", url, listing.Value.PodcastTitle);
}
writer.WriteLine("</ul>");
Expand All @@ -53,11 +53,10 @@ public async Task GetRssFeed(string podcast)
if(Config.Listings.ContainsKey(podcast))
{
PodcastListing localConfig = Config.Listings[podcast];
string baseUrl = string.Format("http://{0}", Config.IPAddress);
HttpContext.Response.ContentType = "text/xml";
using (var writer = HttpContext.OpenResponseText())
{
PodcastRss rss = new PodcastRss(localConfig, Config.IPAddress);
PodcastRss rss = new PodcastRss(localConfig, Config.ListingUrl);
var files = Directory
.EnumerateFiles(localConfig.DirectoryToServe)
.Where(f => localConfig.AudioExtensions.Contains(Path.GetExtension(f)))
Expand All @@ -81,8 +80,8 @@ public async Task GetRssFeed(string podcast)
{
Author = tfile.Tag.FirstAlbumArtist,
Title = tfile.Tag.Title,
PodcastBaseUrl = baseUrl,
AudioUrl = string.Format("{0}/{1}/files/{2}", baseUrl, podcast, encodedFileName),
PodcastBaseUrl = Config.ListingUrl,
AudioUrl = string.Format("{0}/{1}/files/{2}", Config.ListingUrl, podcast, encodedFileName),
PublicationDate = fileDate,
Duration = tfile.Properties.Duration.ToString("hh\\:mm\\:ss")
};
Expand Down
1 change: 1 addition & 0 deletions src/Directory2Rss.Library/PodcastConfig.cs
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ public class PodcastConfig
{
public string IPAddress { get; set; }
public int HttpPort { get; set; }
public string ListingUrl { get; set; }
public Dictionary<string, PodcastListing> Listings { get; set; }

public PodcastConfig()
Expand Down
10 changes: 5 additions & 5 deletions src/Directory2Rss.Library/PodcastRss.cs
Original file line number Diff line number Diff line change
Expand Up @@ -10,12 +10,12 @@ public class PodcastRss
private List<PodcastItem> _items = new List<PodcastItem>();

public PodcastListing Listing { get; set; }
public string IpAddress { get; set; }
public string ListingUrl { get; set; }

public PodcastRss(PodcastListing listing, string ipAddress)
public PodcastRss(PodcastListing listing, string listingUrl)
{
Listing = listing;
IpAddress = ipAddress;
ListingUrl = listingUrl;
}

public void AddItem(PodcastItem item)
Expand Down Expand Up @@ -50,11 +50,11 @@ public string ToXml()
"</channel>\n" +
"</rss>",
Listing.PodcastTitle,
string.Format("http://{0}", IpAddress),
ListingUrl,
Listing.PodcastOwner,
Listing.PodcastDescription,
Listing.PodcastOwner,
string.Format("http://{0}/image", IpAddress),
$"{ListingUrl}/image",
Listing.PodcastCategory,
itemsXml
);
Expand Down

0 comments on commit 9b6e248

Please sign in to comment.