diff Agendas/trunk/src/Agendas.Twitter/TwitterPublicador.cs @ 111:90ce239cfa6d

Tests sobre el publicador de twitter, cada track se pulica solo una vez
author Nelo@Kenia.neluz.int
date Wed, 08 Jun 2011 08:40:04 -0300
parents a456eb519e23
children c3573defd18f
line wrap: on
line diff
--- a/Agendas/trunk/src/Agendas.Twitter/TwitterPublicador.cs	Wed Jun 08 07:33:14 2011 -0300
+++ b/Agendas/trunk/src/Agendas.Twitter/TwitterPublicador.cs	Wed Jun 08 08:40:04 2011 -0300
@@ -1,5 +1,6 @@
 using System.Collections.Generic;
 using System.Configuration;
+using System.Linq;
 using AltNetHispano.Agendas.Domain;
 using Twitterizer;
 
@@ -7,6 +8,18 @@
 {
 	public class TwitterPublicador : IPublicador
 	{
+		private readonly ITwitterAdapter _twitterAdapter;
+
+		public TwitterPublicador()
+		{
+			_twitterAdapter = new TwitterAdapter();
+		}
+
+		public TwitterPublicador(ITwitterAdapter twitterAdapter)
+		{
+			_twitterAdapter = twitterAdapter;
+		}
+
 		public const int LIMITE_MENSAJE = 140;
 
 		private string ConsumerKey
@@ -35,10 +48,16 @@
 		{
 			foreach (var track in tracks)
 			{
-				string message;
+				//Si ya hicimos el twitt de este track, no volvemos a hacerlo
+				if (track.Logs.Any(l => l.Propietario == TrackLogPropietario.Twitter)) continue;
+
 				var twitt = BuildTwitt(track);
 				if (!string.IsNullOrWhiteSpace(twitt))
+				{
+					string message;
 					Publicar(twitt, out message);
+					track.LogAdd(new TrackLog(TrackLogPropietario.Twitter, message));
+				}
 			}
 		}
 
@@ -74,7 +93,7 @@
 								AccessTokenSecret = AccessTokenSecret
 							};
 
-			var response = TwitterStatus.Update(tokens, status);
+			var response = _twitterAdapter.UpdateStatus(tokens, status);
 
 			message = response.ErrorMessage;
 			return response.Result == RequestResult.Success;