# 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