annotate Agendas/trunk/src/Agendas.Twitter/TwitterPublicador.cs @ 112:0bca45e1e664

Pantalla de Perfil donde se puede asociar la cuenta de twitter al usuario existente
author Nelo@Kenia.neluz.int
date Sat, 11 Jun 2011 01:20:59 -0300
parents 90ce239cfa6d
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
5f007e266509 code cleanup
nelopauselli
parents: 1
diff changeset
102 }