public virtual string GetFormEncodedQueryFormat(OAuthMessage message) { if (message == null) { throw new ArgumentNullException("message"); } System.Text.StringBuilder strBuilder = new System.Text.StringBuilder(); bool skipDelimiter = true; foreach (string key in message.Parameters.Keys) { if (message.Parameters[key] != null) { if (!skipDelimiter) { strBuilder.Append("&"); } strBuilder.Append(string.Format(System.Globalization.CultureInfo.InvariantCulture, "{0}={1}", new object[] { HttpUtility.UrlEncode(key), HttpUtility.UrlEncode(message.Parameters[key]) })); skipDelimiter = false; } } return(strBuilder.ToString()); }
/// <summary> /// Generates a Uri to redirect the user's browser to, along with some OAuth paramters in the query string. /// </summary> /// <param name="message">The incoming request message.</param> /// <param name="authorizationCode">The authorization code.</param> /// <returns>The redirect Uri.</returns> public static string GetCodeResponseUri(this OAuthMessage message, string authorizationCode) { string state; if (message == null) { throw new ArgumentNullException("message"); } string redirectUri = message.Parameters[OAuthConstants.RedirectUri]; if (redirectUri == null && message.Parameters[OAuthConstants.GrantType] != OAuthConstants.AccessGrantType.ClientCredentials) { throw new InvalidOperationException(OAuthConstants.RedirectUri + " cannot be null"); } NameValueCollection responseParameters = new NameValueCollection(); responseParameters.Add(OAuthConstants.Code, authorizationCode); state = message.Parameters[OAuthConstants.State]; if (state != null) { responseParameters.Add(OAuthConstants.State, state); } return(redirectUri + CreateQueryString(responseParameters)); }
public virtual void Write(OAuthMessage message, System.IO.Stream requestStream) { if (message == null) { throw new ArgumentNullException("message"); } if (requestStream == null) { throw new ArgumentNullException("requestStream"); } System.IO.StreamWriter streamWriter = new System.IO.StreamWriter(requestStream); AccessTokenRequest atRequestMsg = message as AccessTokenRequest; if (atRequestMsg != null) { streamWriter.Write(this.GetFormEncodedQueryFormat(message)); streamWriter.Flush(); return; } AccessTokenResponse atResponseMsg = message as AccessTokenResponse; if (atResponseMsg != null) { streamWriter.Write(this.GetJsonEncodedFormat(message)); streamWriter.Flush(); return; } throw new OAuthMessageException(string.Format(Resources.ID3724, message.GetType())); }
public virtual string GetJsonEncodedFormat(OAuthMessage message) { if (message == null) { throw new ArgumentNullException("message"); } var serializedMessage = JsonConvert.SerializeObject(message.Parameters); // TODO: replace token of array to object... return(serializedMessage); }
public virtual string GetQueryStringFormat(OAuthMessage message) { if (message == null) { throw new ArgumentNullException("message"); } System.Text.StringBuilder strBuilder = new System.Text.StringBuilder(); strBuilder.Append(message.BaseUri.AbsoluteUri); strBuilder.Append("?"); strBuilder.Append(this.GetFormEncodedQueryFormat(message)); return(strBuilder.ToString()); }
public virtual void Write(OAuthMessage message, HttpWebRequest request) { if (message == null) { throw new ArgumentNullException("message"); } if (request == null) { throw new ArgumentNullException("request"); } request.Method = this.GetHttpMethod(message); request.ContentType = this.GetHttpContentType(message); this.Write(message, request.GetRequestStream()); }
public virtual void Write(OAuthMessage message, HttpContextBase context) { if (message == null) { throw new ArgumentNullException("message"); } if (context == null) { throw new ArgumentNullException("context"); } context.Response.ContentType = this.GetHttpContentType(message); context.Response.Clear(); this.Write(message, context.Response.OutputStream); context.Response.Flush(); }
protected virtual OAuthMessage CreateTypedOAuthMessageFromParameters(Uri baseUri, NameValueCollection parameters) { if (parameters == null) { throw new ArgumentNullException("parameters"); } OAuthMessage request = null; if (parameters["response_type"] == "code" || parameters["response_type"] == "token") { request = new EndUserAuthorizationRequest(baseUri); } if (!string.IsNullOrEmpty(parameters["code"]) || (!string.IsNullOrEmpty(parameters["access_token"]) && string.IsNullOrEmpty(parameters["refresh_token"]))) { request = new EndUserAuthorizationResponse(baseUri); } if (!string.IsNullOrEmpty(parameters["error"])) { request = new EndUserAuthorizationFailedResponse(baseUri); } if (!string.IsNullOrEmpty(parameters["grant_type"]) && parameters["grant_type"] == "authorization_code") { request = new AccessTokenRequestWithAuthorizationCode(baseUri); } if (!string.IsNullOrEmpty(parameters["grant_type"]) && parameters["grant_type"] == OAuthConstants.AccessGrantType.ClientCredentials) { request = new AccessTokenRequest(baseUri); } if (!string.IsNullOrEmpty(parameters["access_token"])) { request = new AccessTokenResponse(baseUri); } if (request == null) { throw new OAuthMessageSerializationException(Resources.ID3723); } request.Parameters.Add(parameters); request.Validate(); return(request); }
public virtual string GetHttpContentType(OAuthMessage message) { if (message == null) { throw new ArgumentNullException("message"); } AccessTokenRequest atRequestMessage = message as AccessTokenRequest; if (atRequestMessage != null) { return("application/x-www-form-urlencoded"); } AccessTokenResponse atResponseMessage = message as AccessTokenResponse; if (atResponseMessage != null) { return("application/json"); } return("text/plain; charset=us-ascii"); }
/// <summary> /// Generates a Uri with the error message in the query string. /// </summary> /// <param name="message">Then incoming request message.</param> /// <param name="errorCode">The error code.</param> /// <param name="errorDescription">A description of the error.</param> /// <returns> /// Returns the redirect Uri. /// </returns> public static string GetErrorResponseUri(this OAuthMessage message, string errorCode, string errorDescription) { string state; if (message == null) { throw new ArgumentNullException("message"); } if (errorCode == null) { throw new ArgumentNullException("errorCode"); } if (errorDescription == null) { throw new ArgumentNullException("errorDescription"); } string redirectUri = message.Parameters[OAuthConstants.RedirectUri]; if (redirectUri == null) { throw new InvalidOperationException(OAuthConstants.RedirectUri + " cannot be null"); } NameValueCollection responseParameters = new NameValueCollection(); responseParameters.Add(OAuthConstants.Error, errorCode); responseParameters.Add(OAuthConstants.ErrorDescription, errorDescription); state = message.Parameters[OAuthConstants.State]; if (state != null) { responseParameters.Add(OAuthConstants.State, state); } return(redirectUri + CreateQueryString(responseParameters)); }
public virtual string GetHttpMethod(OAuthMessage message) { if (message == null) { throw new ArgumentNullException("message"); } AccessTokenRequest atRequestMessage = message as AccessTokenRequest; if (atRequestMessage != null) { return("POST"); } AccessTokenResponse atResponseMessage = message as AccessTokenResponse; if (atResponseMessage != null) { return("POST"); } return("GET"); }