public IActionResult Recover([FromBody] WalletRecoveryRequest request) { // checks the request is valid if (!this.ModelState.IsValid) { var errors = this.ModelState.Values.SelectMany(e => e.Errors.Select(m => m.ErrorMessage)); return(ErrorHelpers.BuildErrorResponse(HttpStatusCode.BadRequest, "Formatting error", string.Join(Environment.NewLine, errors))); } try { // get the wallet folder DirectoryInfo walletFolder = this.GetWalletFolder(); Wallet wallet = this.walletManager.RecoverWallet(request.Password, request.Name, request.Mnemonic, request.CreationDate, null); // start syncing the wallet from the creation date this.walletSyncManager.SyncFrom(request.CreationDate); return(this.Ok()); } catch (InvalidOperationException e) { // indicates that this wallet already exists return(ErrorHelpers.BuildErrorResponse(HttpStatusCode.Conflict, "This wallet already exists.", e.ToString())); } catch (FileNotFoundException e) { // indicates that this wallet does not exist return(ErrorHelpers.BuildErrorResponse(HttpStatusCode.NotFound, "Wallet not found.", e.ToString())); } catch (Exception e) { return(ErrorHelpers.BuildErrorResponse(HttpStatusCode.BadRequest, e.Message, e.ToString())); } }
public IActionResult Recover([FromBody] WalletRecoveryRequest walletRecovery) { // checks the request is valid if (!this.ModelState.IsValid) { var errors = this.ModelState.Values.SelectMany(e => e.Errors.Select(m => m.ErrorMessage)); return(ErrorHelpers.BuildErrorResponse(HttpStatusCode.BadRequest, "Formatting error", string.Join(Environment.NewLine, errors))); } try { var wallet = this.walletWrapper.Recover(walletRecovery.Password, walletRecovery.FolderPath, walletRecovery.Name, walletRecovery.Network, walletRecovery.Mnemonic); return(this.Json(wallet)); } catch (FileNotFoundException e) { // indicates that this wallet does not exist return(ErrorHelpers.BuildErrorResponse(HttpStatusCode.NotFound, "Wallet not found.", e.ToString())); } catch (SecurityException e) { // indicates that the password is wrong return(ErrorHelpers.BuildErrorResponse(HttpStatusCode.Forbidden, "Wrong password, please try again.", e.ToString())); } catch (Exception e) { return(ErrorHelpers.BuildErrorResponse(HttpStatusCode.BadRequest, e.Message, e.ToString())); } }
public async Task <IActionResult> Recover([FromBody] WalletRecoveryRequest request, CancellationToken cancellationToken = default(CancellationToken)) { return(await this.Execute(request, cancellationToken, async (req, token) => { await this.walletService.RecoverWallet(req, token); return Ok(); })); }
public IActionResult Recover([FromBody] WalletRecoveryRequest request) { Guard.NotNull(request, nameof(request)); this.logger.LogTrace("({0}.{1}:'{2}')", nameof(request), nameof(request.Name), request.Name); // checks the request is valid if (!this.ModelState.IsValid) { return(BuildErrorResponse(this.ModelState)); } try { Wallet wallet = this.walletManager.RecoverWallet(request.Password, request.Name, request.Mnemonic, request.CreationDate); // start syncing the wallet from the creation date this.walletSyncManager.SyncFromDate(request.CreationDate); return(this.Ok()); } catch (WalletException e) { // indicates that this wallet already exists this.logger.LogError("Exception occurred: {0}", e.ToString()); return(ErrorHelpers.BuildErrorResponse(HttpStatusCode.Conflict, e.Message, e.ToString())); } catch (FileNotFoundException e) { // indicates that this 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("(-)"); } }
public IActionResult Recover([FromBody] WalletRecoveryRequest request) { Guard.NotNull(request, nameof(request)); // checks the request is valid if (!this.ModelState.IsValid) { var errors = this.ModelState.Values.SelectMany(e => e.Errors.Select(m => m.ErrorMessage)); return(ErrorHelpers.BuildErrorResponse(HttpStatusCode.BadRequest, "Formatting error", string.Join(Environment.NewLine, errors))); } try { Wallet wallet = this.walletManager.RecoverWallet(request.Password, request.Name, request.Mnemonic, request.CreationDate, null); // start syncing the wallet from the creation date this.walletSyncManager.SyncFromDate(request.CreationDate); return(this.Ok()); } catch (WalletException e) { // indicates that this wallet already exists this.logger.LogError("Exception occurred: {0}", e.ToString()); return(ErrorHelpers.BuildErrorResponse(HttpStatusCode.Conflict, e.Message, e.ToString())); } catch (FileNotFoundException e) { // indicates that this 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())); } }
/// <summary> /// Recovers a wallet. /// </summary> /// <param name="request">The object containing the parameters used to recover a wallet.</param> /// <returns></returns> public void Recover(WalletRecoveryRequest request) { Guard.NotNull(request, nameof(request)); // checks the request is valid //if (!this.ModelState.IsValid) //{ // return BuildErrorResponse(this.ModelState); //} try { Wallet wallet = this.walletManager.RecoverWallet(request.Password, request.Name, request.Mnemonic, request.CreationDate); // start syncing the wallet from the creation date this.walletSyncManager.SyncFromDate(request.CreationDate); //return this.Ok(); } catch (WalletException e) { // indicates that this wallet already exists this.logger.LogError("Exception occurred: {0}", e.ToString()); //return ErrorHelpers.BuildErrorResponse(HttpStatusCode.Conflict, e.Message, e.ToString()); } catch (FileNotFoundException e) { // indicates that this 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()); } }
public IActionResult Recover([FromBody] WalletRecoveryRequest request) { Guard.NotNull(request, nameof(request)); // checks the request is valid if (!this.ModelState.IsValid) { return(ModelStateErrors.BuildErrorResponse(this.ModelState)); } try { Wallet wallet = this.walletManager.RecoverWallet(request.Password, request.Name, request.Mnemonic, request.CreationDate, passphrase: request.Passphrase); this.SyncFromBestHeightForRecoveredWallets(request.CreationDate); return(this.Ok()); } catch (WalletException e) { // indicates that this wallet already exists this.logger.LogError("Exception occurred: {0}", e.ToString()); return(ErrorHelpers.BuildErrorResponse(HttpStatusCode.Conflict, e.Message, e.ToString())); } catch (FileNotFoundException e) { // indicates that this 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())); } }
private async Task <bool> RestoreWalletAsync(int apiPort, string chainName, string walletName) { Console.WriteLine($"You have chosen to restore your {chainName} wallet."); string mnemonic; string passphrase; string password; do { Console.WriteLine($"Please enter your 12-Words used to recover your wallet:"); mnemonic = Console.ReadLine(); Console.WriteLine("Please enter your wallet passphrase:"); passphrase = Console.ReadLine(); Console.WriteLine("Please enter the wallet password used to encrypt the wallet:"); password = Console.ReadLine(); if (!string.IsNullOrEmpty(mnemonic) && !string.IsNullOrEmpty(passphrase) && !string.IsNullOrEmpty(password)) { break; } Console.WriteLine("ERROR: Please ensure that you enter all the wallet details."); } while (true); var walletRecoveryRequest = new WalletRecoveryRequest() { CreationDate = new DateTime(2020, 11, 1), Mnemonic = mnemonic, Name = walletName, Passphrase = passphrase, Password = password }; try { await $"http://localhost:{apiPort}/api".AppendPathSegment("wallet/recover").PostJsonAsync(walletRecoveryRequest); } catch (Exception ex) { Console.WriteLine($"ERROR: An exception occurred trying to recover your {chainName} wallet: {ex}"); return(false); } WalletInfoModel walletInfoModel = await $"http://localhost:{apiPort}/api".AppendPathSegment("Wallet/list-wallets").GetJsonAsync <WalletInfoModel>(); if (walletInfoModel.WalletNames.Contains(walletName)) { Console.WriteLine($"SUCCESS: {chainName} wallet has been restored."); } else { Console.WriteLine($"ERROR: {chainName} wallet failed to be restored, exiting the registration process."); return(false); } try { Console.WriteLine($"Your {chainName} wallet will now be resynced, please be patient..."); var walletSyncRequest = new WalletSyncRequest() { All = true, WalletName = walletName }; await $"http://localhost:{apiPort}/api".AppendPathSegment("wallet/sync-from-date").PostJsonAsync(walletSyncRequest); } catch (Exception ex) { Console.WriteLine($"ERROR: An exception occurred trying to resync your {chainName} wallet: {ex}"); return(false); } return(true); }