lighstorm 0.0.5 → 0.0.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (38) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile.lock +3 -3
  3. data/README.md +17 -55
  4. data/adapters/connections/channel_node/fee.rb +1 -1
  5. data/adapters/connections/channel_node/policy.rb +6 -6
  6. data/adapters/connections/channel_node.rb +1 -1
  7. data/adapters/connections/payment_channel.rb +2 -2
  8. data/adapters/edges/channel.rb +7 -7
  9. data/adapters/edges/forward.rb +3 -3
  10. data/adapters/edges/payment.rb +1 -1
  11. data/adapters/invoice.rb +16 -1
  12. data/adapters/payment_request.rb +14 -3
  13. data/components/cache.rb +8 -5
  14. data/controllers/action.rb +24 -0
  15. data/controllers/channel/actions/apply_gossip.rb +18 -18
  16. data/controllers/channel/actions/update_fee.rb +33 -22
  17. data/controllers/forward/group_by_channel.rb +3 -3
  18. data/controllers/invoice/actions/create.rb +39 -11
  19. data/controllers/invoice/actions/pay_through_route.rb +1 -1
  20. data/controllers/invoice.rb +3 -3
  21. data/docs/README.md +405 -140
  22. data/docs/_coverpage.md +6 -1
  23. data/docs/index.html +1 -1
  24. data/models/connections/channel_node/accounting.rb +1 -1
  25. data/models/connections/channel_node/fee.rb +5 -4
  26. data/models/connections/channel_node/htlc.rb +4 -4
  27. data/models/connections/forward_channel.rb +1 -1
  28. data/models/connections/payment_channel.rb +4 -4
  29. data/models/edges/channel/accounting.rb +5 -5
  30. data/models/edges/forward.rb +3 -3
  31. data/models/edges/groups/channel_forwards/analysis.rb +8 -8
  32. data/models/edges/payment.rb +3 -3
  33. data/models/errors.rb +1 -1
  34. data/models/payment_request.rb +2 -2
  35. data/models/satoshis.rb +12 -12
  36. data/static/cache.rb +2 -0
  37. data/static/spec.rb +1 -1
  38. metadata +3 -2
@@ -2,33 +2,61 @@
2
2
 
3
3
  require_relative '../../../ports/grpc'
4
4
  require_relative '../../../models/errors'
5
+ require_relative '../../invoice'
6
+ require_relative '../../action'
5
7
 
6
8
  module Lighstorm
7
9
  module Controllers
8
10
  module Invoice
9
11
  module Create
10
- def self.perform(description: nil, milisatoshis: nil, preview: false, fake: false)
11
- raise Errors::ToDoError, self
12
+ def self.call(grpc_request)
13
+ Lighstorm::Ports::GRPC.send(grpc_request[:service]).send(
14
+ grpc_request[:method], grpc_request[:params]
15
+ ).to_h
16
+ end
12
17
 
13
- grpc_request = {
18
+ def self.prepare(description: nil, millisatoshis: nil)
19
+ {
14
20
  service: :lightning,
15
21
  method: :add_invoice,
16
22
  params: {
17
23
  memo: description,
18
- value_msat: milisatoshis
24
+ value_msat: millisatoshis
19
25
  }
20
26
  }
27
+ end
28
+
29
+ def self.dispatch(grpc_request, &vcr)
30
+ vcr.nil? ? call(grpc_request) : vcr.call(-> { call(grpc_request) }, :dispatch)
31
+ end
32
+
33
+ def self.adapt(response)
34
+ Lighstorm::Adapter::Invoice.add_invoice(response)
35
+ end
36
+
37
+ def self.fetch(adapted, &vcr)
38
+ FindBySecretHash.data(adapted[:request][:secret][:hash], &vcr)
39
+ end
40
+
41
+ def self.model(data)
42
+ FindBySecretHash.model(data)
43
+ end
44
+
45
+ def self.perform(description: nil, millisatoshis: nil, preview: false, &vcr)
46
+ grpc_request = prepare(
47
+ description: description, millisatoshis: millisatoshis
48
+ )
21
49
 
22
50
  return grpc_request if preview
23
51
 
24
- # expiry: Default is 86400 (24 hours).
25
- response = LND.instance.middleware("lightning.#{grpc_request[:method]}") do
26
- LND.instance.client.lightning.send(grpc_request[:method], grpc_request[:params])
27
- end
52
+ response = dispatch(grpc_request, &vcr)
53
+
54
+ adapted = adapt(response)
55
+
56
+ data = fetch(adapted, &vcr)
57
+ model = self.model(data)
28
58
 
29
- # TODO
30
- # find_by_secret_hash(invoice.r_hash.unpack1('H*'))
31
- # response
59
+ Action::Output.new({ response: response, result: model })
32
60
  end
33
61
  end
34
62
  end
@@ -36,7 +36,7 @@ module Lighstorm
36
36
  begin
37
37
  route = LND.instance.middleware('router.build_route') do
38
38
  LND.instance.client.router.build_route(
39
- amt_msat: amount.milisatoshis,
39
+ amt_msat: amount.millisatoshis,
40
40
  outgoing_chan_id: channels.first.id.to_i,
41
41
  hop_pubkeys: hops_public_keys.map { |hpk| [hpk].pack('H*') },
42
42
  payment_addr: [address].pack('H*')
@@ -23,12 +23,12 @@ module Lighstorm
23
23
  FindBySecretHash.model(FindBySecretHash.data(secret_hash))
24
24
  end
25
25
 
26
- def self.create(description: nil, milisatoshis: nil, preview: false, fake: false)
26
+ def self.create(description: nil, millisatoshis: nil, preview: false, &vcr)
27
27
  Create.perform(
28
28
  description: description,
29
- milisatoshis: milisatoshis,
29
+ millisatoshis: millisatoshis,
30
30
  preview: preview,
31
- fake: fake
31
+ &vcr
32
32
  )
33
33
  end
34
34
  end