protected virtual OAuthMessage CreateTypedOAuthMessageFromParameters(Uri baseUri, Dictionary<string,string> parameters)
{
if (parameters == null)
{
throw new ArgumentNullException("parameters");
}
OAuthMessage request = null;
if (parameters.ContainsKey("response_type") && (parameters["response_type"] == "code" || parameters["response_type"] == "token"))
{
request = new EndUserAuthorizationRequest(baseUri);
}
if ((parameters.ContainsKey("code") && !string.IsNullOrEmpty(parameters["code"])) || (parameters.ContainsKey("access_token") && !string.IsNullOrEmpty(parameters["access_token"]) && parameters.ContainsKey("refresh_token") && string.IsNullOrEmpty(parameters["refresh_token"])))
{
request = new EndUserAuthorizationResponse(baseUri);
}
if (parameters.ContainsKey("error") && !string.IsNullOrEmpty(parameters["error"]))
{
request = new EndUserAuthorizationFailedResponse(baseUri);
}
if (parameters.ContainsKey("grant_type") && !string.IsNullOrEmpty(parameters["grant_type"]) && parameters["grant_type"] == "authorization_code")
{
request = new AccessTokenRequestWithAuthorizationCode(baseUri);
}
if (parameters.ContainsKey("access_token") && !string.IsNullOrEmpty(parameters["access_token"]))
{
request = new AccessTokenResponse(baseUri);
}
if (request == null)
{
throw new OAuthMessageSerializationException(Resources.ID3723);
}
foreach (var parameter in parameters)
{
request.Parameters.Add(parameter.Key, parameter.Value);
}
request.Validate();
return request;
}