lighstorm 0.0.13 → 0.0.15

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 (72) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +1 -1
  3. data/Gemfile.lock +7 -7
  4. data/README.md +2 -2
  5. data/adapters/connections/channel_node.rb +1 -0
  6. data/adapters/edges/payment/purpose.rb +3 -3
  7. data/adapters/edges/payment.rb +1 -3
  8. data/adapters/invoice.rb +0 -2
  9. data/adapters/wallet.rb +42 -0
  10. data/components/cache.rb +1 -1
  11. data/components/lnd.rb +24 -8
  12. data/controllers/action.rb +5 -0
  13. data/controllers/activity/all.rb +85 -20
  14. data/controllers/activity.rb +15 -6
  15. data/controllers/channel/actions/apply_gossip.rb +3 -4
  16. data/controllers/channel/actions/update_fee.rb +11 -7
  17. data/controllers/channel/all.rb +11 -7
  18. data/controllers/channel/find_by_id.rb +11 -11
  19. data/controllers/channel/mine.rb +10 -10
  20. data/controllers/channel.rb +25 -11
  21. data/controllers/concerns/impersonatable.rb +33 -0
  22. data/controllers/connection.rb +33 -0
  23. data/controllers/forward/all.rb +16 -12
  24. data/controllers/forward/group_by_channel.rb +2 -2
  25. data/controllers/forward.rb +19 -13
  26. data/controllers/invoice/actions/create.rb +21 -13
  27. data/controllers/invoice/actions/pay.rb +13 -12
  28. data/controllers/invoice/actions/pay_through_route.rb +2 -2
  29. data/controllers/invoice/all.rb +7 -7
  30. data/controllers/invoice/decode.rb +6 -6
  31. data/controllers/invoice/find_by_code.rb +7 -7
  32. data/controllers/invoice/find_by_secret_hash.rb +10 -6
  33. data/controllers/invoice.rb +46 -39
  34. data/controllers/node/actions/apply_gossip.rb +1 -1
  35. data/controllers/node/actions/pay.rb +13 -12
  36. data/controllers/node/all.rb +11 -7
  37. data/controllers/node/find_by_public_key.rb +11 -7
  38. data/controllers/node/myself.rb +6 -6
  39. data/controllers/node.rb +17 -11
  40. data/controllers/payment/actions/pay.rb +23 -19
  41. data/controllers/payment/all.rb +7 -4
  42. data/controllers/payment.rb +20 -14
  43. data/controllers/secret/valid_proof.rb +5 -5
  44. data/controllers/transaction/all.rb +6 -5
  45. data/controllers/transaction.rb +14 -6
  46. data/controllers/wallet/balance.rb +34 -0
  47. data/controllers/wallet.rb +19 -0
  48. data/docs/README.md +70 -7
  49. data/docs/_coverpage.md +1 -1
  50. data/docs/index.html +1 -1
  51. data/lighstorm.gemspec +1 -1
  52. data/models/activity.rb +3 -2
  53. data/models/connections/channel_node/fee.rb +5 -2
  54. data/models/connections/channel_node/policy.rb +3 -2
  55. data/models/connections/channel_node.rb +14 -4
  56. data/models/connections/forward_channel.rb +3 -2
  57. data/models/edges/channel/hop.rb +1 -1
  58. data/models/edges/channel.rb +5 -7
  59. data/models/edges/forward.rb +4 -3
  60. data/models/edges/groups/channel_forwards.rb +3 -2
  61. data/models/edges/payment.rb +4 -3
  62. data/models/errors.rb +16 -24
  63. data/models/invoice.rb +10 -4
  64. data/models/nodes/node.rb +10 -4
  65. data/models/secret.rb +10 -4
  66. data/models/wallet.rb +40 -0
  67. data/ports/dsl/lighstorm.rb +6 -2
  68. data/ports/grpc.rb +30 -2
  69. data/static/cache.rb +2 -0
  70. data/static/spec.rb +1 -1
  71. metadata +10 -5
  72. data/deleted.sh +0 -1
data/models/wallet.rb ADDED
@@ -0,0 +1,40 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative './satoshis'
4
+
5
+ module Lighstorm
6
+ module Models
7
+ class Wallet
8
+ attr_reader :_key, :at
9
+
10
+ def initialize(data)
11
+ @data = data
12
+
13
+ @_key = @data[:_key]
14
+ @at = @data[:at]
15
+ end
16
+
17
+ def lightning
18
+ @lightning ||= Satoshis.new(millisatoshis: @data[:lightning][:millisatoshis])
19
+ end
20
+
21
+ def bitcoin
22
+ @bitcoin ||= Satoshis.new(millisatoshis: @data[:bitcoin][:millisatoshis])
23
+ end
24
+
25
+ def total
26
+ @total ||= Satoshis.new(millisatoshis: @data[:total][:millisatoshis])
27
+ end
28
+
29
+ def to_h
30
+ {
31
+ _key: _key,
32
+ at: at,
33
+ lightning: lightning.to_h,
34
+ bitcoin: bitcoin.to_h,
35
+ total: total.to_h
36
+ }
37
+ end
38
+ end
39
+ end
40
+ end
@@ -12,6 +12,8 @@ require_relative '../../controllers/payment'
12
12
  require_relative '../../controllers/forward'
13
13
  require_relative '../../controllers/invoice'
14
14
  require_relative '../../controllers/activity'
15
+ require_relative '../../controllers/connection'
16
+ require_relative '../../controllers/wallet'
15
17
 
16
18
  module Lighstorm
17
19
  Node = Controllers::Node
@@ -20,11 +22,13 @@ module Lighstorm
20
22
  Forward = Controllers::Forward
21
23
  Invoice = Controllers::Invoice
22
24
  Activity = Controllers::Activity
25
+ Connection = Controllers::Connection
26
+ Wallet = Controllers::Wallet
23
27
 
24
28
  Satoshis = Models::Satoshis
25
29
 
26
- def self.connect!(config)
27
- LND.instance.connect!(config)
30
+ def self.connect!(...)
31
+ Controllers::Connection.connect!(...)
28
32
  end
29
33
 
30
34
  def self.inject_middleware!(middleware_lambda)
data/ports/grpc.rb CHANGED
@@ -7,14 +7,42 @@ require_relative 'grpc/session'
7
7
  module Lighstorm
8
8
  module Ports
9
9
  class GRPC
10
- def initialize(service, service_key, &handler)
10
+ class Impersonatable
11
+ def initialize(id)
12
+ @id = id
13
+ end
14
+
15
+ def session
16
+ GRPCSession.new(self)
17
+ end
18
+
19
+ def method_missing(method_name, *_args, &block)
20
+ service_key = method_name.to_sym
21
+
22
+ unless LND.instance.as(@id).respond_to?(service_key)
23
+ raise ArgumentError,
24
+ "Method `#{method_name}` doesn't exist."
25
+ end
26
+
27
+ GRPC.new(LND.instance.as(@id).send(service_key), service_key, @id, &block)
28
+ end
29
+
30
+ def respond_to_missing?(method_name, include_private = false)
31
+ service_key = method_name.to_sym
32
+
33
+ LND.instance.as(@id).respond_to?(service_key) || super
34
+ end
35
+ end
36
+
37
+ def initialize(service, service_key, as = nil, &handler)
11
38
  @service = service
12
39
  @service_key = service_key
13
40
  @handler = handler
41
+ @as = as
14
42
  end
15
43
 
16
44
  def call!(call_key, *args, &block)
17
- key = "#{@service_key}.#{call_key}"
45
+ key = "[#{@as}]:#{@service_key}.#{call_key}"
18
46
 
19
47
  if block.nil?
20
48
  response = Cache.for(key, params: args&.first) do
data/static/cache.rb CHANGED
@@ -3,6 +3,8 @@
3
3
  module Lighstorm
4
4
  module Static
5
5
  CACHE = {
6
+ lightning_channel_balance: false,
7
+ lightning_wallet_balance: false,
6
8
  lightning_get_transactions: false,
7
9
  lightning_update_channel_policy: false,
8
10
  lightning_add_invoice: false,
data/static/spec.rb CHANGED
@@ -4,7 +4,7 @@ module Lighstorm
4
4
  module Static
5
5
  SPEC = {
6
6
  name: 'lighstorm',
7
- version: '0.0.13',
7
+ version: '0.0.15',
8
8
  author: 'icebaker',
9
9
  summary: 'API for interacting with a Lightning Node.',
10
10
  description: 'Lighstorm is an opinionated abstraction layer on top of the lnd-client for interacting with a Lightning Node.',
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: lighstorm
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.13
4
+ version: 0.0.15
5
5
  platform: ruby
6
6
  authors:
7
7
  - icebaker
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-03-16 00:00:00.000000000 Z
11
+ date: 2023-03-26 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: dotenv
@@ -36,14 +36,14 @@ dependencies:
36
36
  requirements:
37
37
  - - "~>"
38
38
  - !ruby/object:Gem::Version
39
- version: 0.0.6
39
+ version: 0.0.9
40
40
  type: :runtime
41
41
  prerelease: false
42
42
  version_requirements: !ruby/object:Gem::Requirement
43
43
  requirements:
44
44
  - - "~>"
45
45
  - !ruby/object:Gem::Version
46
- version: 0.0.6
46
+ version: 0.0.9
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: zache
49
49
  requirement: !ruby/object:Gem::Requirement
@@ -86,6 +86,7 @@ files:
86
86
  - adapters/invoice.rb
87
87
  - adapters/nodes/node.rb
88
88
  - adapters/transaction.rb
89
+ - adapters/wallet.rb
89
90
  - components/cache.rb
90
91
  - components/lnd.rb
91
92
  - controllers/action.rb
@@ -97,6 +98,8 @@ files:
97
98
  - controllers/channel/all.rb
98
99
  - controllers/channel/find_by_id.rb
99
100
  - controllers/channel/mine.rb
101
+ - controllers/concerns/impersonatable.rb
102
+ - controllers/connection.rb
100
103
  - controllers/forward.rb
101
104
  - controllers/forward/all.rb
102
105
  - controllers/forward/group_by_channel.rb
@@ -120,7 +123,8 @@ files:
120
123
  - controllers/secret/valid_proof.rb
121
124
  - controllers/transaction.rb
122
125
  - controllers/transaction/all.rb
123
- - deleted.sh
126
+ - controllers/wallet.rb
127
+ - controllers/wallet/balance.rb
124
128
  - docs/.nojekyll
125
129
  - docs/README.md
126
130
  - docs/_coverpage.md
@@ -159,6 +163,7 @@ files:
159
163
  - models/satoshis.rb
160
164
  - models/secret.rb
161
165
  - models/transaction.rb
166
+ - models/wallet.rb
162
167
  - ports/dsl/lighstorm.rb
163
168
  - ports/dsl/lighstorm/errors.rb
164
169
  - ports/grpc.rb
data/deleted.sh DELETED
@@ -1 +0,0 @@
1
- deleted.sh