public virtual async Task <IActionResult> ConnectToNode(string cryptoCode, ConnectToNodeRequest request) { var lightningClient = await GetLightningClient(cryptoCode, true); if (lightningClient == null) { return(NotFound()); } if (TryGetNodeInfo(request, out var nodeInfo)) { ModelState.AddModelError(nameof(request.NodeId), "A valid node info was not provided to connect to"); } if (CheckValidation(out var errorActionResult)) { return(errorActionResult); } try { await lightningClient.ConnectTo(nodeInfo); } catch (Exception e) { ModelState.AddModelError(string.Empty, e.Message); return(BadRequest(new ValidationProblemDetails(ModelState))); } return(Ok()); }
public virtual async Task <IActionResult> ConnectToNode(string cryptoCode, ConnectToNodeRequest request) { var lightningClient = await GetLightningClient(cryptoCode, true); if (request?.NodeURI is null) { ModelState.AddModelError(nameof(request.NodeURI), "A valid node info was not provided to connect to"); } if (!ModelState.IsValid) { return(this.CreateValidationError(ModelState)); } var result = await lightningClient.ConnectTo(request.NodeURI); switch (result) { case ConnectionResult.Ok: return(Ok()); case ConnectionResult.CouldNotConnect: return(this.CreateAPIError("could-not-connect", "Could not connect to the remote node")); } return(Ok()); }
public virtual async Task ConnectToLightningNode(string cryptoCode, ConnectToNodeRequest request, CancellationToken token = default) { if (request == null) { throw new ArgumentNullException(nameof(request)); } var response = await _httpClient.SendAsync( CreateHttpRequest($"api/v1/server/lightning/{cryptoCode}/connect", bodyPayload : request, method : HttpMethod.Post), token); await HandleResponse(response); }
private bool TryGetNodeInfo(ConnectToNodeRequest request, out NodeInfo nodeInfo) { nodeInfo = null; if (!string.IsNullOrEmpty(request.NodeInfo)) { return(NodeInfo.TryParse(request.NodeInfo, out nodeInfo)); } try { nodeInfo = new NodeInfo(new PubKey(request.NodeId), request.NodeHost, request.NodePort); return(true); } catch (Exception) { return(false); } }
public override Task <IActionResult> ConnectToNode(string cryptoCode, ConnectToNodeRequest request) { return(base.ConnectToNode(cryptoCode, request)); }
public override Task <IActionResult> ConnectToNode(string cryptoCode, ConnectToNodeRequest request, CancellationToken cancellationToken = default) { return(base.ConnectToNode(cryptoCode, request, cancellationToken)); }
public async Task <ActionResult> ConnectToLightningNode(ConnectToNodeRequest req) { await _btcpayService.ConnectToLightningNode(req); return(Ok()); }
public async Task ConnectToLightningNode(ConnectToNodeRequest req, CancellationToken cancellationToken = default) { await _client.ConnectToLightningNode(_storeId, CryptoCode, req, cancellationToken); }