Task <WebResponse> HttpPostAsync(Uri uri, string content = null, ITokenPair tokens = null) { var request = (HttpWebRequest)WebRequest.Create(uri); request.Method = "POST"; request.ContentType = "application/x-www-form-urlencoded"; OnPostRequest(request, content, tokens); if (content != null) { // not "using" rs as per CA2202 Stream rs = null; try { rs = Task.Factory.FromAsync <Stream>(request.BeginGetRequestStream, request.EndGetRequestStream, null).Result; using (var sw = new StreamWriter(rs)) { rs = null; sw.Write(content); } } finally { if (rs != null) { rs.Dispose(); } } } return(request.GetResponseAsync(Timeout)); }
public void SetToken_NeedRefresh() { ITokenPair tokenPair = GetToken(TestMsJwtProviderBase.CreateClaim(), TestMsJwtProviderBase.CreatePayload()); TokenManager refresher = CreateRefresher(TestConstants.AccessTokenLifetimeSeconds); refresher.SetToken(tokenPair); Assert.IsTrue(refresher.NeedRefreshToken()); }
public void RefreshToken() { ITokenPair tokenPair = GetToken(TestMsJwtProviderBase.CreateClaim(), TestMsJwtProviderBase.CreatePayload()); TokenManager refresher = CreateRefresher(TestConstants.AccessTokenLifetimeSeconds / 2); refresher.SetToken(tokenPair); Assert.IsFalse(refresher.NeedRefreshToken()); DateTimeOffset lastExpiration = refresher.GetTokenExpiration().Value; System.Threading.Thread.Sleep(1000); DateTimeOffset expectedExpiration = DateTimeOffset.UtcNow.AddSeconds(TestConstants.AccessTokenLifetimeSeconds); refresher.RefreshToken(); Assert.IsTrue(lastExpiration < refresher.GetTokenExpiration().Value); Assert.IsTrue(expectedExpiration <= refresher.GetTokenExpiration().Value); }
void Authorize(WebRequest request, string content = null, ITokenPair tokens = null) { if (tokens == null) { tokens = m_accessToken; } var oauth_nonce = Convert.ToBase64String(UTF8Encoding.UTF8.GetBytes(DateTime.Now.Ticks.ToString())); var timeSpan = DateTime.UtcNow - new DateTime(1970, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc); var oauth_timestamp = Convert.ToInt64(timeSpan.TotalSeconds).ToString(); var resource_url = request.RequestUri.GetComponents(UriComponents.SchemeAndServer | UriComponents.Path, UriFormat.Unescaped); var parms = new SortedDictionary <string, string> { { "oauth_consumer_key", m_consumerKey }, { "oauth_nonce", oauth_nonce }, { "oauth_signature_method", "HMAC-SHA1" }, { "oauth_timestamp", oauth_timestamp }, { "oauth_version", "1.0" }, { "oauth_token", tokens.Token }, }; if (!String.IsNullOrEmpty(request.RequestUri.Query)) { foreach (var p in request.RequestUri.Query.Substring(1).Split('&')) { var kv = p.Split('='); parms.Add(kv[0], kv[1]); } } if (content != null) { foreach (var p in content.Split('&')) { var kv = p.Split('='); parms.Add(kv[0], kv[1]); } } var baseString = parms.First().Key + "=" + parms.First().Value; foreach (var p in parms.Skip(1)) { baseString += "&" + p.Key + "=" + p.Value; } baseString = request.Method + "&" + Uri.EscapeDataString(resource_url) + "&" + Uri.EscapeDataString(baseString); var compositeKey = Uri.EscapeDataString(m_consumerSecret) + "&" + Uri.EscapeDataString(tokens.Secret); string oauth_signature; oauth_signature = m_platformAdaptor.ComputeSha1Hash(compositeKey, baseString); //using (var hasher = new HMACSHA1(UTF8Encoding.UTF8.GetBytes(compositeKey))) //{ // oauth_signature = Convert.ToBase64String(hasher.ComputeHash(UTF8Encoding.UTF8.GetBytes(baseString))); //} var authHeader = string.Format("OAuth oauth_nonce=\"{0}\", oauth_signature_method=\"HMAC-SHA1\", oauth_timestamp=\"{1}\", oauth_consumer_key=\"{2}\", oauth_signature=\"{3}\", oauth_token=\"{4}\", oauth_version=\"1.0\"", Uri.EscapeDataString(oauth_nonce), Uri.EscapeDataString(oauth_timestamp), Uri.EscapeDataString(m_consumerKey), Uri.EscapeDataString(oauth_signature), Uri.EscapeDataString(tokens.Token)); request.Headers["Authorization"] = authHeader; }
void OnPostRequest(WebRequest request, string content = null, ITokenPair tokens = null) { Authorize(request, content, tokens); }
/// <summary> /// Sets the token. /// </summary> /// <param name="token"></param> public void SetToken(ITokenPair token) { CurrentAccessToken = token?.AccessToken; CurrentRefreshToken = token?.RefreshToken; }
/// <summary> /// Refreshes the access token. /// </summary> /// <returns></returns> public void RefreshToken() { ITokenPair newToken = RefreshToken(CurrentRefreshToken?.TokenString); SetToken(newToken); }
protected Task <WebResponse> HttpPostAsync(string relativeUri, string content = null, ITokenPair tokens = null) { return(HttpPostAsync(new Uri(BaseUri, relativeUri), content, tokens)); }