Esempio n. 1
0
        private void TweetStatus(ESBMessage message)
        {
            try
            {
                string status   = message.ToString();
                var    postBody = "status=" + Uri.EscapeDataString(status);
                RaiseAdapterInfo(ErrorLevel.Info, status);

                using (HMACSHA1 hasher = new HMACSHA1(ASCIIEncoding.ASCII.GetBytes(string.Format("{0}&{1}", Uri.EscapeDataString(APISecret), Uri.EscapeDataString(AccessTokenSecret)))))
                {
                    string   _oauthNonce     = Convert.ToBase64String(new ASCIIEncoding().GetBytes(DateTime.Now.Ticks.ToString()));
                    TimeSpan _timeSpan       = DateTime.UtcNow - new DateTime(1970, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc);
                    string   _oauthTimestamp = Convert.ToInt64(_timeSpan.TotalSeconds).ToString();

                    string baseString = string.Format("oauth_consumer_key={0}&oauth_nonce={1}&oauth_signature_method={2}&oauth_timestamp={3}&oauth_token={4}&oauth_version={5}&status={6}",
                                                      APIKey, _oauthNonce, _OAuthSignatureMethod, _oauthTimestamp, AccessToken, _OAuthVersion, Uri.EscapeDataString(status));

                    string _oauthsignature = Convert.ToBase64String(hasher.ComputeHash(ASCIIEncoding.ASCII.GetBytes(string.Concat("POST&", Uri.EscapeDataString(RequestURI), "&", Uri.EscapeDataString(baseString)))));

                    string _authenticationHeader = string.Format("OAuth oauth_consumer_key=\"{0}\", oauth_nonce=\"{1}\", oauth_signature=\"{2}\", oauth_signature_method=\"{3}\", oauth_timestamp=\"{4}\", oauth_token=\"{5}\", oauth_version=\"{6}\"",
                                                                 Uri.EscapeDataString(APIKey), Uri.EscapeDataString(_oauthNonce), Uri.EscapeDataString(_oauthsignature), Uri.EscapeDataString(_OAuthSignatureMethod), Uri.EscapeDataString(_oauthTimestamp), Uri.EscapeDataString(AccessToken), Uri.EscapeDataString(_OAuthVersion));

                    ServicePointManager.Expect100Continue = false;
                    HttpWebRequest request = (HttpWebRequest)WebRequest.Create(RequestURI);
                    request.Headers.Add("Authorization", _authenticationHeader);
                    request.Method      = "POST";
                    request.ContentType = "application/x-www-form-urlencoded";
                    using (Stream stream = request.GetRequestStream())
                    {
                        byte[] content = ASCIIEncoding.ASCII.GetBytes(postBody);
                        stream.Write(content, 0, content.Length);
                        WebResponse response = request.GetResponse();
                        using (StreamReader reader = new StreamReader(response.GetResponseStream()))
                        {
                            string result = reader.ReadToEnd();
                        }
                        response.Close();
                    }
                }
            }
            catch (WebException ex)
            {
                WebResponse response = ex.Response;
                using (StreamReader reader = new StreamReader(response.GetResponseStream()))
                {
                    string result = reader.ReadToEnd();
                }
                response.Close();
                RaiseAdapterError(ErrorLevel.Error, "Tweet Status Failed", ex);
            }
            catch (Exception ex)
            {
                RaiseAdapterError(ErrorLevel.Error, "Unknown Error", ex);
            }
            finally
            {
            }
        }