Mercurial > altnet-hispano
annotate Agendas/trunk/src/Agendas.Twitter/oAuth.cs @ 94:db4b1e2cae49
Cambio del nombre de la clase Ponente a Persona
Se agrega la clase Cuenta para identificar cada una de las cuentas con que se puede autenticar una persona
Alta Automatica de cuentas de twitter creando la persona
author | Nelo@Kenia.neluz.int |
---|---|
date | Sat, 04 Jun 2011 12:11:17 -0300 |
parents | d1688622fa88 |
children |
rev | line source |
---|---|
90
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
1 using System; |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
2 using System.Security.Cryptography; |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
3 using System.Collections.Generic; |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
4 using System.Text; |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
5 using System.Web; |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
6 |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
7 namespace AltNetHispano.Agendas.Twitter |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
8 { |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
9 public class OAuthBase |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
10 { |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
11 |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
12 /// <summary> |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
13 /// Provides a predefined set of algorithms that are supported officially by the protocol |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
14 /// </summary> |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
15 public enum SignatureTypes |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
16 { |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
17 HMACSHA1, |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
18 PLAINTEXT, |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
19 RSASHA1 |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
20 } |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
21 |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
22 /// <summary> |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
23 /// Provides an internal structure to sort the query parameter |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
24 /// </summary> |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
25 protected class QueryParameter |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
26 { |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
27 private string name = null; |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
28 private string value = null; |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
29 |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
30 public QueryParameter(string name, string value) |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
31 { |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
32 this.name = name; |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
33 this.value = value; |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
34 } |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
35 |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
36 public string Name |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
37 { |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
38 get { return name; } |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
39 } |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
40 |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
41 public string Value |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
42 { |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
43 get { return value; } |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
44 } |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
45 } |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
46 |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
47 /// <summary> |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
48 /// Comparer class used to perform the sorting of the query parameters |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
49 /// </summary> |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
50 protected class QueryParameterComparer : IComparer<QueryParameter> |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
51 { |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
52 |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
53 #region IComparer<QueryParameter> Members |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
54 |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
55 public int Compare(QueryParameter x, QueryParameter y) |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
56 { |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
57 if (x.Name == y.Name) |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
58 { |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
59 return string.Compare(x.Value, y.Value); |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
60 } |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
61 else |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
62 { |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
63 return string.Compare(x.Name, y.Name); |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
64 } |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
65 } |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
66 |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
67 #endregion |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
68 } |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
69 |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
70 protected const string OAuthVersion = "1.0"; |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
71 protected const string OAuthParameterPrefix = "oauth_"; |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
72 |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
73 // |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
74 // List of know and used oauth parameters' names |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
75 // |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
76 protected const string OAuthConsumerKeyKey = "oauth_consumer_key"; |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
77 protected const string OAuthCallbackKey = "oauth_callback"; |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
78 protected const string OAuthVersionKey = "oauth_version"; |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
79 protected const string OAuthSignatureMethodKey = "oauth_signature_method"; |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
80 protected const string OAuthSignatureKey = "oauth_signature"; |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
81 protected const string OAuthTimestampKey = "oauth_timestamp"; |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
82 protected const string OAuthNonceKey = "oauth_nonce"; |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
83 protected const string OAuthTokenKey = "oauth_token"; |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
84 protected const string OAuthTokenSecretKey = "oauth_token_secret"; |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
85 protected const string OAuthVerifierKey = "oauth_verifier"; |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
86 |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
87 protected const string HMACSHA1SignatureType = "HMAC-SHA1"; |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
88 protected const string PlainTextSignatureType = "PLAINTEXT"; |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
89 protected const string RSASHA1SignatureType = "RSA-SHA1"; |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
90 |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
91 protected Random random = new Random(); |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
92 |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
93 protected string unreservedChars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789-_.~"; |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
94 |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
95 /// <summary> |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
96 /// Helper function to compute a hash value |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
97 /// </summary> |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
98 /// <param name="hashAlgorithm">The hashing algoirhtm used. If that algorithm needs some initialization, like HMAC and its derivatives, they should be initialized prior to passing it to this function</param> |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
99 /// <param name="data">The data to hash</param> |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
100 /// <returns>a Base64 string of the hash value</returns> |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
101 private string ComputeHash(HashAlgorithm hashAlgorithm, string data) |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
102 { |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
103 if (hashAlgorithm == null) |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
104 { |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
105 throw new ArgumentNullException("hashAlgorithm"); |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
106 } |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
107 |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
108 if (string.IsNullOrEmpty(data)) |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
109 { |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
110 throw new ArgumentNullException("data"); |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
111 } |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
112 |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
113 byte[] dataBuffer = System.Text.Encoding.ASCII.GetBytes(data); |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
114 byte[] hashBytes = hashAlgorithm.ComputeHash(dataBuffer); |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
115 |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
116 return Convert.ToBase64String(hashBytes); |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
117 } |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
118 |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
119 /// <summary> |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
120 /// Internal function to cut out all non oauth query string parameters (all parameters not begining with "oauth_") |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
121 /// </summary> |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
122 /// <param name="parameters">The query string part of the Url</param> |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
123 /// <returns>A list of QueryParameter each containing the parameter name and value</returns> |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
124 private List<QueryParameter> GetQueryParameters(string parameters) |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
125 { |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
126 if (parameters.StartsWith("?")) |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
127 { |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
128 parameters = parameters.Remove(0, 1); |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
129 } |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
130 |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
131 List<QueryParameter> result = new List<QueryParameter>(); |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
132 |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
133 if (!string.IsNullOrEmpty(parameters)) |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
134 { |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
135 string[] p = parameters.Split('&'); |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
136 foreach (string s in p) |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
137 { |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
138 if (!string.IsNullOrEmpty(s) && !s.StartsWith(OAuthParameterPrefix)) |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
139 { |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
140 if (s.IndexOf('=') > -1) |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
141 { |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
142 string[] temp = s.Split('='); |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
143 result.Add(new QueryParameter(temp[0], temp[1])); |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
144 } |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
145 else |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
146 { |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
147 result.Add(new QueryParameter(s, string.Empty)); |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
148 } |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
149 } |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
150 } |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
151 } |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
152 |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
153 return result; |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
154 } |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
155 |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
156 /// <summary> |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
157 /// This is a different Url Encode implementation since the default .NET one outputs the percent encoding in lower case. |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
158 /// While this is not a problem with the percent encoding spec, it is used in upper case throughout OAuth |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
159 /// </summary> |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
160 /// <param name="value">The value to Url encode</param> |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
161 /// <returns>Returns a Url encoded string</returns> |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
162 public string UrlEncode(string value) |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
163 { |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
164 StringBuilder result = new StringBuilder(); |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
165 |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
166 foreach (char symbol in value) |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
167 { |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
168 if (unreservedChars.IndexOf(symbol) != -1) |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
169 { |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
170 result.Append(symbol); |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
171 } |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
172 else |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
173 { |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
174 result.Append('%' + String.Format("{0:X2}", (int)symbol)); |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
175 } |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
176 } |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
177 |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
178 return result.ToString(); |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
179 } |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
180 |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
181 /// <summary> |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
182 /// Normalizes the request parameters according to the spec |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
183 /// </summary> |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
184 /// <param name="parameters">The list of parameters already sorted</param> |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
185 /// <returns>a string representing the normalized parameters</returns> |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
186 protected string NormalizeRequestParameters(IList<QueryParameter> parameters) |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
187 { |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
188 StringBuilder sb = new StringBuilder(); |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
189 QueryParameter p = null; |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
190 for (int i = 0; i < parameters.Count; i++) |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
191 { |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
192 p = parameters[i]; |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
193 sb.AppendFormat("{0}={1}", p.Name, p.Value); |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
194 |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
195 if (i < parameters.Count - 1) |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
196 { |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
197 sb.Append("&"); |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
198 } |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
199 } |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
200 |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
201 return sb.ToString(); |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
202 } |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
203 |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
204 /// <summary> |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
205 /// Generate the signature base that is used to produce the signature |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
206 /// </summary> |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
207 /// <param name="url">The full url that needs to be signed including its non OAuth url parameters</param> |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
208 /// <param name="consumerKey">The consumer key</param> |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
209 /// <param name="token">The token, if available. If not available pass null or an empty string</param> |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
210 /// <param name="tokenSecret">The token secret, if available. If not available pass null or an empty string</param> |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
211 /// <param name="callBackUrl">The callback URL (for OAuth 1.0a).If your client cannot accept callbacks, the value MUST be 'oob' </param> |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
212 /// <param name="oauthVerifier">This value MUST be included when exchanging Request Tokens for Access Tokens. Otherwise pass a null or an empty string</param> |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
213 /// <param name="httpMethod">The http method used. Must be a valid HTTP method verb (POST,GET,PUT, etc)</param> |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
214 /// <param name="signatureType">The signature type. To use the default values use <see cref="OAuthBase.SignatureTypes">OAuthBase.SignatureTypes</see>.</param> |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
215 /// <returns>The signature base</returns> |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
216 public string GenerateSignatureBase(Uri url, string consumerKey, string token, string tokenSecret, string callBackUrl, string oauthVerifier, string httpMethod, string timeStamp, string nonce, string signatureType, out string normalizedUrl, out string normalizedRequestParameters) |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
217 { |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
218 if (token == null) |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
219 { |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
220 token = string.Empty; |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
221 } |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
222 |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
223 if (tokenSecret == null) |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
224 { |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
225 tokenSecret = string.Empty; |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
226 } |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
227 |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
228 if (string.IsNullOrEmpty(consumerKey)) |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
229 { |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
230 throw new ArgumentNullException("consumerKey"); |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
231 } |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
232 |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
233 if (string.IsNullOrEmpty(httpMethod)) |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
234 { |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
235 throw new ArgumentNullException("httpMethod"); |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
236 } |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
237 |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
238 if (string.IsNullOrEmpty(signatureType)) |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
239 { |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
240 throw new ArgumentNullException("signatureType"); |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
241 } |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
242 |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
243 normalizedUrl = null; |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
244 normalizedRequestParameters = null; |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
245 |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
246 List<QueryParameter> parameters = GetQueryParameters(url.Query); |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
247 parameters.Add(new QueryParameter(OAuthVersionKey, OAuthVersion)); |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
248 parameters.Add(new QueryParameter(OAuthNonceKey, nonce)); |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
249 parameters.Add(new QueryParameter(OAuthTimestampKey, timeStamp)); |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
250 parameters.Add(new QueryParameter(OAuthSignatureMethodKey, signatureType)); |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
251 parameters.Add(new QueryParameter(OAuthConsumerKeyKey, consumerKey)); |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
252 |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
253 if (!string.IsNullOrEmpty(callBackUrl)) |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
254 { |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
255 parameters.Add(new QueryParameter(OAuthCallbackKey, UrlEncode(callBackUrl))); |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
256 } |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
257 |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
258 |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
259 if (!string.IsNullOrEmpty(oauthVerifier)) |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
260 { |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
261 parameters.Add(new QueryParameter(OAuthVerifierKey, oauthVerifier)); |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
262 } |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
263 |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
264 if (!string.IsNullOrEmpty(token)) |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
265 { |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
266 parameters.Add(new QueryParameter(OAuthTokenKey, token)); |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
267 } |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
268 |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
269 parameters.Sort(new QueryParameterComparer()); |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
270 |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
271 normalizedUrl = string.Format("{0}://{1}", url.Scheme, url.Host); |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
272 if (!((url.Scheme == "http" && url.Port == 80) || (url.Scheme == "https" && url.Port == 443))) |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
273 { |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
274 normalizedUrl += ":" + url.Port; |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
275 } |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
276 normalizedUrl += url.AbsolutePath; |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
277 normalizedRequestParameters = NormalizeRequestParameters(parameters); |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
278 |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
279 StringBuilder signatureBase = new StringBuilder(); |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
280 signatureBase.AppendFormat("{0}&", httpMethod.ToUpper()); |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
281 signatureBase.AppendFormat("{0}&", UrlEncode(normalizedUrl)); |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
282 signatureBase.AppendFormat("{0}", UrlEncode(normalizedRequestParameters)); |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
283 |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
284 return signatureBase.ToString(); |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
285 } |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
286 |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
287 /// <summary> |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
288 /// Generate the signature value based on the given signature base and hash algorithm |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
289 /// </summary> |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
290 /// <param name="signatureBase">The signature based as produced by the GenerateSignatureBase method or by any other means</param> |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
291 /// <param name="hash">The hash algorithm used to perform the hashing. If the hashing algorithm requires initialization or a key it should be set prior to calling this method</param> |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
292 /// <returns>A base64 string of the hash value</returns> |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
293 public string GenerateSignatureUsingHash(string signatureBase, HashAlgorithm hash) |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
294 { |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
295 return ComputeHash(hash, signatureBase); |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
296 } |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
297 |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
298 /// <summary> |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
299 /// Generates a signature using the HMAC-SHA1 algorithm |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
300 /// </summary> |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
301 /// <param name="url">The full url that needs to be signed including its non OAuth url parameters</param> |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
302 /// <param name="consumerKey">The consumer key</param> |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
303 /// <param name="consumerSecret">The consumer seceret</param> |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
304 /// <param name="token">The token, if available. If not available pass null or an empty string</param> |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
305 /// <param name="tokenSecret">The token secret, if available. If not available pass null or an empty string</param> |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
306 /// <param name="callBackUrl">The callback URL (for OAuth 1.0a).If your client cannot accept callbacks, the value MUST be 'oob' </param> |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
307 /// <param name="oauthVerifier">This value MUST be included when exchanging Request Tokens for Access Tokens. Otherwise pass a null or an empty string</param> |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
308 /// <param name="httpMethod">The http method used. Must be a valid HTTP method verb (POST,GET,PUT, etc)</param> |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
309 /// <returns>A base64 string of the hash value</returns> |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
310 public string GenerateSignature(Uri url, string consumerKey, string consumerSecret, string token, string tokenSecret, string callBackUrl, string oauthVerifier, string httpMethod, string timeStamp, string nonce, out string normalizedUrl, out string normalizedRequestParameters) |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
311 { |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
312 return GenerateSignature(url, consumerKey, consumerSecret, token, tokenSecret, callBackUrl, oauthVerifier, httpMethod, timeStamp, nonce, SignatureTypes.HMACSHA1, out normalizedUrl, out normalizedRequestParameters); |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
313 } |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
314 |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
315 /// <summary> |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
316 /// Generates a signature using the specified signatureType |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
317 /// </summary> |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
318 /// <param name="url">The full url that needs to be signed including its non OAuth url parameters</param> |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
319 /// <param name="consumerKey">The consumer key</param> |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
320 /// <param name="consumerSecret">The consumer seceret</param> |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
321 /// <param name="token">The token, if available. If not available pass null or an empty string</param> |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
322 /// <param name="tokenSecret">The token secret, if available. If not available pass null or an empty string</param> |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
323 /// <param name="callBackUrl">The callback URL (for OAuth 1.0a).If your client cannot accept callbacks, the value MUST be 'oob' </param> |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
324 /// <param name="oauthVerifier">This value MUST be included when exchanging Request Tokens for Access Tokens. Otherwise pass a null or an empty string</param> |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
325 /// <param name="httpMethod">The http method used. Must be a valid HTTP method verb (POST,GET,PUT, etc)</param> |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
326 /// <param name="signatureType">The type of signature to use</param> |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
327 /// <returns>A base64 string of the hash value</returns> |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
328 public string GenerateSignature(Uri url, string consumerKey, string consumerSecret, string token, string tokenSecret, string callBackUrl, string oauthVerifier, string httpMethod, string timeStamp, string nonce, SignatureTypes signatureType, out string normalizedUrl, out string normalizedRequestParameters) |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
329 { |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
330 normalizedUrl = null; |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
331 normalizedRequestParameters = null; |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
332 |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
333 switch (signatureType) |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
334 { |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
335 case SignatureTypes.PLAINTEXT: |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
336 return HttpUtility.UrlEncode(string.Format("{0}&{1}", consumerSecret, tokenSecret)); |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
337 case SignatureTypes.HMACSHA1: |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
338 string signatureBase = GenerateSignatureBase(url, consumerKey, token, tokenSecret, callBackUrl, oauthVerifier, httpMethod, timeStamp, nonce, HMACSHA1SignatureType, out normalizedUrl, out normalizedRequestParameters); |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
339 |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
340 HMACSHA1 hmacsha1 = new HMACSHA1(); |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
341 hmacsha1.Key = Encoding.ASCII.GetBytes(string.Format("{0}&{1}", UrlEncode(consumerSecret), string.IsNullOrEmpty(tokenSecret) ? "" : UrlEncode(tokenSecret))); |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
342 |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
343 return GenerateSignatureUsingHash(signatureBase, hmacsha1); |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
344 case SignatureTypes.RSASHA1: |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
345 throw new NotImplementedException(); |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
346 default: |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
347 throw new ArgumentException("Unknown signature type", "signatureType"); |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
348 } |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
349 } |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
350 |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
351 /// <summary> |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
352 /// Generate the timestamp for the signature |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
353 /// </summary> |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
354 /// <returns></returns> |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
355 public virtual string GenerateTimeStamp() |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
356 { |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
357 // Default implementation of UNIX time of the current UTC time |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
358 TimeSpan ts = DateTime.UtcNow - new DateTime(1970, 1, 1, 0, 0, 0, 0); |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
359 return Convert.ToInt64(ts.TotalSeconds).ToString(); |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
360 } |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
361 |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
362 /// <summary> |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
363 /// Generate a nonce |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
364 /// </summary> |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
365 /// <returns></returns> |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
366 public virtual string GenerateNonce() |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
367 { |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
368 // Just a simple implementation of a random number between 123400 and 9999999 |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
369 return random.Next(123400, 9999999).ToString(); |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
370 } |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
371 |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
372 } |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
373 } |