lnurl 1.0.1 → 1.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (5) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile.lock +5 -5
  3. data/README.md +12 -0
  4. data/lib/lnurl.rb +18 -5
  5. metadata +6 -6
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: d7443ff0fc221e5247543a75d527c698530044a6393d4fc801df66007a434778
4
- data.tar.gz: c988ccbcd5bab31a03611f0e6d47558285e3adff4fd973d948854e8677e35253
3
+ metadata.gz: f06941b90b37171d472eeec93f3decbd39f266dfcd561dc7a9e2b40169941e89
4
+ data.tar.gz: 548acd35d90b87c560a259f4efeba41ddd265197969c5e74acf0aa22d67bd999
5
5
  SHA512:
6
- metadata.gz: edcd40864609a8c8d769009591d38bf831f226bc0edaeea0f06a368dcee87a1adc71b67d555c3a6ae8099512e6aec88ceff2d51ba95e0ea7fc5c1db71bcd9324
7
- data.tar.gz: 63a3143050e8b271a0aa33ecb07bbaf76bf29e3f3105d2b9afcdd50631539dbc188bee4d0dcb7764bd81633b17543c50314642a74fc9ef5b30469d39b3e576ad
6
+ metadata.gz: ac21021140798716061f2505fd4486624004c9d9fae2178cfc77d1fcb5a927c06dd62f580eb198b67fbcfa37b29b07364e9367d6519d80e482b3314549518b90
7
+ data.tar.gz: aba3f442248206c0aea044ba39b5cb25772db51094b7942bf15888f01da3093fc5f528e88f3709cb98c1670521b3eddc0c9d1b335491d6c60e20e207761c62a4
data/Gemfile.lock CHANGED
@@ -1,13 +1,13 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- lnurl (0.1.1)
5
- bech32 (~> 1.2.0)
4
+ lnurl (1.1.0)
5
+ bech32 (~> 1.1)
6
6
 
7
7
  GEM
8
8
  remote: https://rubygems.org/
9
9
  specs:
10
- bech32 (1.2.1)
10
+ bech32 (1.4.2)
11
11
  thor (>= 1.1.0)
12
12
  diff-lcs (1.4.4)
13
13
  rake (12.3.3)
@@ -24,7 +24,7 @@ GEM
24
24
  diff-lcs (>= 1.2.0, < 2.0)
25
25
  rspec-support (~> 3.10.0)
26
26
  rspec-support (3.10.2)
27
- thor (1.1.0)
27
+ thor (1.2.2)
28
28
 
29
29
  PLATFORMS
30
30
  ruby
@@ -35,4 +35,4 @@ DEPENDENCIES
35
35
  rspec (~> 3.0)
36
36
 
37
37
  BUNDLED WITH
38
- 2.2.23
38
+ 2.4.4
data/README.md CHANGED
@@ -42,6 +42,18 @@ lnurl = Lnurl.decode('LNURL1DP68GURN8GHJ7MRWW4EXCTNRDAKJ7URP0YVM59LW')
42
42
  lnurl.uri # => #<URI::HTTPS https://lnurl.com/pay>
43
43
  ```
44
44
 
45
+ By default we accept long LNURLs but you can configure a custom max length:
46
+ ```ruby
47
+ lnurl = Lnurl.decode(a_short_lnurl, 90)
48
+ ```
49
+
50
+ ### [Lightning Address](https://github.com/andrerfneves/lightning-address)
51
+
52
+ ```ruby
53
+ lnurl = Lnurl.from_lightning_address('user@lnurl.com')
54
+ lnurl.uri # => #<URI::HTTPS https://lnurl.com/.well-known/lnurlp/user>
55
+ ```
56
+
45
57
  ### LNURL responses
46
58
 
47
59
  ```ruby
data/lib/lnurl.rb CHANGED
@@ -4,7 +4,11 @@ require 'json'
4
4
  require 'ostruct'
5
5
 
6
6
  class Lnurl
7
- VERSION = '1.0.1'.freeze
7
+ VERSION = '1.1.0'.freeze
8
+
9
+ # Maximum integer size
10
+ # Useful for max_length when decoding
11
+ MAX_INTEGER = 2**31 - 1
8
12
 
9
13
  InvoiceResponse = Class.new(OpenStruct)
10
14
  LnurlResponse = Class.new(OpenStruct) do
@@ -61,17 +65,26 @@ class Lnurl
61
65
  return decoded.match?(URI.regexp) # check if the URI is valid
62
66
  end
63
67
 
64
- def self.decode(lnurl)
65
- Lnurl.new(decode_raw(lnurl))
68
+ def self.decode(lnurl, max_length = MAX_INTEGER)
69
+ Lnurl.new(decode_raw(lnurl, max_length))
66
70
  end
67
71
 
68
- def self.decode_raw(lnurl)
72
+ def self.decode_raw(lnurl, max_length = MAX_INTEGER)
69
73
  lnurl = lnurl.gsub(/^lightning:/, '')
70
- hrp, data, sepc = Bech32.decode(lnurl)
74
+ hrp, data, sepc = Bech32.decode(lnurl, max_length)
71
75
  # raise 'no lnurl' if hrp != HRP
72
76
  convert_bits(data, 5, 8, false).pack('C*').force_encoding('utf-8')
73
77
  end
74
78
 
79
+ def self.from_lightning_address(lightning_address)
80
+ Lnurl.new(decode_lightning_address(lightning_address))
81
+ end
82
+
83
+ def self.decode_lightning_address(lightning_address)
84
+ username, domain = lightning_address.split('@')
85
+ "https://#{domain}/.well-known/lnurlp/#{username}"
86
+ end
87
+
75
88
  # FROM: https://github.com/azuchi/bech32rb/blob/master/lib/bech32/segwit_addr.rb
76
89
  def self.convert_bits(data, from, to, padding=true)
77
90
  acc = 0
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: lnurl
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.1
4
+ version: 1.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Michael Bumann
8
- autorequire:
8
+ autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2021-10-13 00:00:00.000000000 Z
11
+ date: 2023-09-26 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bech32
@@ -51,7 +51,7 @@ metadata:
51
51
  homepage_uri: https://github.com/bumi/lnurl-ruby
52
52
  source_code_uri: https://github.com/bumi/lnurl-ruby
53
53
  funding: lightning:02ad33d99d0bb3bf3bb8ec8e089cbefa8fd7de23a13cfa59aec9af9730816be76f
54
- post_install_message:
54
+ post_install_message:
55
55
  rdoc_options: []
56
56
  require_paths:
57
57
  - lib
@@ -66,8 +66,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
66
66
  - !ruby/object:Gem::Version
67
67
  version: '0'
68
68
  requirements: []
69
- rubygems_version: 3.2.23
70
- signing_key:
69
+ rubygems_version: 3.4.1
70
+ signing_key:
71
71
  specification_version: 4
72
72
  summary: LNURL implementation for ruby
73
73
  test_files: []