Example #1
0
        public async Task <PasswordOAuthContext> Login(IAuthRequestData <PasswordAuthData> authRequest)
        {
            var factory = new GameClientFactory(_baseUri);
            var request = factory.CreateRequest("/token");

            request.AddHeader("Content-Type", "application/x-www-form-urlencoded");
            request.AddParameter("grant_type", "password");
            request.AddParameter("username", authRequest.RequestData.Usename);
            request.AddParameter("password", authRequest.RequestData.Password);

            var client = new GameClientFactory(_baseUri).CreateClient();

            client.AddHandler("application/json", CustomJsonDeserializer.Default);
            client.AddHandler("text/javascript", CustomJsonDeserializer.Default);
            IRestResponse <OAuthPasswordResponseData> stringToken = null;

            try
            {
                stringToken = await client.ExecutePostTaskAsync <OAuthPasswordResponseData>(request);
            }
            catch (Exception exception)
            {
                _logger.Error(exception);
            }

            if (stringToken.ErrorException != null)
            {
                ExceptionHandlerHelper.HandleHttpRequestException(stringToken.ErrorException);
            }
            if (
                new HttpStatusCode[]
            {
                HttpStatusCode.BadRequest, HttpStatusCode.Forbidden, HttpStatusCode.Unauthorized, HttpStatusCode.BadGateway, HttpStatusCode.InternalServerError
            }.Contains(stringToken.StatusCode))
            {
                HandleNotSuccessRequest(authRequest.RequestData, stringToken);
            }

            return(new PasswordOAuthContext()
            {
                Context = new OAuth2AuthorizationRequestHeaderAuthenticator(stringToken.Data.AccessToken, stringToken.Data.TokenType),
                OAuthToken = stringToken.Data.AccessToken,
                BaseUri = _baseUri
            });
        }