annotate Agendas/trunk/src/Agendas.Twitter/TwitterPublicador.cs @ 182:beeb48ddb44a

Warning con los errores que se guarden en el log del track de un evento durante una notificación (twitter, calendar, blog)
author nelopauselli
date Mon, 08 Aug 2011 21:57:10 -0300
parents 734d3f0853bf
children 9f61e8555114
rev   line source
182
beeb48ddb44a Warning con los errores que se guarden en el log del track de un evento durante una notificación (twitter, calendar, blog)
nelopauselli
parents: 158
diff changeset
1 using System;
beeb48ddb44a Warning con los errores que se guarden en el log del track de un evento durante una notificación (twitter, calendar, blog)
nelopauselli
parents: 158
diff changeset
2 using System.Collections.Generic;
111
90ce239cfa6d Tests sobre el publicador de twitter, cada track se pulica solo una vez
Nelo@Kenia.neluz.int
parents: 110
diff changeset
3 using System.Linq;
158
734d3f0853bf Manejando configuración de los publicadores con una sección propia en los .config
nelopauselli
parents: 122
diff changeset
4 using AltNetHispano.Agendas.Configurations;
0
3f7dbb633b71 Test sobre la publicación de Eventos al registrarlos en la Agenda
nelopauselli
parents:
diff changeset
5 using AltNetHispano.Agendas.Domain;
122
17531db40d4e Refactoring de la generación de mensajes en twitter
nelopauselli
parents: 120
diff changeset
6 using AltNetHispano.Agendas.Twitter.Writers;
0
3f7dbb633b71 Test sobre la publicación de Eventos al registrarlos en la Agenda
nelopauselli
parents:
diff changeset
7
34
475be11edf56 Ajuste en los nombre de los assemblies y namespaces
nelo@MTEySS.neluz.int
parents: 3
diff changeset
8 namespace AltNetHispano.Agendas.Twitter
0
3f7dbb633b71 Test sobre la publicación de Eventos al registrarlos en la Agenda
nelopauselli
parents:
diff changeset
9 {
87
26d0513a8410 A los publicadores les llega la lista de tracks producidos en la acción realizada
nelopauselli
parents: 34
diff changeset
10 public class TwitterPublicador : IPublicador
0
3f7dbb633b71 Test sobre la publicación de Eventos al registrarlos en la Agenda
nelopauselli
parents:
diff changeset
11 {
122
17531db40d4e Refactoring de la generación de mensajes en twitter
nelopauselli
parents: 120
diff changeset
12 private readonly IDictionary<Accion, ITwitterWriter> _writers;
111
90ce239cfa6d Tests sobre el publicador de twitter, cada track se pulica solo una vez
Nelo@Kenia.neluz.int
parents: 110
diff changeset
13 private readonly ITwitterAdapter _twitterAdapter;
90ce239cfa6d Tests sobre el publicador de twitter, cada track se pulica solo una vez
Nelo@Kenia.neluz.int
parents: 110
diff changeset
14
90ce239cfa6d Tests sobre el publicador de twitter, cada track se pulica solo una vez
Nelo@Kenia.neluz.int
parents: 110
diff changeset
15 public TwitterPublicador()
122
17531db40d4e Refactoring de la generación de mensajes en twitter
nelopauselli
parents: 120
diff changeset
16 : this(new TwitterAdapter())
111
90ce239cfa6d Tests sobre el publicador de twitter, cada track se pulica solo una vez
Nelo@Kenia.neluz.int
parents: 110
diff changeset
17 {
90ce239cfa6d Tests sobre el publicador de twitter, cada track se pulica solo una vez
Nelo@Kenia.neluz.int
parents: 110
diff changeset
18 }
90ce239cfa6d Tests sobre el publicador de twitter, cada track se pulica solo una vez
Nelo@Kenia.neluz.int
parents: 110
diff changeset
19
90ce239cfa6d Tests sobre el publicador de twitter, cada track se pulica solo una vez
Nelo@Kenia.neluz.int
parents: 110
diff changeset
20 public TwitterPublicador(ITwitterAdapter twitterAdapter)
90ce239cfa6d Tests sobre el publicador de twitter, cada track se pulica solo una vez
Nelo@Kenia.neluz.int
parents: 110
diff changeset
21 {
122
17531db40d4e Refactoring de la generación de mensajes en twitter
nelopauselli
parents: 120
diff changeset
22 _writers = new Dictionary<Accion, ITwitterWriter>
17531db40d4e Refactoring de la generación de mensajes en twitter
nelopauselli
parents: 120
diff changeset
23 {
17531db40d4e Refactoring de la generación de mensajes en twitter
nelopauselli
parents: 120
diff changeset
24 {Accion.Proponer, new ProponerTwitterWriter()},
17531db40d4e Refactoring de la generación de mensajes en twitter
nelopauselli
parents: 120
diff changeset
25 {Accion.Agendar, new AgendarTwitterWriter()},
17531db40d4e Refactoring de la generación de mensajes en twitter
nelopauselli
parents: 120
diff changeset
26 {Accion.Confirmar, new ConfirmarTwitterWriter()},
17531db40d4e Refactoring de la generación de mensajes en twitter
nelopauselli
parents: 120
diff changeset
27 {Accion.Publicar, new PublicarTwitterWriter()}
17531db40d4e Refactoring de la generación de mensajes en twitter
nelopauselli
parents: 120
diff changeset
28 };
17531db40d4e Refactoring de la generación de mensajes en twitter
nelopauselli
parents: 120
diff changeset
29
111
90ce239cfa6d Tests sobre el publicador de twitter, cada track se pulica solo una vez
Nelo@Kenia.neluz.int
parents: 110
diff changeset
30 _twitterAdapter = twitterAdapter;
90ce239cfa6d Tests sobre el publicador de twitter, cada track se pulica solo una vez
Nelo@Kenia.neluz.int
parents: 110
diff changeset
31 }
90ce239cfa6d Tests sobre el publicador de twitter, cada track se pulica solo una vez
Nelo@Kenia.neluz.int
parents: 110
diff changeset
32
122
17531db40d4e Refactoring de la generación de mensajes en twitter
nelopauselli
parents: 120
diff changeset
33 private const int LIMITE_MENSAJE = 140;
110
a456eb519e23 Lanzando twitts desde el sitio con la cuenta de AltNetHispanoDESA
Nelo@Kenia.neluz.int
parents: 108
diff changeset
34
87
26d0513a8410 A los publicadores les llega la lista de tracks producidos en la acción realizada
nelopauselli
parents: 34
diff changeset
35 public void Publicar(IEnumerable<Track> tracks)
0
3f7dbb633b71 Test sobre la publicación de Eventos al registrarlos en la Agenda
nelopauselli
parents:
diff changeset
36 {
158
734d3f0853bf Manejando configuración de los publicadores con una sección propia en los .config
nelopauselli
parents: 122
diff changeset
37 if (!AgendasConfigurationManager.Publicadores.Twitter.Enabled) return;
734d3f0853bf Manejando configuración de los publicadores con una sección propia en los .config
nelopauselli
parents: 122
diff changeset
38
110
a456eb519e23 Lanzando twitts desde el sitio con la cuenta de AltNetHispanoDESA
Nelo@Kenia.neluz.int
parents: 108
diff changeset
39 foreach (var track in tracks)
a456eb519e23 Lanzando twitts desde el sitio con la cuenta de AltNetHispanoDESA
Nelo@Kenia.neluz.int
parents: 108
diff changeset
40 {
111
90ce239cfa6d Tests sobre el publicador de twitter, cada track se pulica solo una vez
Nelo@Kenia.neluz.int
parents: 110
diff changeset
41 //Si ya hicimos el twitt de este track, no volvemos a hacerlo
120
c3573defd18f Agregado de Fecha, Usuario y Successful en TrackLog
Jorge@Jorge-PC
parents: 111
diff changeset
42 if (track.Logs.Any(l => l.Propietario == TrackLogPropietario.Twitter && l.Successful)) continue;
111
90ce239cfa6d Tests sobre el publicador de twitter, cada track se pulica solo una vez
Nelo@Kenia.neluz.int
parents: 110
diff changeset
43
110
a456eb519e23 Lanzando twitts desde el sitio con la cuenta de AltNetHispanoDESA
Nelo@Kenia.neluz.int
parents: 108
diff changeset
44 var twitt = BuildTwitt(track);
a456eb519e23 Lanzando twitts desde el sitio con la cuenta de AltNetHispanoDESA
Nelo@Kenia.neluz.int
parents: 108
diff changeset
45 if (!string.IsNullOrWhiteSpace(twitt))
111
90ce239cfa6d Tests sobre el publicador de twitter, cada track se pulica solo una vez
Nelo@Kenia.neluz.int
parents: 110
diff changeset
46 {
182
beeb48ddb44a Warning con los errores que se guarden en el log del track de un evento durante una notificación (twitter, calendar, blog)
nelopauselli
parents: 158
diff changeset
47 try
beeb48ddb44a Warning con los errores que se guarden en el log del track de un evento durante una notificación (twitter, calendar, blog)
nelopauselli
parents: 158
diff changeset
48 {
beeb48ddb44a Warning con los errores que se guarden en el log del track de un evento durante una notificación (twitter, calendar, blog)
nelopauselli
parents: 158
diff changeset
49 string message;
beeb48ddb44a Warning con los errores que se guarden en el log del track de un evento durante una notificación (twitter, calendar, blog)
nelopauselli
parents: 158
diff changeset
50 bool success = _twitterAdapter.Update(twitt, out message);
beeb48ddb44a Warning con los errores que se guarden en el log del track de un evento durante una notificación (twitter, calendar, blog)
nelopauselli
parents: 158
diff changeset
51 track.LogAdd(new TrackLog(TrackLogPropietario.Twitter, message, track.Usuario, success));
beeb48ddb44a Warning con los errores que se guarden en el log del track de un evento durante una notificación (twitter, calendar, blog)
nelopauselli
parents: 158
diff changeset
52 }
beeb48ddb44a Warning con los errores que se guarden en el log del track de un evento durante una notificación (twitter, calendar, blog)
nelopauselli
parents: 158
diff changeset
53 catch(Exception ex)
beeb48ddb44a Warning con los errores que se guarden en el log del track de un evento durante una notificación (twitter, calendar, blog)
nelopauselli
parents: 158
diff changeset
54 {
beeb48ddb44a Warning con los errores que se guarden en el log del track de un evento durante una notificación (twitter, calendar, blog)
nelopauselli
parents: 158
diff changeset
55 track.LogAdd(new TrackLog(TrackLogPropietario.Twitter, track.Usuario, ex));
beeb48ddb44a Warning con los errores que se guarden en el log del track de un evento durante una notificación (twitter, calendar, blog)
nelopauselli
parents: 158
diff changeset
56 }
111
90ce239cfa6d Tests sobre el publicador de twitter, cada track se pulica solo una vez
Nelo@Kenia.neluz.int
parents: 110
diff changeset
57 }
110
a456eb519e23 Lanzando twitts desde el sitio con la cuenta de AltNetHispanoDESA
Nelo@Kenia.neluz.int
parents: 108
diff changeset
58 }
0
3f7dbb633b71 Test sobre la publicación de Eventos al registrarlos en la Agenda
nelopauselli
parents:
diff changeset
59 }
108
786a90e26c9b Los tests ya twittean con la cuenta de altnet-hispano-desa
Nelo@Kenia.neluz.int
parents: 87
diff changeset
60
122
17531db40d4e Refactoring de la generación de mensajes en twitter
nelopauselli
parents: 120
diff changeset
61 private string BuildTwitt(Track track)
110
a456eb519e23 Lanzando twitts desde el sitio con la cuenta de AltNetHispanoDESA
Nelo@Kenia.neluz.int
parents: 108
diff changeset
62 {
122
17531db40d4e Refactoring de la generación de mensajes en twitter
nelopauselli
parents: 120
diff changeset
63 ITwitterWriter writer;
17531db40d4e Refactoring de la generación de mensajes en twitter
nelopauselli
parents: 120
diff changeset
64 if (!_writers.TryGetValue(track.Accion, out writer))
17531db40d4e Refactoring de la generación de mensajes en twitter
nelopauselli
parents: 120
diff changeset
65 return string.Empty;
17531db40d4e Refactoring de la generación de mensajes en twitter
nelopauselli
parents: 120
diff changeset
66
17531db40d4e Refactoring de la generación de mensajes en twitter
nelopauselli
parents: 120
diff changeset
67 string body = writer.Write(track);
110
a456eb519e23 Lanzando twitts desde el sitio con la cuenta de AltNetHispanoDESA
Nelo@Kenia.neluz.int
parents: 108
diff changeset
68
a456eb519e23 Lanzando twitts desde el sitio con la cuenta de AltNetHispanoDESA
Nelo@Kenia.neluz.int
parents: 108
diff changeset
69 return body.Length > LIMITE_MENSAJE ? body.Substring(0, LIMITE_MENSAJE - 1) : body;
a456eb519e23 Lanzando twitts desde el sitio con la cuenta de AltNetHispanoDESA
Nelo@Kenia.neluz.int
parents: 108
diff changeset
70 }
0
3f7dbb633b71 Test sobre la publicación de Eventos al registrarlos en la Agenda
nelopauselli
parents:
diff changeset
71 }
3
5f007e266509 code cleanup
nelopauselli
parents: 1
diff changeset
72 }