public virtual async Task <IActionResult> CreateInvoice(string cryptoCode, CreateLightningInvoiceRequest request)
        {
            var lightningClient = await GetLightningClient(cryptoCode, false);

            if (lightningClient == null)
            {
                return(NotFound());
            }

            if (request.Amount < LightMoney.Zero)
            {
                ModelState.AddModelError(nameof(request.Amount), "Amount should be more or equals to 0");
            }

            if (request.Expiry <= TimeSpan.Zero)
            {
                ModelState.AddModelError(nameof(request.Expiry), "Expiry should be more than 0");
            }

            if (!ModelState.IsValid)
            {
                return(this.CreateValidationError(ModelState));
            }
            var invoice = await lightningClient.CreateInvoice(
                new CreateInvoiceParams(request.Amount, request.Description, request.Expiry)
            {
                PrivateRouteHints = request.PrivateRouteHints
            },
                CancellationToken.None);

            return(Ok(ToModel(invoice)));
        }
예제 #2
0
        public virtual async Task <IActionResult> CreateInvoice(string cryptoCode, CreateLightningInvoiceRequest request)
        {
            var lightningClient = await GetLightningClient(cryptoCode, false);

            if (lightningClient == null)
            {
                return(NotFound());
            }

            if (CheckValidation(out var errorActionResult))
            {
                return(errorActionResult);
            }

            try
            {
                var invoice = await lightningClient.CreateInvoice(
                    new CreateInvoiceParams(request.Amount, request.Description, request.Expiry)
                {
                    PrivateRouteHints = request.PrivateRouteHints
                },
                    CancellationToken.None);

                return(Ok(ToModel(invoice)));
            }
            catch (Exception e)
            {
                ModelState.AddModelError(string.Empty, e.Message);
                return(BadRequest(new ValidationProblemDetails(ModelState)));
            }
        }
 public virtual async Task<LightningInvoiceData> CreateLightningInvoice(string storeId, string cryptoCode,
     CreateLightningInvoiceRequest request, CancellationToken token = default)
 {
     if (request == null)
         throw new ArgumentNullException(nameof(request));
     var response = await _httpClient.SendAsync(
         CreateHttpRequest($"api/v1/stores/{storeId}/lightning/{cryptoCode}/invoices", bodyPayload: request,
             method: HttpMethod.Post), token);
     return await HandleResponse<LightningInvoiceData>(response);
 }
예제 #4
0
 public override Task <IActionResult> CreateInvoice(string cryptoCode, CreateLightningInvoiceRequest request)
 {
     return(base.CreateInvoice(cryptoCode, request));
 }
예제 #5
0
 public override Task <IActionResult> CreateInvoice(string cryptoCode, CreateLightningInvoiceRequest request, CancellationToken cancellationToken = default)
 {
     return(base.CreateInvoice(cryptoCode, request, cancellationToken));
 }
예제 #6
0
        public async Task <LightningInvoiceData> CreateLightningInvoice(string bitcoinCode, CreateLightningInvoiceRequest request,
                                                                        CancellationToken token = default)
        {
            if (request == null)
            {
                throw new ArgumentNullException(nameof(request));
            }
            var response = await _httpClient.SendAsync(
                CreateHttpRequest($"api/v1/server/lightning/{bitcoinCode}/invoices", bodyPayload : request,
                                  method : HttpMethod.Post), token);

            return(await HandleResponse <LightningInvoiceData>(response));
        }