public async Task <IActionResult> GetCode([FromBody] GetCodeRequest request) { var application = await _applicationService.Get(request.ClientId).ConfigureAwait(false); if (application is null) { return(NotFound()); } try { var code = await _tokenService.GetCode(application, request.AccessToken).ConfigureAwait(false); if (code is null) { return(StatusCode(403)); } return(Ok(new CodeResponse { Code = code.Code, ExpiresAt = code.ExpiresAt.ToString("s") })); } catch (FirstPartyApplicationMustUsePasswordGrantTypeException) { return(BadRequest()); } catch (ExpiredAccessTokenException) { return(NotFound(new { Error = $"Access Token: {request.AccessToken} has expired" })); } }
/// <summary> /// User must visit http://put.io/link and enter the code. /// </summary> public async Task <string> GetCode(GetCodeRequest request) { var response = await ExecuteGetWithResponseAsync <GetCodeResponse>("oauth2/oob/code", request); return(response.Code); }