public NegotiationToken GetToken()
        {
            WebRequest request = WebRequest.Create(requestUri);
            request.Method = "POST";

            Nonce nonce = Nonce.Generate();
            TimeStamp timestamp = TimeStamp.Generate();

            BaseString baseString = new BaseString(request.RequestUri,
                request.Method, nonce, timestamp, credentials, HmacSha1Signature.MethodName);

            Signature signature = new HmacSha1Signature(baseString.ToString(), credentials);

            AuthorizationHeader header = new AuthorizationHeader(credentials, nonce, timestamp, signature);

            request.Headers.Add(HttpRequestHeader.Authorization, header.ToString());

            using (WebResponse res = request.GetResponse())
            using (Stream s = res.GetResponseStream())
            using (StreamReader sr = new StreamReader(s))
            {
                NameValueCollection response = HttpUtility.ParseQueryString(sr.ReadToEnd());
                return new NegotiationToken(response["oauth_token"], response["oauth_token_secret"]);
            }
        }
        public void WithoutToken()
        {
            ClientCredentials credentials = new ClientCredentials("key", "secret");
            string            baseString  = "POST&http%3A%2F%2Fterm.ie%2Foauth%2Fexample%2Frequest_token.php&oauth_consumer_key%3Dkey%26oauth_nonce%3D6971488%26oauth_signature_method%3DHMAC-SHA1%26oauth_timestamp%3D1327336019%26oauth_version%3D1.0";

            Signature signature = new HmacSha1Signature(baseString.ToString(), credentials);

            Assert.AreEqual("HMAC-SHA1", signature.Method);
            Assert.AreEqual("Qw2B3uOPRWj%2FgzL3jvdwBbkN6zE%3D", signature.Value);
        }
        public void WithoutToken()
        {
            ClientCredentials credentials = new ClientCredentials("key", "secret");
            string baseString = "POST&http%3A%2F%2Fterm.ie%2Foauth%2Fexample%2Frequest_token.php&oauth_consumer_key%3Dkey%26oauth_nonce%3D6971488%26oauth_signature_method%3DHMAC-SHA1%26oauth_timestamp%3D1327336019%26oauth_version%3D1.0";

            Signature signature = new HmacSha1Signature(baseString.ToString(), credentials);

            Assert.AreEqual("HMAC-SHA1", signature.Method);
            Assert.AreEqual("Qw2B3uOPRWj%2FgzL3jvdwBbkN6zE%3D", signature.Value);
        }
        public void WithToken()
        {
            ClientCredentials credentials = new ClientCredentials("key", "secret");
            NegotiationToken  token       = new NegotiationToken("requestkey", "requestsecret");
            string            baseString  = "POST&http%3A%2F%2Fterm.ie%2Foauth%2Fexample%2Faccess_token.php&oauth_consumer_key%3Dkey%26oauth_nonce%3D6971488%26oauth_signature_method%3DHMAC-SHA1%26oauth_timestamp%3D1327336019%26oauth_token%3Drequestkey%26oauth_version%3D1.0";

            Signature signature = new HmacSha1Signature(baseString, credentials, token);

            Assert.AreEqual("HMAC-SHA1", signature.Method);
            Assert.AreEqual("TtSu4YZhB3uuWPwmCetVARH5f7c%3D", signature.Value);
        }
        public void WithToken()
        {
            ClientCredentials credentials = new ClientCredentials("key", "secret");
            NegotiationToken token = new NegotiationToken("requestkey", "requestsecret");
            string baseString = "POST&http%3A%2F%2Fterm.ie%2Foauth%2Fexample%2Faccess_token.php&oauth_consumer_key%3Dkey%26oauth_nonce%3D6971488%26oauth_signature_method%3DHMAC-SHA1%26oauth_timestamp%3D1327336019%26oauth_token%3Drequestkey%26oauth_version%3D1.0";

            Signature signature = new HmacSha1Signature(baseString, credentials, token);

            Assert.AreEqual("HMAC-SHA1", signature.Method);
            Assert.AreEqual("TtSu4YZhB3uuWPwmCetVARH5f7c%3D", signature.Value);
        }