Skip to content

Instantly share code, notes, and snippets.

@mathieu-benoit
Created June 21, 2018 16:38
Show Gist options
  • Save mathieu-benoit/caa3c4f69850e3ed9dc8db33cb91d884 to your computer and use it in GitHub Desktop.
Save mathieu-benoit/caa3c4f69850e3ed9dc8db33cb91d884 to your computer and use it in GitHub Desktop.
LaToileElectronique
using Microsoft.Azure.WebJobs;
using Microsoft.Azure.WebJobs.Extensions.Http;
using Microsoft.Azure.WebJobs.Host;
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.Net;
using System.Net.Http;
using System.Text;
using System.Threading.Tasks;
namespace PublishWeeklyProgram
{
public static class GenerateBlogArticle
{
[FunctionName("GenerateBlogArticle")]
public static async Task<HttpResponseMessage> Run([HttpTrigger(AuthorizationLevel.Function, new string[] {"post"}, Route = null)] HttpRequestMessage req, TraceWriter log)
{
GenerateBlogArticle.WeeklyProgram weeklyProgram = (GenerateBlogArticle.WeeklyProgram) JsonConvert.DeserializeObject<GenerateBlogArticle.WeeklyProgram>(await req.Content.ReadAsStringAsync());
if (weeklyProgram == null)
return HttpRequestMessageExtensions.CreateResponse<string>(req, HttpStatusCode.BadRequest, (M0) "Please provide 'weeklyProgram' parameter.");
log.Info(string.Format("Current date: {0}", (object) weeklyProgram.Date), (string) null);
DateTime currentDate = DateTime.Parse(weeklyProgram.Date);
return HttpRequestMessageExtensions.CreateResponse(req, HttpStatusCode.OK, (M0) new
{
url = GenerateBlogArticle.GetBlogArticleUrl(currentDate),
title = GenerateBlogArticle.GetBlogArticleTitle(currentDate),
content = GenerateBlogArticle.GetBlogArticleContent(weeklyProgram, currentDate)
});
}
private static string GetBlogArticleUrl(DateTime currentDate)
{
return string.Format("http://ckiafm.org/article/playlist-la-toile-electronique-{0}", (object) currentDate.ToString("dd-MM-yyyy"));
}
private static string GetBlogArticleTitle(DateTime currentDate)
{
return string.Format("Playlist La Toile Électronique {0}", (object) currentDate.ToString("dd-MM-yyyy"));
}
private static string GetBlogArticleContent(GenerateBlogArticle.WeeklyProgram weeklyProgram, DateTime currentDate)
{
StringBuilder builder = new StringBuilder();
GenerateBlogArticle.FillBlogArticleHeaderContent(builder, weeklyProgram, currentDate);
GenerateBlogArticle.FillBlogArticleBodyContent(builder, weeklyProgram);
GenerateBlogArticle.FillBlogArticleFooterContent(builder);
return builder.ToString();
}
private static void FillBlogArticleHeaderContent(StringBuilder builder, GenerateBlogArticle.WeeklyProgram weeklyProgram, DateTime currentDate)
{
builder.Append(string.Format("Voici le podcast de notre émission du {0} de La Toile Électronique disponible en téléchargement <a href=\"{1}\">ici</a>.<br />", (object) currentDate.ToString("dd-MM-yyyy"), (object) weeklyProgram.PodcastLink));
builder.Append(string.Format("Vous pouvez également retrouver cette playlist avec les vidéos clips associées <a href=\"{0}\">ici</a>.<br /><br />", (object) weeklyProgram.YouTubeLink));
}
private static void FillBlogArticleBodyContent(StringBuilder builder, GenerateBlogArticle.WeeklyProgram weeklyProgram)
{
foreach (GenerateBlogArticle.Piece piece in weeklyProgram.Pieces)
builder.Append(string.Format("<li>{0} - {1}</li>", (object) piece.Artist, (object) piece.Title));
}
private static void FillBlogArticleFooterContent(StringBuilder builder)
{
builder.Append("<br /><br />N'hésitez pas à nous suivre sur <a href=\"https://www.facebook.com/La-Toile-%C3%89lectronique-337325336715228/\">notre page Facebook</a> et sur <a href=\"https://www.youtube.com/channel/UCyqp95n-OdfkYfiKMW4nexg\">notre page YouTube</a>.");
}
public class WeeklyProgram
{
public List<GenerateBlogArticle.Piece> Pieces { get; set; }
public string Date { get; set; }
public string PodcastLink { get; set; }
public string YouTubeLink { get; set; }
}
public class Piece
{
public string Artist { get; set; }
public string Title { get; set; }
public string YouTube { get; set; }
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment