annotate Agendas/trunk/src/Agendas.Twitter/ITwitterAdapter.cs @ 265:5ddc574deeea

Remplazamos la clase PersonaValidation por TwitterAttribute
author juanjose.montesdeocaarbos
date Tue, 25 Oct 2011 07:23:15 -0300
parents 734d3f0853bf
children
rev   line source
111
90ce239cfa6d Tests sobre el publicador de twitter, cada track se pulica solo una vez
Nelo@Kenia.neluz.int
parents:
diff changeset
1 using System;
158
734d3f0853bf Manejando configuración de los publicadores con una sección propia en los .config
nelopauselli
parents: 112
diff changeset
2 using AltNetHispano.Agendas.Configurations;
111
90ce239cfa6d Tests sobre el publicador de twitter, cada track se pulica solo una vez
Nelo@Kenia.neluz.int
parents:
diff changeset
3 using Twitterizer;
90ce239cfa6d Tests sobre el publicador de twitter, cada track se pulica solo una vez
Nelo@Kenia.neluz.int
parents:
diff changeset
4
90ce239cfa6d Tests sobre el publicador de twitter, cada track se pulica solo una vez
Nelo@Kenia.neluz.int
parents:
diff changeset
5 namespace AltNetHispano.Agendas.Twitter
90ce239cfa6d Tests sobre el publicador de twitter, cada track se pulica solo una vez
Nelo@Kenia.neluz.int
parents:
diff changeset
6 {
90ce239cfa6d Tests sobre el publicador de twitter, cada track se pulica solo una vez
Nelo@Kenia.neluz.int
parents:
diff changeset
7 public interface ITwitterAdapter
90ce239cfa6d Tests sobre el publicador de twitter, cada track se pulica solo una vez
Nelo@Kenia.neluz.int
parents:
diff changeset
8 {
90ce239cfa6d Tests sobre el publicador de twitter, cada track se pulica solo una vez
Nelo@Kenia.neluz.int
parents:
diff changeset
9 Uri BuildAuthorizationUri(string consumerKey, string consumerSecret, string callbackAddress);
90ce239cfa6d Tests sobre el publicador de twitter, cada track se pulica solo una vez
Nelo@Kenia.neluz.int
parents:
diff changeset
10 string GetAccessToken(string consumerKey, string consumerSecret, string requestToken, string verifier);
158
734d3f0853bf Manejando configuración de los publicadores con una sección propia en los .config
nelopauselli
parents: 112
diff changeset
11 bool Update(string status, out string message);
111
90ce239cfa6d Tests sobre el publicador de twitter, cada track se pulica solo una vez
Nelo@Kenia.neluz.int
parents:
diff changeset
12 }
90ce239cfa6d Tests sobre el publicador de twitter, cada track se pulica solo una vez
Nelo@Kenia.neluz.int
parents:
diff changeset
13
90ce239cfa6d Tests sobre el publicador de twitter, cada track se pulica solo una vez
Nelo@Kenia.neluz.int
parents:
diff changeset
14 public class TwitterAdapter : ITwitterAdapter
90ce239cfa6d Tests sobre el publicador de twitter, cada track se pulica solo una vez
Nelo@Kenia.neluz.int
parents:
diff changeset
15 {
158
734d3f0853bf Manejando configuración de los publicadores con una sección propia en los .config
nelopauselli
parents: 112
diff changeset
16 private static TwitterConfigurationElement _config;
734d3f0853bf Manejando configuración de los publicadores con una sección propia en los .config
nelopauselli
parents: 112
diff changeset
17
734d3f0853bf Manejando configuración de los publicadores con una sección propia en los .config
nelopauselli
parents: 112
diff changeset
18 public TwitterAdapter()
734d3f0853bf Manejando configuración de los publicadores con una sección propia en los .config
nelopauselli
parents: 112
diff changeset
19 {
734d3f0853bf Manejando configuración de los publicadores con una sección propia en los .config
nelopauselli
parents: 112
diff changeset
20 _config = AgendasConfigurationManager.Publicadores.Twitter;
734d3f0853bf Manejando configuración de los publicadores con una sección propia en los .config
nelopauselli
parents: 112
diff changeset
21 }
734d3f0853bf Manejando configuración de los publicadores con una sección propia en los .config
nelopauselli
parents: 112
diff changeset
22
734d3f0853bf Manejando configuración de los publicadores con una sección propia en los .config
nelopauselli
parents: 112
diff changeset
23 private static string ConsumerKey
734d3f0853bf Manejando configuración de los publicadores con una sección propia en los .config
nelopauselli
parents: 112
diff changeset
24 {
734d3f0853bf Manejando configuración de los publicadores con una sección propia en los .config
nelopauselli
parents: 112
diff changeset
25 get { return _config.SendTwitter.ConsumerKey; }
734d3f0853bf Manejando configuración de los publicadores con una sección propia en los .config
nelopauselli
parents: 112
diff changeset
26 }
734d3f0853bf Manejando configuración de los publicadores con una sección propia en los .config
nelopauselli
parents: 112
diff changeset
27
734d3f0853bf Manejando configuración de los publicadores con una sección propia en los .config
nelopauselli
parents: 112
diff changeset
28 private static string ConsumerSecret
734d3f0853bf Manejando configuración de los publicadores con una sección propia en los .config
nelopauselli
parents: 112
diff changeset
29 {
734d3f0853bf Manejando configuración de los publicadores con una sección propia en los .config
nelopauselli
parents: 112
diff changeset
30 get { return _config.SendTwitter.ConsumerSecret; }
734d3f0853bf Manejando configuración de los publicadores con una sección propia en los .config
nelopauselli
parents: 112
diff changeset
31 }
734d3f0853bf Manejando configuración de los publicadores con una sección propia en los .config
nelopauselli
parents: 112
diff changeset
32
734d3f0853bf Manejando configuración de los publicadores con una sección propia en los .config
nelopauselli
parents: 112
diff changeset
33
734d3f0853bf Manejando configuración de los publicadores con una sección propia en los .config
nelopauselli
parents: 112
diff changeset
34 private static string AccessToken
734d3f0853bf Manejando configuración de los publicadores con una sección propia en los .config
nelopauselli
parents: 112
diff changeset
35 {
734d3f0853bf Manejando configuración de los publicadores con una sección propia en los .config
nelopauselli
parents: 112
diff changeset
36 get { return _config.SendTwitter.AccessToken; }
734d3f0853bf Manejando configuración de los publicadores con una sección propia en los .config
nelopauselli
parents: 112
diff changeset
37 }
734d3f0853bf Manejando configuración de los publicadores con una sección propia en los .config
nelopauselli
parents: 112
diff changeset
38
734d3f0853bf Manejando configuración de los publicadores con una sección propia en los .config
nelopauselli
parents: 112
diff changeset
39
734d3f0853bf Manejando configuración de los publicadores con una sección propia en los .config
nelopauselli
parents: 112
diff changeset
40 private static string AccessTokenSecret
734d3f0853bf Manejando configuración de los publicadores con una sección propia en los .config
nelopauselli
parents: 112
diff changeset
41 {
734d3f0853bf Manejando configuración de los publicadores con una sección propia en los .config
nelopauselli
parents: 112
diff changeset
42 get { return _config.SendTwitter.AccessTokenSecret; }
734d3f0853bf Manejando configuración de los publicadores con una sección propia en los .config
nelopauselli
parents: 112
diff changeset
43 }
734d3f0853bf Manejando configuración de los publicadores con una sección propia en los .config
nelopauselli
parents: 112
diff changeset
44
111
90ce239cfa6d Tests sobre el publicador de twitter, cada track se pulica solo una vez
Nelo@Kenia.neluz.int
parents:
diff changeset
45 public Uri BuildAuthorizationUri(string consumerKey, string consumerSecret, string callbackAddress)
90ce239cfa6d Tests sobre el publicador de twitter, cada track se pulica solo una vez
Nelo@Kenia.neluz.int
parents:
diff changeset
46 {
90ce239cfa6d Tests sobre el publicador de twitter, cada track se pulica solo una vez
Nelo@Kenia.neluz.int
parents:
diff changeset
47 // Obtain a request token
90ce239cfa6d Tests sobre el publicador de twitter, cada track se pulica solo una vez
Nelo@Kenia.neluz.int
parents:
diff changeset
48 OAuthTokenResponse requestToken = OAuthUtility.GetRequestToken(consumerKey, consumerSecret, callbackAddress);
90ce239cfa6d Tests sobre el publicador de twitter, cada track se pulica solo una vez
Nelo@Kenia.neluz.int
parents:
diff changeset
49
90ce239cfa6d Tests sobre el publicador de twitter, cada track se pulica solo una vez
Nelo@Kenia.neluz.int
parents:
diff changeset
50 // Direct or instruct the user to the following address:
90ce239cfa6d Tests sobre el publicador de twitter, cada track se pulica solo una vez
Nelo@Kenia.neluz.int
parents:
diff changeset
51 Uri authorizationUri = OAuthUtility.BuildAuthorizationUri(requestToken.Token);
90ce239cfa6d Tests sobre el publicador de twitter, cada track se pulica solo una vez
Nelo@Kenia.neluz.int
parents:
diff changeset
52
90ce239cfa6d Tests sobre el publicador de twitter, cada track se pulica solo una vez
Nelo@Kenia.neluz.int
parents:
diff changeset
53 return authorizationUri;
90ce239cfa6d Tests sobre el publicador de twitter, cada track se pulica solo una vez
Nelo@Kenia.neluz.int
parents:
diff changeset
54 }
90ce239cfa6d Tests sobre el publicador de twitter, cada track se pulica solo una vez
Nelo@Kenia.neluz.int
parents:
diff changeset
55
90ce239cfa6d Tests sobre el publicador de twitter, cada track se pulica solo una vez
Nelo@Kenia.neluz.int
parents:
diff changeset
56 public string GetAccessToken(string consumerKey, string consumerSecret, string requestToken, string verifier)
90ce239cfa6d Tests sobre el publicador de twitter, cada track se pulica solo una vez
Nelo@Kenia.neluz.int
parents:
diff changeset
57 {
90ce239cfa6d Tests sobre el publicador de twitter, cada track se pulica solo una vez
Nelo@Kenia.neluz.int
parents:
diff changeset
58 OAuthTokenResponse accessToken = OAuthUtility.GetAccessToken(consumerKey, consumerSecret, requestToken, verifier);
90ce239cfa6d Tests sobre el publicador de twitter, cada track se pulica solo una vez
Nelo@Kenia.neluz.int
parents:
diff changeset
59
90ce239cfa6d Tests sobre el publicador de twitter, cada track se pulica solo una vez
Nelo@Kenia.neluz.int
parents:
diff changeset
60 if (accessToken != null)
90ce239cfa6d Tests sobre el publicador de twitter, cada track se pulica solo una vez
Nelo@Kenia.neluz.int
parents:
diff changeset
61 {
90ce239cfa6d Tests sobre el publicador de twitter, cada track se pulica solo una vez
Nelo@Kenia.neluz.int
parents:
diff changeset
62 var tokens = new OAuthTokens
90ce239cfa6d Tests sobre el publicador de twitter, cada track se pulica solo una vez
Nelo@Kenia.neluz.int
parents:
diff changeset
63 {
90ce239cfa6d Tests sobre el publicador de twitter, cada track se pulica solo una vez
Nelo@Kenia.neluz.int
parents:
diff changeset
64 AccessToken = accessToken.Token,
90ce239cfa6d Tests sobre el publicador de twitter, cada track se pulica solo una vez
Nelo@Kenia.neluz.int
parents:
diff changeset
65 AccessTokenSecret = accessToken.TokenSecret,
90ce239cfa6d Tests sobre el publicador de twitter, cada track se pulica solo una vez
Nelo@Kenia.neluz.int
parents:
diff changeset
66 ConsumerKey = consumerKey,
90ce239cfa6d Tests sobre el publicador de twitter, cada track se pulica solo una vez
Nelo@Kenia.neluz.int
parents:
diff changeset
67 ConsumerSecret = consumerSecret
90ce239cfa6d Tests sobre el publicador de twitter, cada track se pulica solo una vez
Nelo@Kenia.neluz.int
parents:
diff changeset
68 };
90ce239cfa6d Tests sobre el publicador de twitter, cada track se pulica solo una vez
Nelo@Kenia.neluz.int
parents:
diff changeset
69
90ce239cfa6d Tests sobre el publicador de twitter, cada track se pulica solo una vez
Nelo@Kenia.neluz.int
parents:
diff changeset
70 TwitterResponse<TwitterUser> showUserResponse = TwitterUser.Show(tokens, accessToken.UserId);
90ce239cfa6d Tests sobre el publicador de twitter, cada track se pulica solo una vez
Nelo@Kenia.neluz.int
parents:
diff changeset
71 if (showUserResponse.Result == RequestResult.Success)
90ce239cfa6d Tests sobre el publicador de twitter, cada track se pulica solo una vez
Nelo@Kenia.neluz.int
parents:
diff changeset
72 return showUserResponse.Content;
90ce239cfa6d Tests sobre el publicador de twitter, cada track se pulica solo una vez
Nelo@Kenia.neluz.int
parents:
diff changeset
73 return showUserResponse.ErrorMessage;
90ce239cfa6d Tests sobre el publicador de twitter, cada track se pulica solo una vez
Nelo@Kenia.neluz.int
parents:
diff changeset
74 }
112
0bca45e1e664 Pantalla de Perfil donde se puede asociar la cuenta de twitter al usuario existente
Nelo@Kenia.neluz.int
parents: 111
diff changeset
75
111
90ce239cfa6d Tests sobre el publicador de twitter, cada track se pulica solo una vez
Nelo@Kenia.neluz.int
parents:
diff changeset
76 return string.Empty;
90ce239cfa6d Tests sobre el publicador de twitter, cada track se pulica solo una vez
Nelo@Kenia.neluz.int
parents:
diff changeset
77
90ce239cfa6d Tests sobre el publicador de twitter, cada track se pulica solo una vez
Nelo@Kenia.neluz.int
parents:
diff changeset
78 }
90ce239cfa6d Tests sobre el publicador de twitter, cada track se pulica solo una vez
Nelo@Kenia.neluz.int
parents:
diff changeset
79
158
734d3f0853bf Manejando configuración de los publicadores con una sección propia en los .config
nelopauselli
parents: 112
diff changeset
80 public bool Update(string status, out string message)
111
90ce239cfa6d Tests sobre el publicador de twitter, cada track se pulica solo una vez
Nelo@Kenia.neluz.int
parents:
diff changeset
81 {
158
734d3f0853bf Manejando configuración de los publicadores con una sección propia en los .config
nelopauselli
parents: 112
diff changeset
82 var tokens = new OAuthTokens
734d3f0853bf Manejando configuración de los publicadores con una sección propia en los .config
nelopauselli
parents: 112
diff changeset
83 {
734d3f0853bf Manejando configuración de los publicadores con una sección propia en los .config
nelopauselli
parents: 112
diff changeset
84 ConsumerKey = ConsumerKey,
734d3f0853bf Manejando configuración de los publicadores con una sección propia en los .config
nelopauselli
parents: 112
diff changeset
85 ConsumerSecret = ConsumerSecret,
734d3f0853bf Manejando configuración de los publicadores con una sección propia en los .config
nelopauselli
parents: 112
diff changeset
86 AccessToken = AccessToken,
734d3f0853bf Manejando configuración de los publicadores con una sección propia en los .config
nelopauselli
parents: 112
diff changeset
87 AccessTokenSecret = AccessTokenSecret
734d3f0853bf Manejando configuración de los publicadores con una sección propia en los .config
nelopauselli
parents: 112
diff changeset
88 };
734d3f0853bf Manejando configuración de los publicadores con una sección propia en los .config
nelopauselli
parents: 112
diff changeset
89
734d3f0853bf Manejando configuración de los publicadores con una sección propia en los .config
nelopauselli
parents: 112
diff changeset
90 var response = TwitterStatus.Update(tokens, status);
734d3f0853bf Manejando configuración de los publicadores con una sección propia en los .config
nelopauselli
parents: 112
diff changeset
91
734d3f0853bf Manejando configuración de los publicadores con una sección propia en los .config
nelopauselli
parents: 112
diff changeset
92 message = response.ErrorMessage;
734d3f0853bf Manejando configuración de los publicadores con una sección propia en los .config
nelopauselli
parents: 112
diff changeset
93 return response.Result == RequestResult.Success;
734d3f0853bf Manejando configuración de los publicadores con una sección propia en los .config
nelopauselli
parents: 112
diff changeset
94
111
90ce239cfa6d Tests sobre el publicador de twitter, cada track se pulica solo una vez
Nelo@Kenia.neluz.int
parents:
diff changeset
95 }
90ce239cfa6d Tests sobre el publicador de twitter, cada track se pulica solo una vez
Nelo@Kenia.neluz.int
parents:
diff changeset
96 }
90ce239cfa6d Tests sobre el publicador de twitter, cada track se pulica solo una vez
Nelo@Kenia.neluz.int
parents:
diff changeset
97 }