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