Esempio n. 1
0
        internal static string PickEndpoint(string[] endpoints, string prefix)
        {
            if (_selected != null)
            {
                return(_selected);
            }

            if (_preferred != null && endpoints.Contains(_preferred) &&
                CheckAvailability(_preferred, prefix).Item1 >= 0)
            {
                _selected = _preferred;
                return(_selected);
            }

            var tokenSource = new CancellationTokenSource();
            var token       = tokenSource.Token;
            var results     = new Task <Tuple <int, string> > [endpoints.Length];
            var i           = 0;

            foreach (var endpoint in endpoints)
            {
                results[i] = Task.Run(() => CheckAvailability(endpoint, prefix), token);
                i++;
            }

            var result = RestApi.Synchronize(() => WhenAny(results, x => !CheckVendor.NotValidResponseCode(x.Item1)));

            _selected = CheckVendor.NotValidResponseCode(result.Item1) ? null : result.Item2;
            return(_selected);
        }
Esempio n. 2
0
        private void Button_Click(object sender, System.Windows.RoutedEventArgs e)
        {
            _sr.InteractiveTask(() =>
            {
                int ret;

                _sr.Procedure = null;
                var local     = new LogoutProcedure();

                try
                {
                    ret = local.Step1();
                }
                catch (HttpRequestException ex)
                {
                    ret = 02_0000 + (int)(ex.Data["StatusCode"]);
                }
                catch (Exception)
                {
                    ret = 02_0000;
                }

                if (CheckVendor.NotValidResponseCode(ret))
                {
                    Growl.Error(MessageVendor.FormatError(ret));
                }
                else
                {
                    ApiVendor.SetRenew(null);
                    SubwindowNavigator.Navigate(SubwindowPage.LoggedOut);
                }
            });
            _sr.InteractiveTask(() => SubwindowNavigator.Navigate(SubwindowPage.LoggedOut));
        }
Esempio n. 3
0
        public int Step3()
        {
            if (CheckVendor.NotValidResponse(_serverResponse))
            {
                return(02_0008);
            }

            var authRequest = new AuthRequest();

            authRequest.Username = _username;

            authRequest.AuthToken = _serverResponse.AuthToken;

            authRequest.ReportTime = DateTime.Now;

            var result = ApiCall.SessionChange.Call(null, new MilvanethProtocol {
                Context = null, Data = authRequest
            });

            if (!(result.Data is ServerResponse sr))
            {
                return(02_0007);
            }

            if (!CheckVendor.NotValidResponse(sr))
            {
                _serverResponse = sr;
            }

            return(sr.Message);
        }
Esempio n. 4
0
        public int Step1(string username, byte[] renewToken)
        {
            if (CheckVendor.NotValidRenewToken(renewToken))
            {
                return(03_0009);
            }

            var authRenew = new AuthRenew();

            authRenew.Username = username;

            authRenew.RenewToken = renewToken;

            authRenew.ReportTime = DateTime.Now;

            var result = ApiCall.SessionRenew.Call(null, new MilvanethProtocol {
                Context = null, Data = authRenew
            });

            if (!(result.Data is AuthResponse ar))
            {
                return(02_0007);
            }

            if (!CheckVendor.NotValidResponse(ar))
            {
                _authResponse = ar;
            }

            return(ar.Message);
        }
Esempio n. 5
0
        public int Step2(int[] itemid, int partid, out OverviewResponse res)
        {
            res = null;

            if (itemid.Any(CheckVendor.NotValidItemId) || !ApiVendor.HasToken())
            {
                return(02_0008);
            }

            var or = new OverviewRequest();

            or.QueryItems = itemid;
            or.ReportTime = DateTime.Now;

            var result = ApiCall.DataOverview.Call(partid.ToString(), new MilvanethProtocol {
                Context = null, Data = or
            });

            if (!(result.Data is OverviewResponse pr))
            {
                return(02_0007);
            }

            if (CheckVendor.NotValidResponse(pr))
            {
                return(pr.Message);
            }

            res = pr;
            return(00_0000);
        }
Esempio n. 6
0
        public int Step1(out bool needUpdate, out VersionInfo info)
        {
            needUpdate = false;
            info       = null;

            var result = ApiCall.VersionCurrent.Call($"{MilvanethConfig.Store.Global.MilVersion},{MilvanethConfig.Store.Global.DataVersion},{MilvanethConfig.Store.Global.GameVersion}", null);

            if (!(result.Data is VersionInfo vi))
            {
                return(02_0007);
            }

            if (CheckVendor.NotValidResponse(vi))
            {
                return(vi.Message);
            }

            needUpdate = vi.Message == 00_0004;

            if (needUpdate)
            {
                info         = vi;
                _versionInfo = vi;
            }

            return(00_0000);
        }
Esempio n. 7
0
        public int Step2(out VersionDownload download)
        {
            download = null;

            if (CheckVendor.NotValidResponse(_versionInfo) || _versionInfo.Message != 00_0004)
            {
                return(02_0008);
            }

            var result = ApiCall.VersionDownload.Call(_versionInfo.EligibleBundleKey, null);

            if (!(result.Data is VersionDownload vd))
            {
                return(02_0007);
            }

            if (CheckVendor.NotValidResponse(vd))
            {
                return(vd.Message);
            }

            vd.Argument = UpdateVendor.FormatArgumentString(vd);
            download    = vd;

            return(00_0000);
        }
Esempio n. 8
0
        private void Button_Click_1(object sender, RoutedEventArgs e)
        {
            var username = Username.Text;

            _sr.InteractiveTask(() =>
            {
                int ret;

                _sr.Procedure = null;
                var local     = new LoginProcedure();

                try
                {
                    ret = local.Step1(username, Helper.GetTrace());
                }
                catch (HttpRequestException ex)
                {
                    ret = 02_0000 + (int)(ex.Data["StatusCode"]);
                }
                catch (Exception)
                {
                    ret = 02_0000;
                }

                if (CheckVendor.NotValidResponseCode(ret))
                {
                    Growl.Error(MessageVendor.FormatError(ret));
                }
                else
                {
                    _sr.Procedure = local;
                    SubwindowNavigator.Navigate(SubwindowPage.Login2);
                }
            });
        }
Esempio n. 9
0
        public int Step3(out byte[] renewToken)
        {
            renewToken = null;

            if (CheckVendor.NotValidResponse(_serverResponse))
            {
                return(02_0008);
            }

            var authRequest = new AuthRequest();

            authRequest.Username = _username;

            authRequest.AuthToken = _serverResponse.AuthToken;

            authRequest.ReportTime = DateTime.Now;

            var result = ApiCall.SessionCreate.Call(null, new MilvanethProtocol {
                Context = null, Data = authRequest
            });

            if (!(result.Data is AuthResponse ar))
            {
                return(02_0007);
            }

            if (!CheckVendor.NotValidResponse(ar))
            {
                renewToken = ar.RenewToken;
                ApiVendor.SetToken(ar.SessionToken);
            }

            return(ar.Message);
        }
Esempio n. 10
0
        public PageLoggedIn(SubwindowRouter sr)
        {
            _sr = sr;
            InitializeComponent();

            if (_sr.Dispname == " ")
            {
                _sr.InteractiveTask(() =>
                {
                    int ret;
                    string displayName = null;

                    var local = new ProfileProcedure();

                    try
                    {
                        ret = local.Step2(out var status);

                        if (!CheckVendor.NotValidResponseCode(ret) && status != null)
                        {
                            displayName = status.DisplayName;
                        }
                    }
                    catch (HttpRequestException ex)
                    {
                        ret = 02_0000 + (int)(ex.Data["StatusCode"]);
                    }
                    catch (Exception)
                    {
                        ret = 02_0000;
                    }

                    if (CheckVendor.NotValidResponseCode(ret))
                    {
                        Growl.Error(MessageVendor.FormatError(ret));
                    }
                    else
                    {
                        _sr.Dispname = displayName;

                        if (this.Dispatcher != null && !this.Dispatcher.CheckAccess())
                        {
                            this.Dispatcher.Invoke(() => NameDisplay.Text = !string.IsNullOrWhiteSpace(_sr.Dispname)
                                ? $"已登录 {_sr.Dispname}"
                                : $"已登录 {_sr.Username}");
                        }
                        else
                        {
                            NameDisplay.Text = !string.IsNullOrWhiteSpace(_sr.Dispname)
                                ? $"已登录 {_sr.Dispname}"
                                : $"已登录 {_sr.Username}";
                        }
                    }
                });
            }

            NameDisplay.Text = !string.IsNullOrWhiteSpace(_sr.Dispname) ? $"已登录 {_sr.Dispname}" : $"已登录 {_sr.Username}";
        }
Esempio n. 11
0
        public int Step2(byte[] oldPassword)
        {
            if (CheckVendor.NotValidPassword(oldPassword))
            {
                return(03_0010);
            }

            var ret = _loginProcedure.Step2(oldPassword);

            _serverResponse = _loginProcedure.Step2GetResult();
            return(ret);
        }
Esempio n. 12
0
        public int Step1(string username, long[] trace)
        {
            if (CheckVendor.NotValidUsername(username) || CheckVendor.NotValidTrace(trace))
            {
                return(03_0010);
            }

            _username       = username;
            _trace          = trace;
            _loginProcedure = new LoginProcedure();
            return(_loginProcedure.Step1(username, trace));
        }
Esempio n. 13
0
        private void Button_Click_2(object sender, RoutedEventArgs e)
        {
            var password = Password.Password.ToCharArray();

            _sr.InteractiveTask(() =>
            {
                int ret = 00_0000;

                try
                {
                    if (!(_sr.Procedure is LoginProcedure local))
                    {
                        ret = 02_0009;
                        goto FAIL;
                    }

                    ret = CheckVendor.NotValidResponseCode(ret) ? ret : local.Step2(Encoding.UTF8.GetBytes(password));

                    byte[] token = null;

                    ret = CheckVendor.NotValidResponseCode(ret) ? ret : local.Step3(out token);

                    _sr.RenewToken = token;

                    if (!CheckVendor.NotValidResponseCode(ret))
                    {
                        var prof     = new ProfileProcedure();
                        ret          = prof.Step2(out var status);
                        _sr.Username = status.Username;
                        _sr.Dispname = status.DisplayName;
                    }
                }
                catch (HttpRequestException ex)
                {
                    ret = 02_0000 + (int)(ex.Data["StatusCode"]);
                }
                catch (Exception)
                {
                    ret = 02_0000;
                }

                FAIL:
                if (CheckVendor.NotValidResponseCode(ret))
                {
                    Growl.Error(MessageVendor.FormatError(ret));
                }
                else
                {
                    _sr.Procedure = null;
                    SubwindowNavigator.Navigate(SubwindowPage.LoggedIn);
                }
            });
        }
Esempio n. 14
0
        public int Step2(out byte[] renewToken)
        {
            renewToken = null;

            if (CheckVendor.NotValidResponse(_authResponse))
            {
                return(02_0008);
            }

            renewToken = _authResponse.RenewToken;
            ApiVendor.SetToken(_authResponse.SessionToken);

            return(_authResponse.Message);
        }
Esempio n. 15
0
        public int Step1(string username, LobbyServiceResult service, LobbyCharacterResult character, long[] trace)
        {
            if (CheckVendor.NotValidUsername(username) ||
                CheckVendor.NotValidService(service) ||
                CheckVendor.NotValidCharacter(character) ||
                CheckVendor.NotValidTrace(trace))
            {
                return(03_0010);
            }

            _username = username;
            var recoveryGame = new RecoveryGame();

            recoveryGame.Username = username;

            recoveryGame.Service = service;

            recoveryGame.Character = character;

            recoveryGame.Trace = trace;

            recoveryGame.ReportTime = DateTime.Now;

            for (var i = 0; i < 3; i++)
            {
                var result = ApiCall.AccountRecoveryGame.Call(null, new MilvanethProtocol {
                    Context = null, Data = recoveryGame
                });

                if (!(result.Data is ServerResponse sr))
                {
                    return(02_0007);
                }

                if (!CheckVendor.NotValidResponse(sr))
                {
                    _serverResponse = sr;
                }

                if (sr.Message != 01_0003) // retry with pow
                {
                    return(sr.Message);
                }

                recoveryGame.ProofOfWork = ProofOfWorkVendor.CalculateProofOfWork(sr.AuthToken);
            }

            return(01_0002);
        }
        public PageRecoveryAccount1(SubwindowRouter sr)
        {
            _sr = sr;
            InitializeComponent();

            _sr.InteractiveTask(() =>
            {
                int ret;

                if (!SubwindowDataCollector.Collect(5 * 60 * 1000, out var service, out var character))
                {
                    Growl.Error("等待超时,请返回上一页重试");
                }

                _sr.Procedure = null;
                var local     = new RecoveryProcedure();

                try
                {
                    if (string.IsNullOrEmpty(_sr.Username))
                    {
                        ret = 02_0009;
                        goto FAIL;
                    }

                    ret = local.Step1(_sr.Username, service, character, Helper.GetTrace());
                }
                catch (HttpRequestException ex)
                {
                    ret = 02_0000 + (int)(ex.Data["StatusCode"]);
                }
                catch (Exception)
                {
                    ret = 02_0000;
                }

                FAIL:
                if (CheckVendor.NotValidResponseCode(ret))
                {
                    Growl.Error(MessageVendor.FormatError(ret));
                }
                else
                {
                    _sr.Procedure = local;
                    SubwindowNavigator.Navigate(SubwindowPage.Recovery2);
                }
            });
        }
Esempio n. 17
0
        public int Step3(byte[] newPassword, string email)
        {
            if (CheckVendor.NotValidPassword(newPassword))
            {
                return(03_0007);
            }

            if (CheckVendor.NotValidEmail(email))
            {
                return(03_0005);
            }

            if (CheckVendor.NotValidResponse(_serverResponse))
            {
                return(02_0008);
            }

            _password = newPassword;
            var recoveryRequest = new RecoveryRequest();

            recoveryRequest.Email = email;

            recoveryRequest.Verifier = Srp6Vendor.Srp6Init(_username, _password, out var salt).ToByteArray();

            recoveryRequest.Salt = salt;

            recoveryRequest.GroupParam = Srp6Vendor.BitLength;

            recoveryRequest.OperationToken = _serverResponse.AuthToken;

            recoveryRequest.ReportTime = DateTime.Now;

            var result = ApiCall.AuthReset.Call(null, new MilvanethProtocol {
                Context = null, Data = recoveryRequest
            });

            if (!(result.Data is ServerResponse sr))
            {
                return(02_0007);
            }

            if (!CheckVendor.NotValidResponse(sr))
            {
                _serverResponse = sr;
            }

            return(sr.Message);
        }
Esempio n. 18
0
        private void Button_Click_1(object sender, RoutedEventArgs e)
        {
            var password = OldPassword.Password.ToCharArray();

            _sr.InteractiveTask(() =>
            {
                int ret;

                _sr.Procedure = null;
                var local     = new ChangeProcedure();

                try
                {
                    if (string.IsNullOrEmpty(_sr.Username))
                    {
                        ret = 02_0009;
                        goto FAIL;
                    }

                    ret = local.Step1(_sr.Username, Helper.GetTrace());

                    ret = CheckVendor.NotValidResponseCode(ret) ? ret : local.Step2(Encoding.UTF8.GetBytes(password));

                    ret = CheckVendor.NotValidResponseCode(ret) ? ret : local.Step3();
                }
                catch (HttpRequestException ex)
                {
                    ret = 02_0000 + (int)(ex.Data["StatusCode"]);
                }
                catch (Exception)
                {
                    ret = 02_0000;
                }

                FAIL:
                if (CheckVendor.NotValidResponseCode(ret))
                {
                    Growl.Error(MessageVendor.FormatError(ret));
                }
                else
                {
                    _sr.Procedure = local;
                    SubwindowNavigator.Navigate(SubwindowPage.Change2);
                }
            });
        }
Esempio n. 19
0
        private void Button_Click_2(object sender, RoutedEventArgs e)
        {
            var email = Email.Text;

            _sr.InteractiveTask(() =>
            {
                if (CheckVendor.NotValidEmail(email))
                {
                    Growl.Error("无效邮件地址");
                    return;
                }

                _sr.Email = email;

                SubwindowNavigator.Navigate(SubwindowPage.RecoveryEmail2);
            });
        }
Esempio n. 20
0
        public int Step2(string code)
        {
            if (CheckVendor.NotValidCode(code))
            {
                return(03_0011);
            }

            if (CheckVendor.NotValidResponse(_serverResponse))
            {
                return(02_0008);
            }

            if (_email == null)
            {
                return(00_0000);
            }

            var recoveryEmail = new RecoveryEmail();

            recoveryEmail.Username = _username;

            recoveryEmail.Email = _email;

            recoveryEmail.Trace = _trace;

            recoveryEmail.Code = code;

            recoveryEmail.ReportTime = DateTime.Now;

            var result = ApiCall.AccountRecoveryEmail.Call(null, new MilvanethProtocol {
                Context = null, Data = recoveryEmail
            });

            if (!(result.Data is ServerResponse sr))
            {
                return(02_0007);
            }

            if (!CheckVendor.NotValidResponse(sr))
            {
                _serverResponse = sr;
            }

            return(sr.Message);
        }
Esempio n. 21
0
        private void Button_Click(object sender, RoutedEventArgs e)
        {
            var displayName = DisplayName.Text;

            _sr.InteractiveTask(() =>
            {
                int ret;

                _sr.Procedure = null;
                var local     = new ProfileProcedure();

                try
                {
                    ret = local.Step1(displayName, Helper.GetTrace(), null);

                    AccountStatus status = null;

                    ret = CheckVendor.NotValidResponseCode(ret) ? ret : local.Step2(out status);

                    if (!CheckVendor.NotValidResponseCode(ret) && status != null)
                    {
                        displayName = status.DisplayName;
                    }
                }
                catch (HttpRequestException ex)
                {
                    ret = 02_0000 + (int)(ex.Data["StatusCode"]);
                }
                catch (Exception)
                {
                    ret = 02_0000;
                }

                if (CheckVendor.NotValidResponseCode(ret))
                {
                    Growl.Error(MessageVendor.FormatError(ret));
                }
                else
                {
                    Growl.Success("成功修改显示名称");
                    _sr.Dispname = displayName;
                    SubwindowNavigator.Navigate(SubwindowPage.LoggedIn);
                }
            });
        }
Esempio n. 22
0
        public int Step1(string username, long[] trace)
        {
            var clientChallenge = new ClientChallenge();

            if (CheckVendor.NotValidUsername(username) || CheckVendor.NotValidTrace(trace))
            {
                return(03_0010);
            }

            clientChallenge.Trace = trace;

            _username = username;
            clientChallenge.Username = username;

            clientChallenge.ReportTime = DateTime.Now;

            for (var i = 0; i < 3; i++)
            {
                var result = ApiCall.AuthStart.Call(null, new MilvanethProtocol {
                    Context = null, Data = clientChallenge
                });

                if (!(result.Data is ServerChallenge sc))
                {
                    return(02_0007);
                }

                if (!CheckVendor.NotValidResponse(sc))
                {
                    _serverChallenge = sc;
                }

                if (sc.Message != 01_0003) // retry with pow
                {
                    return(sc.Message);
                }

                clientChallenge.SessionId = sc.SessionId;

                clientChallenge.ProofOfWork = ProofOfWorkVendor.CalculateProofOfWork(sc.ProofOfWork);
            }

            return(01_0002);
        }
Esempio n. 23
0
        private void UploadTask()
        {
            if (_dataQueue.TryDequeue(out var data))
            {
                try
                {
                    var ret = _exchange.Step1(data);

                    if (ret == 04_0511 && ApiVendor.HasToken())
                    {
                        ApiVendor.RenewToken(DataHolder.Username, ref DataHolder.RenewToken);
                        _exchange.Step1(data);
                    }

                    if (!CheckVendor.NotValidResponseCode(ret))
                    {
                        _onDataUploaded?.Invoke($"Data Uploaded: {((PackedResult)data.Data).Type.ToString()}");
                    }
                }
                catch (HttpRequestException e)
                {
                    try
                    {
                        if ((int)e.Data["StatusCode"] == 511 && ApiVendor.HasToken())
                        {
                            ApiVendor.RenewToken(DataHolder.Username, ref DataHolder.RenewToken);
                            _exchange.Step1(data);
                        }
                    }
                    catch
                    {
                        // ignored
                    }
                }
                catch
                {
                    // ignored
                }
            }

            Thread.Sleep(250);
        }
Esempio n. 24
0
        public int Step1(string displayName, long[] trace, byte[] additional)
        {
            if (CheckVendor.NotValidDisplayName(displayName) || CheckVendor.NotValidTrace(trace) || !ApiVendor.HasToken())
            {
                return(02_0008);
            }

            var au = new AccountUpdate();

            au.DisplayName    = displayName;
            au.Trace          = trace;
            au.AdditionalData = additional;
            au.ReportTime     = DateTime.Now;

            var result = ApiCall.AccountUpdate.Call(null, new MilvanethProtocol {
                Context = null, Data = au
            });

            return(00_0000);
        }
Esempio n. 25
0
        public int Step1(MilvanethProtocol mp)
        {
            if (!ApiVendor.HasToken())
            {
                return(02_0008);
            }

            if (mp == null) // as we have karma, this is not too serious
            {
                return(00_0001);
            }

            if (CheckVendor.NotValidData(mp))
            {
                return(02_0008);
            }

            var result = ApiCall.DataUpload.Call(null, mp);

            return(00_0000);
        }
Esempio n. 26
0
        public int Step2(byte[] password)
        {
            if (CheckVendor.NotValidPassword(password))
            {
                return(03_0010);
            }

            if (CheckVendor.NotValidResponse(_serverChallenge))
            {
                return(02_0008);
            }

            var clientResponse = new ClientResponse();

            clientResponse.SessionId = _serverChallenge.SessionId;

            clientResponse.ClientEvidence = Srp6Vendor.Srp6Response(_username, password, _serverChallenge.Salt,
                                                                    new BigInteger(_serverChallenge.ServerToken), out var token).ToByteArray();

            clientResponse.ClientToken = token.ToByteArray();

            clientResponse.ReportTime = DateTime.Now;

            var result = ApiCall.AuthFinish.Call(null, new MilvanethProtocol {
                Context = null, Data = clientResponse
            });

            if (!(result.Data is ServerResponse sr))
            {
                return(02_0007);
            }

            if (!CheckVendor.NotValidResponse(sr))
            {
                _serverResponse = sr;
            }

            return(sr.Message);
        }
Esempio n. 27
0
        public int Step1(string username, string email, long[] trace)
        {
            if (CheckVendor.NotValidUsername(username) ||
                CheckVendor.NotValidEmail(email) ||
                CheckVendor.NotValidTrace(trace))
            {
                return(03_0010);
            }

            _username = username;
            _email    = email;
            _trace    = trace;
            var recoveryEmail = new RecoveryEmail();

            recoveryEmail.Username = username;

            recoveryEmail.Email = email;

            recoveryEmail.Trace = trace;

            recoveryEmail.ReportTime = DateTime.Now;

            var result = ApiCall.AccountRecoveryEmail.Call(null, new MilvanethProtocol {
                Context = null, Data = recoveryEmail
            });

            if (!(result.Data is ServerResponse sr))
            {
                return(02_0007);
            }

            if (!CheckVendor.NotValidResponse(sr))
            {
                _serverResponse = sr;
            }

            return(sr.Message);
        }
        private void Button_Click_2(object sender, RoutedEventArgs e)
        {
            var code = VerifyCode.Text;

            _sr.InteractiveTask(() =>
            {
                int ret;

                try
                {
                    if (!(_sr.Procedure is RecoveryProcedure local))
                    {
                        ret = 02_0009;
                        goto FAIL;
                    }

                    ret = local.Step2(code);
                }
                catch (HttpRequestException ex)
                {
                    ret = 02_0000 + (int)(ex.Data["StatusCode"]);
                }
                catch (Exception)
                {
                    ret = 02_0000;
                }

                FAIL:
                if (CheckVendor.NotValidResponseCode(ret))
                {
                    Growl.Error(MessageVendor.FormatError(ret));
                }
                else
                {
                    SubwindowNavigator.Navigate(SubwindowPage.Recovery2);
                }
            });
        }
Esempio n. 29
0
        public int Step2(int itemid, out PackedResultBundle res)
        {
            res = null;

            if (CheckVendor.NotValidItemId(itemid) || !ApiVendor.HasToken())
            {
                return(02_0008);
            }

            var result = ApiCall.DataItem.Call(itemid.ToString(), null);

            if (!(result.Data is PackedResultBundle pr))
            {
                return(02_0007);
            }

            if (CheckVendor.NotValidResponse(pr))
            {
                return(pr.Message);
            }

            res = pr;
            return(00_0000);
        }
Esempio n. 30
0
        public int Step2(out AccountStatus status)
        {
            status = null;

            if (!ApiVendor.HasToken())
            {
                return(02_0008);
            }

            var result = ApiCall.AccountStatus.Call(null, null);

            if (!(result.Data is AccountStatus ac))
            {
                return(02_0007);
            }

            if (CheckVendor.NotValidResponse(ac))
            {
                return(ac.Message);
            }

            status = ac;
            return(00_0000);
        }