Mercurial > altnet-hispano
annotate 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 |
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; |
108
786a90e26c9b
Los tests ya twittean con la cuenta de altnet-hispano-desa
Nelo@Kenia.neluz.int
parents:
87
diff
changeset
|
2 using System.Configuration; |
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; |
0
3f7dbb633b71
Test sobre la publicación de Eventos al registrarlos en la Agenda
nelopauselli
parents:
diff
changeset
|
4 using AltNetHispano.Agendas.Domain; |
108
786a90e26c9b
Los tests ya twittean con la cuenta de altnet-hispano-desa
Nelo@Kenia.neluz.int
parents:
87
diff
changeset
|
5 using Twitterizer; |
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 { |
111
90ce239cfa6d
Tests sobre el publicador de twitter, cada track se pulica solo una vez
Nelo@Kenia.neluz.int
parents:
110
diff
changeset
|
11 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
|
12 |
90ce239cfa6d
Tests sobre el publicador de twitter, cada track se pulica solo una vez
Nelo@Kenia.neluz.int
parents:
110
diff
changeset
|
13 public TwitterPublicador() |
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 _twitterAdapter = new TwitterAdapter(); |
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 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
|
19 { |
90ce239cfa6d
Tests sobre el publicador de twitter, cada track se pulica solo una vez
Nelo@Kenia.neluz.int
parents:
110
diff
changeset
|
20 _twitterAdapter = twitterAdapter; |
90ce239cfa6d
Tests sobre el publicador de twitter, cada track se pulica solo una vez
Nelo@Kenia.neluz.int
parents:
110
diff
changeset
|
21 } |
90ce239cfa6d
Tests sobre el publicador de twitter, cada track se pulica solo una vez
Nelo@Kenia.neluz.int
parents:
110
diff
changeset
|
22 |
110
a456eb519e23
Lanzando twitts desde el sitio con la cuenta de AltNetHispanoDESA
Nelo@Kenia.neluz.int
parents:
108
diff
changeset
|
23 public const int LIMITE_MENSAJE = 140; |
a456eb519e23
Lanzando twitts desde el sitio con la cuenta de AltNetHispanoDESA
Nelo@Kenia.neluz.int
parents:
108
diff
changeset
|
24 |
108
786a90e26c9b
Los tests ya twittean con la cuenta de altnet-hispano-desa
Nelo@Kenia.neluz.int
parents:
87
diff
changeset
|
25 private string ConsumerKey |
786a90e26c9b
Los tests ya twittean con la cuenta de altnet-hispano-desa
Nelo@Kenia.neluz.int
parents:
87
diff
changeset
|
26 { |
110
a456eb519e23
Lanzando twitts desde el sitio con la cuenta de AltNetHispanoDESA
Nelo@Kenia.neluz.int
parents:
108
diff
changeset
|
27 get { return ConfigurationManager.AppSettings["consumerKeyAppTwitt"]; } |
108
786a90e26c9b
Los tests ya twittean con la cuenta de altnet-hispano-desa
Nelo@Kenia.neluz.int
parents:
87
diff
changeset
|
28 } |
786a90e26c9b
Los tests ya twittean con la cuenta de altnet-hispano-desa
Nelo@Kenia.neluz.int
parents:
87
diff
changeset
|
29 |
786a90e26c9b
Los tests ya twittean con la cuenta de altnet-hispano-desa
Nelo@Kenia.neluz.int
parents:
87
diff
changeset
|
30 private string ConsumerSecret |
786a90e26c9b
Los tests ya twittean con la cuenta de altnet-hispano-desa
Nelo@Kenia.neluz.int
parents:
87
diff
changeset
|
31 { |
110
a456eb519e23
Lanzando twitts desde el sitio con la cuenta de AltNetHispanoDESA
Nelo@Kenia.neluz.int
parents:
108
diff
changeset
|
32 get { return ConfigurationManager.AppSettings["consumerSecretAppTwitt"]; } |
108
786a90e26c9b
Los tests ya twittean con la cuenta de altnet-hispano-desa
Nelo@Kenia.neluz.int
parents:
87
diff
changeset
|
33 } |
786a90e26c9b
Los tests ya twittean con la cuenta de altnet-hispano-desa
Nelo@Kenia.neluz.int
parents:
87
diff
changeset
|
34 |
786a90e26c9b
Los tests ya twittean con la cuenta de altnet-hispano-desa
Nelo@Kenia.neluz.int
parents:
87
diff
changeset
|
35 |
786a90e26c9b
Los tests ya twittean con la cuenta de altnet-hispano-desa
Nelo@Kenia.neluz.int
parents:
87
diff
changeset
|
36 private string AccessToken |
786a90e26c9b
Los tests ya twittean con la cuenta de altnet-hispano-desa
Nelo@Kenia.neluz.int
parents:
87
diff
changeset
|
37 { |
110
a456eb519e23
Lanzando twitts desde el sitio con la cuenta de AltNetHispanoDESA
Nelo@Kenia.neluz.int
parents:
108
diff
changeset
|
38 get { return ConfigurationManager.AppSettings["accessTokenAppTwitt"]; } |
108
786a90e26c9b
Los tests ya twittean con la cuenta de altnet-hispano-desa
Nelo@Kenia.neluz.int
parents:
87
diff
changeset
|
39 } |
786a90e26c9b
Los tests ya twittean con la cuenta de altnet-hispano-desa
Nelo@Kenia.neluz.int
parents:
87
diff
changeset
|
40 |
786a90e26c9b
Los tests ya twittean con la cuenta de altnet-hispano-desa
Nelo@Kenia.neluz.int
parents:
87
diff
changeset
|
41 |
786a90e26c9b
Los tests ya twittean con la cuenta de altnet-hispano-desa
Nelo@Kenia.neluz.int
parents:
87
diff
changeset
|
42 private string AccessTokenSecret |
786a90e26c9b
Los tests ya twittean con la cuenta de altnet-hispano-desa
Nelo@Kenia.neluz.int
parents:
87
diff
changeset
|
43 { |
110
a456eb519e23
Lanzando twitts desde el sitio con la cuenta de AltNetHispanoDESA
Nelo@Kenia.neluz.int
parents:
108
diff
changeset
|
44 get { return ConfigurationManager.AppSettings["accessTokenSecretAppTwitt"]; } |
108
786a90e26c9b
Los tests ya twittean con la cuenta de altnet-hispano-desa
Nelo@Kenia.neluz.int
parents:
87
diff
changeset
|
45 } |
786a90e26c9b
Los tests ya twittean con la cuenta de altnet-hispano-desa
Nelo@Kenia.neluz.int
parents:
87
diff
changeset
|
46 |
87
26d0513a8410
A los publicadores les llega la lista de tracks producidos en la acción realizada
nelopauselli
parents:
34
diff
changeset
|
47 public void Publicar(IEnumerable<Track> tracks) |
0
3f7dbb633b71
Test sobre la publicación de Eventos al registrarlos en la Agenda
nelopauselli
parents:
diff
changeset
|
48 { |
110
a456eb519e23
Lanzando twitts desde el sitio con la cuenta de AltNetHispanoDESA
Nelo@Kenia.neluz.int
parents:
108
diff
changeset
|
49 foreach (var track in tracks) |
a456eb519e23
Lanzando twitts desde el sitio con la cuenta de AltNetHispanoDESA
Nelo@Kenia.neluz.int
parents:
108
diff
changeset
|
50 { |
111
90ce239cfa6d
Tests sobre el publicador de twitter, cada track se pulica solo una vez
Nelo@Kenia.neluz.int
parents:
110
diff
changeset
|
51 //Si ya hicimos el twitt de este track, no volvemos a hacerlo |
90ce239cfa6d
Tests sobre el publicador de twitter, cada track se pulica solo una vez
Nelo@Kenia.neluz.int
parents:
110
diff
changeset
|
52 if (track.Logs.Any(l => l.Propietario == TrackLogPropietario.Twitter)) continue; |
90ce239cfa6d
Tests sobre el publicador de twitter, cada track se pulica solo una vez
Nelo@Kenia.neluz.int
parents:
110
diff
changeset
|
53 |
110
a456eb519e23
Lanzando twitts desde el sitio con la cuenta de AltNetHispanoDESA
Nelo@Kenia.neluz.int
parents:
108
diff
changeset
|
54 var twitt = BuildTwitt(track); |
a456eb519e23
Lanzando twitts desde el sitio con la cuenta de AltNetHispanoDESA
Nelo@Kenia.neluz.int
parents:
108
diff
changeset
|
55 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
|
56 { |
90ce239cfa6d
Tests sobre el publicador de twitter, cada track se pulica solo una vez
Nelo@Kenia.neluz.int
parents:
110
diff
changeset
|
57 string message; |
110
a456eb519e23
Lanzando twitts desde el sitio con la cuenta de AltNetHispanoDESA
Nelo@Kenia.neluz.int
parents:
108
diff
changeset
|
58 Publicar(twitt, out message); |
111
90ce239cfa6d
Tests sobre el publicador de twitter, cada track se pulica solo una vez
Nelo@Kenia.neluz.int
parents:
110
diff
changeset
|
59 track.LogAdd(new TrackLog(TrackLogPropietario.Twitter, message)); |
90ce239cfa6d
Tests sobre el publicador de twitter, cada track se pulica solo una vez
Nelo@Kenia.neluz.int
parents:
110
diff
changeset
|
60 } |
110
a456eb519e23
Lanzando twitts desde el sitio con la cuenta de AltNetHispanoDESA
Nelo@Kenia.neluz.int
parents:
108
diff
changeset
|
61 } |
0
3f7dbb633b71
Test sobre la publicación de Eventos al registrarlos en la Agenda
nelopauselli
parents:
diff
changeset
|
62 } |
108
786a90e26c9b
Los tests ya twittean con la cuenta de altnet-hispano-desa
Nelo@Kenia.neluz.int
parents:
87
diff
changeset
|
63 |
110
a456eb519e23
Lanzando twitts desde el sitio con la cuenta de AltNetHispanoDESA
Nelo@Kenia.neluz.int
parents:
108
diff
changeset
|
64 private static string BuildTwitt(Track track) |
a456eb519e23
Lanzando twitts desde el sitio con la cuenta de AltNetHispanoDESA
Nelo@Kenia.neluz.int
parents:
108
diff
changeset
|
65 { |
a456eb519e23
Lanzando twitts desde el sitio con la cuenta de AltNetHispanoDESA
Nelo@Kenia.neluz.int
parents:
108
diff
changeset
|
66 string body = string.Empty; |
a456eb519e23
Lanzando twitts desde el sitio con la cuenta de AltNetHispanoDESA
Nelo@Kenia.neluz.int
parents:
108
diff
changeset
|
67 switch (track.Accion) |
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 case Accion.Proponer: |
a456eb519e23
Lanzando twitts desde el sitio con la cuenta de AltNetHispanoDESA
Nelo@Kenia.neluz.int
parents:
108
diff
changeset
|
70 body = "Se ha propuesto un/a nuevo/a " + track.Evento.Tipo; |
a456eb519e23
Lanzando twitts desde el sitio con la cuenta de AltNetHispanoDESA
Nelo@Kenia.neluz.int
parents:
108
diff
changeset
|
71 break; |
a456eb519e23
Lanzando twitts desde el sitio con la cuenta de AltNetHispanoDESA
Nelo@Kenia.neluz.int
parents:
108
diff
changeset
|
72 case Accion.Agendar: |
a456eb519e23
Lanzando twitts desde el sitio con la cuenta de AltNetHispanoDESA
Nelo@Kenia.neluz.int
parents:
108
diff
changeset
|
73 body = "Se ha agendando el evento" + track.Evento.Titulo; |
a456eb519e23
Lanzando twitts desde el sitio con la cuenta de AltNetHispanoDESA
Nelo@Kenia.neluz.int
parents:
108
diff
changeset
|
74 if (track.Evento.Ponente.Twitter != null) |
a456eb519e23
Lanzando twitts desde el sitio con la cuenta de AltNetHispanoDESA
Nelo@Kenia.neluz.int
parents:
108
diff
changeset
|
75 body += " con @" + track.Evento.Ponente.Twitter; |
a456eb519e23
Lanzando twitts desde el sitio con la cuenta de AltNetHispanoDESA
Nelo@Kenia.neluz.int
parents:
108
diff
changeset
|
76 break; |
a456eb519e23
Lanzando twitts desde el sitio con la cuenta de AltNetHispanoDESA
Nelo@Kenia.neluz.int
parents:
108
diff
changeset
|
77 case Accion.Confirmar: |
a456eb519e23
Lanzando twitts desde el sitio con la cuenta de AltNetHispanoDESA
Nelo@Kenia.neluz.int
parents:
108
diff
changeset
|
78 if (track.Evento.Fecha.HasValue) |
a456eb519e23
Lanzando twitts desde el sitio con la cuenta de AltNetHispanoDESA
Nelo@Kenia.neluz.int
parents:
108
diff
changeset
|
79 body = "Se confirma para el " + track.Evento.Fecha.Value.ToShortDateString() + " el evento " + track.Evento.Titulo; |
a456eb519e23
Lanzando twitts desde el sitio con la cuenta de AltNetHispanoDESA
Nelo@Kenia.neluz.int
parents:
108
diff
changeset
|
80 break; |
a456eb519e23
Lanzando twitts desde el sitio con la cuenta de AltNetHispanoDESA
Nelo@Kenia.neluz.int
parents:
108
diff
changeset
|
81 } |
a456eb519e23
Lanzando twitts desde el sitio con la cuenta de AltNetHispanoDESA
Nelo@Kenia.neluz.int
parents:
108
diff
changeset
|
82 |
a456eb519e23
Lanzando twitts desde el sitio con la cuenta de AltNetHispanoDESA
Nelo@Kenia.neluz.int
parents:
108
diff
changeset
|
83 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
|
84 } |
a456eb519e23
Lanzando twitts desde el sitio con la cuenta de AltNetHispanoDESA
Nelo@Kenia.neluz.int
parents:
108
diff
changeset
|
85 |
a456eb519e23
Lanzando twitts desde el sitio con la cuenta de AltNetHispanoDESA
Nelo@Kenia.neluz.int
parents:
108
diff
changeset
|
86 public bool Publicar(string status, out string message) |
108
786a90e26c9b
Los tests ya twittean con la cuenta de altnet-hispano-desa
Nelo@Kenia.neluz.int
parents:
87
diff
changeset
|
87 { |
786a90e26c9b
Los tests ya twittean con la cuenta de altnet-hispano-desa
Nelo@Kenia.neluz.int
parents:
87
diff
changeset
|
88 var tokens = new OAuthTokens |
110
a456eb519e23
Lanzando twitts desde el sitio con la cuenta de AltNetHispanoDESA
Nelo@Kenia.neluz.int
parents:
108
diff
changeset
|
89 { |
a456eb519e23
Lanzando twitts desde el sitio con la cuenta de AltNetHispanoDESA
Nelo@Kenia.neluz.int
parents:
108
diff
changeset
|
90 ConsumerKey = ConsumerKey, |
a456eb519e23
Lanzando twitts desde el sitio con la cuenta de AltNetHispanoDESA
Nelo@Kenia.neluz.int
parents:
108
diff
changeset
|
91 ConsumerSecret = ConsumerSecret, |
a456eb519e23
Lanzando twitts desde el sitio con la cuenta de AltNetHispanoDESA
Nelo@Kenia.neluz.int
parents:
108
diff
changeset
|
92 AccessToken = AccessToken, |
a456eb519e23
Lanzando twitts desde el sitio con la cuenta de AltNetHispanoDESA
Nelo@Kenia.neluz.int
parents:
108
diff
changeset
|
93 AccessTokenSecret = AccessTokenSecret |
a456eb519e23
Lanzando twitts desde el sitio con la cuenta de AltNetHispanoDESA
Nelo@Kenia.neluz.int
parents:
108
diff
changeset
|
94 }; |
108
786a90e26c9b
Los tests ya twittean con la cuenta de altnet-hispano-desa
Nelo@Kenia.neluz.int
parents:
87
diff
changeset
|
95 |
111
90ce239cfa6d
Tests sobre el publicador de twitter, cada track se pulica solo una vez
Nelo@Kenia.neluz.int
parents:
110
diff
changeset
|
96 var response = _twitterAdapter.UpdateStatus(tokens, status); |
108
786a90e26c9b
Los tests ya twittean con la cuenta de altnet-hispano-desa
Nelo@Kenia.neluz.int
parents:
87
diff
changeset
|
97 |
786a90e26c9b
Los tests ya twittean con la cuenta de altnet-hispano-desa
Nelo@Kenia.neluz.int
parents:
87
diff
changeset
|
98 message = response.ErrorMessage; |
786a90e26c9b
Los tests ya twittean con la cuenta de altnet-hispano-desa
Nelo@Kenia.neluz.int
parents:
87
diff
changeset
|
99 return response.Result == RequestResult.Success; |
786a90e26c9b
Los tests ya twittean con la cuenta de altnet-hispano-desa
Nelo@Kenia.neluz.int
parents:
87
diff
changeset
|
100 } |
0
3f7dbb633b71
Test sobre la publicación de Eventos al registrarlos en la Agenda
nelopauselli
parents:
diff
changeset
|
101 } |
3 | 102 } |