public IActionResult GetColdStakingAddress([FromQuery] GetColdStakingAddressRequest request)
        {
            Guard.NotNull(request, nameof(request));

            // Checks that the request is valid.
            if (!this.ModelState.IsValid)
            {
                this.logger.LogTrace("(-)[MODEL_STATE_INVALID]");
                return(ModelStateErrors.BuildErrorResponse(this.ModelState));
            }

            try
            {
                HdAddress address = this.ColdStakingManager.GetFirstUnusedColdStakingAddress(request.WalletName, request.IsColdWalletAddress);

                var model = new GetColdStakingAddressResponse
                {
                    Address = request.Segwit ? address?.Bech32Address : address?.Address
                };

                if (model.Address == null)
                {
                    throw new WalletException("The cold staking account does not exist.");
                }

                this.logger.LogTrace("(-):'{0}'", model);
                return(this.Json(model));
            }
            catch (Exception e)
            {
                this.logger.LogError("Exception occurred: {0}", e.ToString());
                this.logger.LogTrace("(-)[ERROR]");
                return(ErrorHelpers.BuildErrorResponse(HttpStatusCode.BadRequest, e.Message, e.ToString()));
            }
        }
Exemplo n.º 2
0
        public IActionResult GetProfileAddress([FromQuery] GetProfileAddressRequest request)
        {
            Guard.NotNull(request, nameof(request));

            // Checks the request is valid.
            if (!this.ModelState.IsValid)
            {
                return(ModelStateErrors.BuildErrorResponse(this.ModelState));
            }

            try
            {
                var result  = new GetColdStakingAddressResponse();
                var account = this.ColdStakingManager.GetOrCreateColdStakingAccount(Uri.UnescapeDataString(request.WalletName), request.IsColdWalletAccount, Uri.UnescapeDataString(request.WalletPassword)).Name;
                if (account != null)
                {
                    HdAddress address = this.ColdStakingManager.GetFirstColdStakingAddress(Uri.UnescapeDataString(request.WalletName), request.IsColdWalletAccount);
                    if (address != null)
                    {
                        result.Address = request.Segwit ? address?.Bech32Address : address?.Address;
                    }
                }
                return(this.Json(result));
            }
            catch (Exception e)
            {
                this.logger.LogError("Exception occurred: {0}", e.ToString());
                return(ErrorHelpers.BuildErrorResponse(HttpStatusCode.BadRequest, e.Message, e.ToString()));
            }
        }
        /// <summary>
        ///     Gets Cold Staking Address
        /// </summary>
        public async Task <GetColdStakingAddressResponse> GetColdStakingAddress(string walletName, bool isColdWalletAddress, bool segwit)
        {
            try
            {
                GetColdStakingAddressResponse response =
                    await base.SendGet <GetColdStakingAddressResponse>(
                        $"api/coldstaking/cold-staking-address?walletName={walletName}&Segwit={segwit}&isColdWalletAddress={isColdWalletAddress}"
                        );

                Guard.Null(response, nameof(response), "'api/Staking/getstakinginfo' API Response Was Null!");

                return(response);
            }
            catch (Exception ex)
            {
                logger.LogDebug($"An Error '{ex.Message}' Occured When Getting Staking Info!", ex);
                return(null);
            }
        }