lighstorm 0.0.5 → 0.0.7

Sign up to get free protection for your applications and to get access to all the features.
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