annotate Agendas/trunk/src/Agendas.Twitter/TwitterPublicador.cs @ 158:734d3f0853bf

Manejando configuración de los publicadores con una sección propia en los .config Agregando la opción de habilitar / deshabilitar un publicador
author nelopauselli
date Fri, 05 Aug 2011 16:55:18 -0300
parents 17531db40d4e
children beeb48ddb44a
rev   line source
110
a456eb519e23 Lanzando twitts desde el sitio con la cuenta de AltNetHispanoDESA
Nelo@Kenia.neluz.int
parents: 108
diff changeset
1 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
2 using System.Linq;
158
734d3f0853bf Manejando configuración de los publicadores con una sección propia en los .config
nelopauselli
parents: 122
diff changeset
3 using AltNetHispano.Agendas.Configurations;
0
3f7dbb633b71 Test sobre la publicación de Eventos al registrarlos en la Agenda
nelopauselli
parents:
diff changeset
4 using AltNetHispano.Agendas.Domain;
122
17531db40d4e Refactoring de la generación de mensajes en twitter
nelopauselli
parents: 120
diff changeset
5 using AltNetHispano.Agendas.Twitter.Writers;
0
3f7dbb633b71 Test sobre la publicación de Eventos al registrarlos en la Agenda
nelopauselli
parents:
diff changeset
6
34
475be11edf56 Ajuste en los nombre de los assemblies y namespaces
nelo@MTEySS.neluz.int
parents: 3
diff changeset
7 namespace AltNetHispano.Agendas.Twitter
0
3f7dbb633b71 Test sobre la publicación de Eventos al registrarlos en la Agenda
nelopauselli
parents:
diff changeset
8 {
87
26d0513a8410 A los publicadores les llega la lista de tracks producidos en la acción realizada
nelopauselli
parents: 34
diff changeset
9 public class TwitterPublicador : IPublicador
0
3f7dbb633b71 Test sobre la publicación de Eventos al registrarlos en la Agenda
nelopauselli
parents:
diff changeset
10 {
122
17531db40d4e Refactoring de la generación de mensajes en twitter
nelopauselli
parents: 120
diff changeset
11 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
12 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
13
90ce239cfa6d Tests sobre el publicador de twitter, cada track se pulica solo una vez
Nelo@Kenia.neluz.int
parents: 110
diff changeset
14 public TwitterPublicador()
122
17531db40d4e Refactoring de la generación de mensajes en twitter
nelopauselli
parents: 120
diff changeset
15 : 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
16 {
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 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
20 {
122
17531db40d4e Refactoring de la generación de mensajes en twitter
nelopauselli
parents: 120
diff changeset
21 _writers = new Dictionary<Accion, ITwitterWriter>
17531db40d4e Refactoring de la generación de mensajes en twitter
nelopauselli
parents: 120
diff changeset
22 {
17531db40d4e Refactoring de la generación de mensajes en twitter
nelopauselli
parents: 120
diff changeset
23 {Accion.Proponer, new ProponerTwitterWriter()},
17531db40d4e Refactoring de la generación de mensajes en twitter
nelopauselli
parents: 120
diff changeset
24 {Accion.Agendar, new AgendarTwitterWriter()},
17531db40d4e Refactoring de la generación de mensajes en twitter
nelopauselli
parents: 120
diff changeset
25 {Accion.Confirmar, new ConfirmarTwitterWriter()},
17531db40d4e Refactoring de la generación de mensajes en twitter
nelopauselli
parents: 120
diff changeset
26 {Accion.Publicar, new PublicarTwitterWriter()}
17531db40d4e Refactoring de la generación de mensajes en twitter
nelopauselli
parents: 120
diff changeset
27 };
17531db40d4e Refactoring de la generación de mensajes en twitter
nelopauselli
parents: 120
diff changeset
28
111
90ce239cfa6d Tests sobre el publicador de twitter, cada track se pulica solo una vez
Nelo@Kenia.neluz.int
parents: 110
diff changeset
29 _twitterAdapter = twitterAdapter;
90ce239cfa6d Tests sobre el publicador de twitter, cada track se pulica solo una vez
Nelo@Kenia.neluz.int
parents: 110
diff changeset
30 }
90ce239cfa6d Tests sobre el publicador de twitter, cada track se pulica solo una vez
Nelo@Kenia.neluz.int
parents: 110
diff changeset
31
122
17531db40d4e Refactoring de la generación de mensajes en twitter
nelopauselli
parents: 120
diff changeset
32 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
33
87
26d0513a8410 A los publicadores les llega la lista de tracks producidos en la acción realizada
nelopauselli
parents: 34
diff changeset
34 public void Publicar(IEnumerable<Track> tracks)
0
3f7dbb633b71 Test sobre la publicación de Eventos al registrarlos en la Agenda
nelopauselli
parents:
diff changeset
35 {
158
734d3f0853bf Manejando configuración de los publicadores con una sección propia en los .config
nelopauselli
parents: 122
diff changeset
36 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
37
110
a456eb519e23 Lanzando twitts desde el sitio con la cuenta de AltNetHispanoDESA
Nelo@Kenia.neluz.int
parents: 108
diff changeset
38 foreach (var track in tracks)
a456eb519e23 Lanzando twitts desde el sitio con la cuenta de AltNetHispanoDESA
Nelo@Kenia.neluz.int
parents: 108
diff changeset
39 {
111
90ce239cfa6d Tests sobre el publicador de twitter, cada track se pulica solo una vez
Nelo@Kenia.neluz.int
parents: 110
diff changeset
40 //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
41 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
42
110
a456eb519e23 Lanzando twitts desde el sitio con la cuenta de AltNetHispanoDESA
Nelo@Kenia.neluz.int
parents: 108
diff changeset
43 var twitt = BuildTwitt(track);
a456eb519e23 Lanzando twitts desde el sitio con la cuenta de AltNetHispanoDESA
Nelo@Kenia.neluz.int
parents: 108
diff changeset
44 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
45 {
90ce239cfa6d Tests sobre el publicador de twitter, cada track se pulica solo una vez
Nelo@Kenia.neluz.int
parents: 110
diff changeset
46 string message;
158
734d3f0853bf Manejando configuración de los publicadores con una sección propia en los .config
nelopauselli
parents: 122
diff changeset
47 bool success = _twitterAdapter.Update(twitt, out message);
120
c3573defd18f Agregado de Fecha, Usuario y Successful en TrackLog
Jorge@Jorge-PC
parents: 111
diff changeset
48 track.LogAdd(new TrackLog(TrackLogPropietario.Twitter, message, track.Usuario, success));
111
90ce239cfa6d Tests sobre el publicador de twitter, cada track se pulica solo una vez
Nelo@Kenia.neluz.int
parents: 110
diff changeset
49 }
110
a456eb519e23 Lanzando twitts desde el sitio con la cuenta de AltNetHispanoDESA
Nelo@Kenia.neluz.int
parents: 108
diff changeset
50 }
0
3f7dbb633b71 Test sobre la publicación de Eventos al registrarlos en la Agenda
nelopauselli
parents:
diff changeset
51 }
108
786a90e26c9b Los tests ya twittean con la cuenta de altnet-hispano-desa
Nelo@Kenia.neluz.int
parents: 87
diff changeset
52
122
17531db40d4e Refactoring de la generación de mensajes en twitter
nelopauselli
parents: 120
diff changeset
53 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
54 {
122
17531db40d4e Refactoring de la generación de mensajes en twitter
nelopauselli
parents: 120
diff changeset
55 ITwitterWriter writer;
17531db40d4e Refactoring de la generación de mensajes en twitter
nelopauselli
parents: 120
diff changeset
56 if (!_writers.TryGetValue(track.Accion, out writer))
17531db40d4e Refactoring de la generación de mensajes en twitter
nelopauselli
parents: 120
diff changeset
57 return string.Empty;
17531db40d4e Refactoring de la generación de mensajes en twitter
nelopauselli
parents: 120
diff changeset
58
17531db40d4e Refactoring de la generación de mensajes en twitter
nelopauselli
parents: 120
diff changeset
59 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
60
a456eb519e23 Lanzando twitts desde el sitio con la cuenta de AltNetHispanoDESA
Nelo@Kenia.neluz.int
parents: 108
diff changeset
61 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
62 }
0
3f7dbb633b71 Test sobre la publicación de Eventos al registrarlos en la Agenda
nelopauselli
parents:
diff changeset
63 }
3
5f007e266509 code cleanup
nelopauselli
parents: 1
diff changeset
64 }