# HG changeset patch # User nelopauselli # Date 1309299922 10800 # Node ID 17531db40d4e52c48526129096b5bbf0cb7ed8ab # Parent 683cc27450ceee7d6b56c1c9e106fbcb246b2c92 Refactoring de la generación de mensajes en twitter diff -r 683cc27450ce -r 17531db40d4e Agendas/trunk/src/Agendas.Twitter/Agendas.Twitter.csproj --- a/Agendas/trunk/src/Agendas.Twitter/Agendas.Twitter.csproj Fri Jun 24 21:19:42 2011 -0300 +++ b/Agendas/trunk/src/Agendas.Twitter/Agendas.Twitter.csproj Tue Jun 28 19:25:22 2011 -0300 @@ -49,9 +49,14 @@ + + + + + diff -r 683cc27450ce -r 17531db40d4e Agendas/trunk/src/Agendas.Twitter/ITwitterWriter.cs --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Agendas/trunk/src/Agendas.Twitter/ITwitterWriter.cs Tue Jun 28 19:25:22 2011 -0300 @@ -0,0 +1,9 @@ +using AltNetHispano.Agendas.Domain; + +namespace AltNetHispano.Agendas.Twitter +{ + public interface ITwitterWriter + { + string Write(Track track); + } +} \ No newline at end of file diff -r 683cc27450ce -r 17531db40d4e Agendas/trunk/src/Agendas.Twitter/TwitterPublicador.cs --- a/Agendas/trunk/src/Agendas.Twitter/TwitterPublicador.cs Fri Jun 24 21:19:42 2011 -0300 +++ b/Agendas/trunk/src/Agendas.Twitter/TwitterPublicador.cs Tue Jun 28 19:25:22 2011 -0300 @@ -2,44 +2,54 @@ using System.Configuration; using System.Linq; using AltNetHispano.Agendas.Domain; +using AltNetHispano.Agendas.Twitter.Writers; using Twitterizer; namespace AltNetHispano.Agendas.Twitter { public class TwitterPublicador : IPublicador { + private readonly IDictionary _writers; private readonly ITwitterAdapter _twitterAdapter; public TwitterPublicador() + : this(new TwitterAdapter()) { - _twitterAdapter = new TwitterAdapter(); } public TwitterPublicador(ITwitterAdapter twitterAdapter) { + _writers = new Dictionary + { + {Accion.Proponer, new ProponerTwitterWriter()}, + {Accion.Agendar, new AgendarTwitterWriter()}, + {Accion.Confirmar, new ConfirmarTwitterWriter()}, + {Accion.Publicar, new PublicarTwitterWriter()} + }; + _twitterAdapter = twitterAdapter; } - public const int LIMITE_MENSAJE = 140; + private const int LIMITE_MENSAJE = 140; - private string ConsumerKey + private static string ConsumerKey { get { return ConfigurationManager.AppSettings["consumerKeyAppTwitt"]; } } - private string ConsumerSecret + private static string ConsumerSecret { get { return ConfigurationManager.AppSettings["consumerSecretAppTwitt"]; } } - private string AccessToken + private static string AccessToken { get { return ConfigurationManager.AppSettings["accessTokenAppTwitt"]; } } - private string AccessTokenSecret + private static string AccessTokenSecret { get { return ConfigurationManager.AppSettings["accessTokenSecretAppTwitt"]; } } @@ -61,24 +71,13 @@ } } - private static string BuildTwitt(Track track) + private string BuildTwitt(Track track) { - string body = string.Empty; - switch (track.Accion) - { - case Accion.Proponer: - body = "Se ha propuesto un/a nuevo/a " + track.Evento.Tipo; - break; - case Accion.Agendar: - body = "Se ha agendando el evento" + track.Evento.Titulo; - if (track.Evento.Ponente.Twitter != null) - body += " con @" + track.Evento.Ponente.Twitter; - break; - case Accion.Confirmar: - if (track.Evento.Fecha.HasValue) - body = "Se confirma para el " + track.Evento.Fecha.Value.ToShortDateString() + " el evento " + track.Evento.Titulo; - break; - } + ITwitterWriter writer; + if (!_writers.TryGetValue(track.Accion, out writer)) + return string.Empty; + + string body = writer.Write(track); return body.Length > LIMITE_MENSAJE ? body.Substring(0, LIMITE_MENSAJE - 1) : body; } diff -r 683cc27450ce -r 17531db40d4e Agendas/trunk/src/Agendas.Twitter/Writers/AgendarTwitterWriter.cs --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Agendas/trunk/src/Agendas.Twitter/Writers/AgendarTwitterWriter.cs Tue Jun 28 19:25:22 2011 -0300 @@ -0,0 +1,15 @@ +using AltNetHispano.Agendas.Domain; + +namespace AltNetHispano.Agendas.Twitter.Writers +{ + public class AgendarTwitterWriter : ITwitterWriter + { + public string Write(Track track) + { + var body = "Se ha agendando el evento" + track.Evento.Titulo; + if (track.Evento.Ponente.Twitter != null) + body += " con @" + track.Evento.Ponente.Twitter; + return body; + } + } +} \ No newline at end of file diff -r 683cc27450ce -r 17531db40d4e Agendas/trunk/src/Agendas.Twitter/Writers/ConfirmarTwitterWriter.cs --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Agendas/trunk/src/Agendas.Twitter/Writers/ConfirmarTwitterWriter.cs Tue Jun 28 19:25:22 2011 -0300 @@ -0,0 +1,16 @@ +using AltNetHispano.Agendas.Domain; + +namespace AltNetHispano.Agendas.Twitter.Writers +{ + public class ConfirmarTwitterWriter : ITwitterWriter + { + public string Write(Track track) + { + { + if (track.Evento.Fecha.HasValue) + return "Se confirma para el " + track.Evento.Fecha.Value.ToShortDateString() + " el evento " + track.Evento.Titulo; + return string.Empty; + } + } + } +} \ No newline at end of file diff -r 683cc27450ce -r 17531db40d4e Agendas/trunk/src/Agendas.Twitter/Writers/ProponerTwitterWriter.cs --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Agendas/trunk/src/Agendas.Twitter/Writers/ProponerTwitterWriter.cs Tue Jun 28 19:25:22 2011 -0300 @@ -0,0 +1,13 @@ +using AltNetHispano.Agendas.Domain; + +namespace AltNetHispano.Agendas.Twitter.Writers +{ + public class ProponerTwitterWriter : ITwitterWriter + { + public string Write(Track track) + { + var sust = track.Evento.Tipo == TipoEvento.Van ? "una nueva: VAN" : "un nuevo " + track.Evento.Tipo; + return "Se ha propuesto " + sust; + } + } +} \ No newline at end of file diff -r 683cc27450ce -r 17531db40d4e Agendas/trunk/src/Agendas.Twitter/Writers/PublicarTwitterWriter.cs --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Agendas/trunk/src/Agendas.Twitter/Writers/PublicarTwitterWriter.cs Tue Jun 28 19:25:22 2011 -0300 @@ -0,0 +1,12 @@ +using AltNetHispano.Agendas.Domain; + +namespace AltNetHispano.Agendas.Twitter.Writers +{ + public class PublicarTwitterWriter : ITwitterWriter + { + public string Write(Track track) + { + return "Se ha publicado el video de " + track.Evento.Titulo; + } + } +} \ No newline at end of file