Mercurial > altnet-hispano
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 | 64 } |