Ejemplo n.º 1
0
        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"
                }));
            }
        }
Ejemplo n.º 2
0
        /// <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);
        }