Add PaymentResponse wrapper

This is an experimental wrapper around the send_payment shortcut calls.
The goal is to provide a simple interface to check if the payment was
successful.
This commit is contained in:
bumi 2020-08-29 19:40:45 +02:00
parent f31a499e49
commit 9b1499616d
3 changed files with 33 additions and 2 deletions

View File

@ -11,6 +11,7 @@ module Lnrpc
class Error < StandardError; end
autoload :Client, 'lnrpc/client'
autoload :GrpcWrapper, 'lnrpc/grpc_wrapper'
autoload :PaymentResponse, 'lnrpc/payment_response'
autoload :MacaroonInterceptor, 'lnrpc/macaroon_interceptor'
PREIMAGE_BYTE_LENGTH = 32

View File

@ -75,12 +75,12 @@ module Lnrpc
args[:dest_custom_records][Lnrpc::KEY_SEND_PREIMAGE_TYPE] ||= Lnrpc.create_preimage
args[:payment_hash] ||= Digest::SHA256.digest(args[:dest_custom_records][Lnrpc::KEY_SEND_PREIMAGE_TYPE])
args[:timeout_seconds] ||= 60
router.send_payment_v2(args)
PaymentResponse.new(router.send_payment_v2(args))
end
def pay(args)
args[:timeout_seconds] ||= 60
router.send_payment_v2(args)
PaymentResponse.new(router.send_payment_v2(args))
end
def inspect

View File

@ -0,0 +1,30 @@
module Lnrpc
class PaymentResponse
attr_reader :grpc_response, :exception
def initialize(send_payment_response)
@grpc_response = send_payment_response
end
def states
@states ||= response_array.map(&:status)
end
def success?
return false if exception
@success ||= states.include?(:SUCCEEDED)
end
def fee
@fee ||= response_array.sum(&:fee)
end
def response_array
@response_array ||= @grpc_response.to_a
rescue GRPC::BadStatus => e
@exception = e
[]
end
end
end