Ejemplo n.º 1
0
        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());
        }
Ejemplo n.º 2
0
        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());
        }
Ejemplo n.º 3
0
        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);
        }
Ejemplo n.º 4
0
 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);
     }
 }
Ejemplo n.º 5
0
 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));
 }
Ejemplo n.º 7
0
        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);
 }