private static Task HandleExceptionAsync(HttpContext context, Exception exception, IList <Func <Exception, ResponseTokenError> > custom, string genericMessage, string uri = null) { context.Response.ContentType = "application/json"; context.Response.StatusCode = (int)HttpStatusCode.InternalServerError; string oauth2InternalExceptionMessage = GetUriException(exception); if (custom != null) { foreach (var item in custom) { var response = item(exception); if (response != null) { return(context.Response.WriteAsync(response.ToString())); } } } if (!string.IsNullOrEmpty(genericMessage)) { return(context.Response.WriteAsync(ResponseTokenError.ServerError(genericMessage, uri ?? GetUriException(exception)).ToString())); } return(context.Response.WriteAsync(ResponseTokenError.ServerError(exception, uri ?? oauth2InternalExceptionMessage).ToString())); }
public IActionResult Index(RequestToken request) { try { if (Request?.ContentType == "application/json") { using (StreamReader reader = new StreamReader(Request.Body, Encoding.UTF8)) { request = JsonConvert.DeserializeObject <RequestToken>(reader.ReadToEnd()); } } if (string.IsNullOrEmpty(request.Grant_Type) || !grantTypes.Contains(request.Grant_Type)) { return(BadRequest(new ResponseTokenError("unsupported_grant_type", $"O grant_type '{request.Grant_Type ?? "null"}' não é suportado"))); } switch (request.Grant_Type) { case GrantType.AuthorizationCode: return(RedirectToAction("Index", "AuthorizationCode", request)); case GrantType.ClientCredentials: return(RedirectToAction("Index", "ClientCredentials", request)); case GrantType.DeviceCode: return(RedirectToAction("Index", "DeviceCode", request)); case GrantType.Password: return(RedirectToAction("Index", "Password", request)); case GrantType.RefreshToken: return(RedirectToAction("Index", "RefreshToken", request)); default: return(BadRequest(ResponseTokenError.UnsupportedGrantType(request.Grant_Type))); } }catch (Exception e) { _logger.LogError(e, "Request Error"); return(StatusCode(500, ResponseTokenError.ServerError(e))); } }