Mercurial > altnet-hispano
changeset 122:17531db40d4e
Refactoring de la generación de mensajes en twitter
author | nelopauselli |
---|---|
date | Tue, 28 Jun 2011 19:25:22 -0300 |
parents | 683cc27450ce |
children | f8568f01da4d |
files | Agendas/trunk/src/Agendas.Twitter/Agendas.Twitter.csproj Agendas/trunk/src/Agendas.Twitter/ITwitterWriter.cs Agendas/trunk/src/Agendas.Twitter/TwitterPublicador.cs Agendas/trunk/src/Agendas.Twitter/Writers/AgendarTwitterWriter.cs Agendas/trunk/src/Agendas.Twitter/Writers/ConfirmarTwitterWriter.cs Agendas/trunk/src/Agendas.Twitter/Writers/ProponerTwitterWriter.cs Agendas/trunk/src/Agendas.Twitter/Writers/PublicarTwitterWriter.cs |
diffstat | 7 files changed, 92 insertions(+), 23 deletions(-) [+] |
line wrap: on
line diff
--- 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 @@ </ItemGroup> <ItemGroup> <Compile Include="ITwitterAdapter.cs" /> + <Compile Include="ITwitterWriter.cs" /> <Compile Include="OAuthTwitter.cs" /> <Compile Include="TwitterPublicador.cs" /> <Compile Include="Properties\AssemblyInfo.cs" /> + <Compile Include="Writers\AgendarTwitterWriter.cs" /> + <Compile Include="Writers\ConfirmarTwitterWriter.cs" /> + <Compile Include="Writers\ProponerTwitterWriter.cs" /> + <Compile Include="Writers\PublicarTwitterWriter.cs" /> </ItemGroup> <ItemGroup> <ProjectReference Include="..\Agendas.Domain\Agendas.Domain.csproj">
--- /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
--- 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<Accion, ITwitterWriter> _writers; private readonly ITwitterAdapter _twitterAdapter; public TwitterPublicador() + : this(new TwitterAdapter()) { - _twitterAdapter = new TwitterAdapter(); } public TwitterPublicador(ITwitterAdapter twitterAdapter) { + _writers = new Dictionary<Accion, ITwitterWriter> + { + {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; }
--- /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
--- /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
--- /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
--- /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