public async Task <IActionResult> RecoverViaExtPubKey([FromBody] WalletExtPubRecoveryRequest request,
                                                       CancellationToken cancellationToken = default(CancellationToken))
 {
     return(await this.Execute(request, cancellationToken, async (req, token) =>
     {
         await this.walletService.RecoverViaExtPubKey(req, token);
         return Ok();
     }));
 }
示例#2
0
        private void RecoverViaExtPubKey(string walletName, string extPubKey, int accountIndex)
        {
            var request = new WalletExtPubRecoveryRequest
            {
                ExtPubKey    = extPubKey,
                AccountIndex = accountIndex,
                Name         = walletName
            };

            this.send_api_post_request(RecoverViaExtPubKeyUri, request);
            this.response.StatusCode.Should().Be(StatusCodes.Status200OK);
        }
        public IActionResult RecoverViaExtPubKey([FromBody] WalletExtPubRecoveryRequest request)
        {
            Guard.NotNull(request, nameof(request));
            this.logger.LogTrace("({0}.{1}:'{2}')", nameof(request), nameof(request.Name), request.Name);

            if (!this.ModelState.IsValid)
            {
                this.logger.LogTrace("(-)[MODEL_STATE_INVALID]");
                return(BuildErrorResponse(this.ModelState));
            }

            try
            {
                string accountExtPubKey =
                    this.network.IsBitcoin()
                        ? request.ExtPubKey
                        : LegacyExtPubKeyConverter.ConvertIfInLegacyStratisFormat(request.ExtPubKey, this.network);

                this.walletManager.RecoverWallet(request.Name, ExtPubKey.Parse(accountExtPubKey), request.AccountIndex,
                                                 request.CreationDate);

                this.walletSyncManager.SyncFromDate(request.CreationDate);

                this.logger.LogTrace("(-)");
                return(this.Ok());
            }
            catch (WalletException e)
            {
                // Wallet already exists.
                this.logger.LogError("Exception occurred: {0}", e.ToString());
                return(ErrorHelpers.BuildErrorResponse(HttpStatusCode.Conflict, e.Message, e.ToString()));
            }
            catch (FileNotFoundException e)
            {
                // Wallet does not exist.
                this.logger.LogError("Exception occurred: {0}", e.ToString());
                return(ErrorHelpers.BuildErrorResponse(HttpStatusCode.NotFound, "Wallet not found.", e.ToString()));
            }
            catch (Exception e)
            {
                this.logger.LogError("Exception occurred: {0}", e.ToString());
                return(ErrorHelpers.BuildErrorResponse(HttpStatusCode.BadRequest, e.Message, e.ToString()));
            }
            finally
            {
                this.logger.LogTrace("(-)");
            }
        }