Пример #1
0
        public async Task <UserLoginResponse> Login()
        {
            var encryptionKeyResponse = await ExecuteRequest <InitialAppResponse>($"{baseUrl}/InitialApp.php", $"RegionCode={this.region.ToRegionCode()}&lg={this.language}&initial_app_strings={initialAppString}");

            if (encryptionKeyResponse != null &&
                encryptionKeyResponse.Status == 200)
            {
                // Managed to perform initial encryption handshake. Get password from provider and encode for sending
                string base64Password     = loginProvider.GetEncryptedPassword(encryptionKeyResponse.Baseprm);
                string urlEncodedPassword = WebUtility.UrlEncode(base64Password);

                var loginResponse = await ExecuteRequest <UserLoginResponse>($"{baseUrl}/UserLoginRequest.php", $"RegionCode={this.region.ToRegionCode()}&lg={this.language}&initial_app_strings={initialAppString}&UserId={loginProvider.Username}&Password={base64Password}");

                if (loginResponse != null &&
                    loginResponse.Status == 200)
                {
                    language = loginResponse.CustomerInfo.Language;
                    timezone = loginResponse.CustomerInfo.Timezone;
                }

                return(loginResponse);
            }
            else
            {
                return(new UserLoginResponse {
                    Status = encryptionKeyResponse.Status, Message = encryptionKeyResponse.Message
                });
            }
        }