btcpay 0.1.0
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.
- checksums.yaml +7 -0
- data/.gitignore +15 -0
- data/.rspec +3 -0
- data/.rubocop.yml +19 -0
- data/.travis.yml +6 -0
- data/Gemfile +9 -0
- data/Gemfile.lock +120 -0
- data/LICENSE.txt +21 -0
- data/README.md +159 -0
- data/Rakefile +8 -0
- data/bin/console +10 -0
- data/bin/setup +8 -0
- data/btcpay.gemspec +40 -0
- data/docker-compose.btcpay.yml +139 -0
- data/lib/btcpay.rb +17 -0
- data/lib/btcpay/client/api/api_keys.rb +44 -0
- data/lib/btcpay/client/api/base.rb +22 -0
- data/lib/btcpay/client/api/health.rb +25 -0
- data/lib/btcpay/client/api/lightning_node.rb +67 -0
- data/lib/btcpay/client/api/pull_payments.rb +34 -0
- data/lib/btcpay/client/api/server.rb +22 -0
- data/lib/btcpay/client/api/store.rb +62 -0
- data/lib/btcpay/client/api/store_payment_requests.rb +46 -0
- data/lib/btcpay/client/api/store_payouts.rb +29 -0
- data/lib/btcpay/client/api/store_pull_payments.rb +34 -0
- data/lib/btcpay/client/api/users.rb +29 -0
- data/lib/btcpay/client/base.rb +192 -0
- data/lib/btcpay/client/config.rb +54 -0
- data/lib/btcpay/client/helpers/api_keys.rb +50 -0
- data/lib/btcpay/client/helpers/base.rb +13 -0
- data/lib/btcpay/client/result.rb +90 -0
- data/lib/btcpay/client/service.rb +33 -0
- data/lib/btcpay/version.rb +5 -0
- metadata +218 -0
data/lib/btcpay.rb
ADDED
@@ -0,0 +1,17 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'btcpay/version'
|
4
|
+
|
5
|
+
require 'btcpay/client/config'
|
6
|
+
require 'btcpay/client/base'
|
7
|
+
|
8
|
+
module BtcPay
|
9
|
+
class Error < StandardError; end
|
10
|
+
|
11
|
+
module_function
|
12
|
+
|
13
|
+
def new(**args)
|
14
|
+
config = BtcPay::Client::Config.new(**args)
|
15
|
+
BtcPay::Client::Base.new(config: config, **args)
|
16
|
+
end
|
17
|
+
end
|
@@ -0,0 +1,44 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module BtcPay
|
4
|
+
module Client
|
5
|
+
module Api
|
6
|
+
class ApiKeys < Base
|
7
|
+
PATH = '/api-keys'
|
8
|
+
|
9
|
+
# @see https://docs.btcpayserver.org/API/Greenfield/v1/#tag/API-Keys/paths/~1api~1v1~1api-keys~1current/get
|
10
|
+
def current(**opts)
|
11
|
+
client.get(path('current'), options: opts)
|
12
|
+
end
|
13
|
+
|
14
|
+
alias get current
|
15
|
+
alias info current
|
16
|
+
|
17
|
+
# @see https://docs.btcpayserver.org/API/Greenfield/v1/#tag/API-Keys/paths/~1api~1v1~1api-keys/post
|
18
|
+
def create(payload, **opts)
|
19
|
+
client.post(path, payload: payload, options: opts)
|
20
|
+
end
|
21
|
+
|
22
|
+
# @see https://docs.btcpayserver.org/API/Greenfield/v1/#tag/API-Keys/paths/~1api~1v1~1api-keys~1{apikey}/delete
|
23
|
+
def revoke(key, **opts)
|
24
|
+
client.delete(path(key), options: opts)
|
25
|
+
end
|
26
|
+
|
27
|
+
alias delete revoke
|
28
|
+
|
29
|
+
# https://docs.btcpayserver.org/API/Greenfield/v1/#tag/API-Keys/paths/~1api~1v1~1api-keys~1current/delete
|
30
|
+
def revoke!(**opts)
|
31
|
+
client.delete(path('current'), options: opts)
|
32
|
+
end
|
33
|
+
|
34
|
+
alias delete! revoke!
|
35
|
+
|
36
|
+
protected
|
37
|
+
|
38
|
+
def set_base_path
|
39
|
+
@base_path = PATH
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require_relative '../service'
|
4
|
+
|
5
|
+
module BtcPay
|
6
|
+
module Client
|
7
|
+
module Api
|
8
|
+
class Base < Client::Service
|
9
|
+
require_relative './api_keys'
|
10
|
+
require_relative './health'
|
11
|
+
require_relative './lightning_node'
|
12
|
+
require_relative './pull_payments'
|
13
|
+
require_relative './server'
|
14
|
+
require_relative './store'
|
15
|
+
require_relative './store_payment_requests'
|
16
|
+
require_relative './store_payouts'
|
17
|
+
require_relative './store_pull_payments'
|
18
|
+
require_relative './users'
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
@@ -0,0 +1,25 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module BtcPay
|
4
|
+
module Client
|
5
|
+
module Api
|
6
|
+
class Health < Base
|
7
|
+
PATH = '/health'
|
8
|
+
|
9
|
+
# @see https://docs.btcpayserver.org/API/Greenfield/v1/#operation/Health_GetHealth
|
10
|
+
def status(**opts)
|
11
|
+
client.get(path, options: opts)
|
12
|
+
end
|
13
|
+
|
14
|
+
alias get status
|
15
|
+
alias info status
|
16
|
+
|
17
|
+
protected
|
18
|
+
|
19
|
+
def set_base_path
|
20
|
+
@base_path = PATH
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
@@ -0,0 +1,67 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module BtcPay
|
4
|
+
module Client
|
5
|
+
module Api
|
6
|
+
class LightningNode < Base
|
7
|
+
PATH = '/server/lightning/'
|
8
|
+
|
9
|
+
# @see https://docs.btcpayserver.org/API/Greenfield/v1/#tag/Lightning-(Internal-Node)
|
10
|
+
def info(crypto_code, **opts)
|
11
|
+
client.get(path(crypto_code, 'info'), options: opts)
|
12
|
+
end
|
13
|
+
|
14
|
+
# @see https://docs.btcpayserver.org/API/Greenfield/v1/#operation/InternalLightningNodeApi_ConnectToNode
|
15
|
+
def connect(crypto_code, payload, **opts)
|
16
|
+
client.post(path(crypto_code, 'connect'), payload: payload, options: opts)
|
17
|
+
end
|
18
|
+
|
19
|
+
# @see https://docs.btcpayserver.org/API/Greenfield/v1/#operation/InternalLightningNodeApi_GetChannels
|
20
|
+
def channels(crypto_code, **opts)
|
21
|
+
client.get(path(crypto_code, 'channels'), options: opts)
|
22
|
+
end
|
23
|
+
|
24
|
+
alias get_channels channels
|
25
|
+
|
26
|
+
# @see https://docs.btcpayserver.org/API/Greenfield/v1/#operation/InternalLightningNodeApi_OpenChannel
|
27
|
+
def open(crypto_code, payload, **opts)
|
28
|
+
client.post(path(crypto_code, 'channels'), payload: payload, options: opts)
|
29
|
+
end
|
30
|
+
|
31
|
+
alias open_channels open
|
32
|
+
|
33
|
+
# @see https://docs.btcpayserver.org/API/Greenfield/v1/#operation/InternalLightningNodeApi_GetDepositAddress
|
34
|
+
def deposit_address(crypto_code, payload, **opts)
|
35
|
+
client.post(path(crypto_code, 'address'), payload: payload, options: opts)
|
36
|
+
end
|
37
|
+
|
38
|
+
alias address deposit_address
|
39
|
+
|
40
|
+
# @see https://docs.btcpayserver.org/API/Greenfield/v1/#operation/InternalLightningNodeApi_GetInvoice
|
41
|
+
def invoice(crypto_code, invoice_id, **opts)
|
42
|
+
client.get(path(crypto_code, 'invoices', invoice_id), options: opts)
|
43
|
+
end
|
44
|
+
|
45
|
+
alias get_invoice invoice
|
46
|
+
|
47
|
+
# @see https://docs.btcpayserver.org/API/Greenfield/v1/#operation/InternalLightningNodeApi_PayInvoice
|
48
|
+
def pay(crypto_code, payload, **opts)
|
49
|
+
client.post(path(crypto_code, 'invoices', 'pay'), payload: payload, options: opts)
|
50
|
+
end
|
51
|
+
|
52
|
+
alias pay_invoice pay
|
53
|
+
|
54
|
+
# @see https://docs.btcpayserver.org/API/Greenfield/v1/#operation/InternalLightningNodeApi_CreateInvoice
|
55
|
+
def create_invoice(crypto_code, payload, **opts)
|
56
|
+
client.post(path(crypto_code, 'invoices'), payload: payload, options: opts)
|
57
|
+
end
|
58
|
+
|
59
|
+
protected
|
60
|
+
|
61
|
+
def set_base_path
|
62
|
+
@base_path = PATH
|
63
|
+
end
|
64
|
+
end
|
65
|
+
end
|
66
|
+
end
|
67
|
+
end
|
@@ -0,0 +1,34 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module BtcPay
|
4
|
+
module Client
|
5
|
+
module Api
|
6
|
+
class PullPayments < Base
|
7
|
+
PATH = 'pull-payments'
|
8
|
+
|
9
|
+
# @see https://docs.btcpayserver.org/API/Greenfield/v1/#tag/Pull-payments-(Public)/paths/~1api~1v1~1pull-payments~1{pullPaymentId}/get
|
10
|
+
def get(pull_payment_id, **opts)
|
11
|
+
client.get(path(pull_payment_id), options: opts)
|
12
|
+
end
|
13
|
+
|
14
|
+
alias find get
|
15
|
+
|
16
|
+
# @see https://docs.btcpayserver.org/API/Greenfield/v1/#tag/Pull-payments-(Public)/paths/~1api~1v1~1pull-payments~1{pullPaymentId}~1payouts/get
|
17
|
+
def payouts(pull_payment_id, **opts)
|
18
|
+
client.get(path(pull_payment_id, 'payouts'), options: opts)
|
19
|
+
end
|
20
|
+
|
21
|
+
# @see https://docs.btcpayserver.org/API/Greenfield/v1/#tag/Pull-payments-(Public)/paths/~1api~1v1~1pull-payments~1{pullPaymentId}~1payouts/post
|
22
|
+
def create_payout(pull_payment_id, payload, **opts)
|
23
|
+
client.post(path(pull_payment_id, 'payouts'), payload: payload, options: opts)
|
24
|
+
end
|
25
|
+
|
26
|
+
protected
|
27
|
+
|
28
|
+
def set_base_path
|
29
|
+
@base_path = PATH.dup
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module BtcPay
|
4
|
+
module Client
|
5
|
+
module Api
|
6
|
+
class Server < Base
|
7
|
+
PATH = '/server'
|
8
|
+
|
9
|
+
# @see https://docs.btcpayserver.org/API/Greenfield/v1/#operation/Health_GetHealth
|
10
|
+
def info(**opts)
|
11
|
+
client.get(path('info'), options: opts)
|
12
|
+
end
|
13
|
+
|
14
|
+
protected
|
15
|
+
|
16
|
+
def set_base_path
|
17
|
+
@base_path = PATH
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
@@ -0,0 +1,62 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module BtcPay
|
4
|
+
module Client
|
5
|
+
module Api
|
6
|
+
class Store < Base
|
7
|
+
PATH = '/stores'
|
8
|
+
|
9
|
+
# @see https://docs.btcpayserver.org/API/Greenfield/v1/#operation/Stores_GetStores
|
10
|
+
def all(**opts)
|
11
|
+
client.get(path, options: opts)
|
12
|
+
end
|
13
|
+
|
14
|
+
alias stores all
|
15
|
+
alias index all
|
16
|
+
|
17
|
+
# @see https://docs.btcpayserver.org/API/Greenfield/v1/#tag/Stores/paths/~1api~1v1~1stores/post
|
18
|
+
def create(payload, **opts)
|
19
|
+
client.post(path, payload: payload, options: opts)
|
20
|
+
end
|
21
|
+
|
22
|
+
# @see https://docs.btcpayserver.org/API/Greenfield/v1/#operation/Stores_GetStore
|
23
|
+
def get(store_id, **opts)
|
24
|
+
client.get(path(store_id), options: opts)
|
25
|
+
end
|
26
|
+
|
27
|
+
# @see https://docs.btcpayserver.org/API/Greenfield/v1/#operation/Stores_UpdateStore
|
28
|
+
def update(store_id, payload, **opts)
|
29
|
+
client.put(path(store_id), payload: payload, options: opts)
|
30
|
+
end
|
31
|
+
|
32
|
+
alias put update
|
33
|
+
|
34
|
+
# @see https://docs.btcpayserver.org/API/Greenfield/v1/#tag/Stores/paths/~1api~1v1~1stores~1{storeId}/delete
|
35
|
+
def delete(store_id, **opts)
|
36
|
+
client.delete(path(store_id), options: opts)
|
37
|
+
end
|
38
|
+
|
39
|
+
##
|
40
|
+
# services
|
41
|
+
##
|
42
|
+
def payment_requests
|
43
|
+
@payment_requests ||= Api::StorePaymentRequests.new(client: client)
|
44
|
+
end
|
45
|
+
|
46
|
+
def payouts
|
47
|
+
@payouts ||= Api::StorePayouts.new(client: client)
|
48
|
+
end
|
49
|
+
|
50
|
+
def pull_payments
|
51
|
+
@pull_payments ||= Api::StorePullPayments.new(client: client)
|
52
|
+
end
|
53
|
+
|
54
|
+
protected
|
55
|
+
|
56
|
+
def set_base_path
|
57
|
+
@base_path = PATH
|
58
|
+
end
|
59
|
+
end
|
60
|
+
end
|
61
|
+
end
|
62
|
+
end
|
@@ -0,0 +1,46 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module BtcPay
|
4
|
+
module Client
|
5
|
+
module Api
|
6
|
+
class StorePaymentRequests < Base
|
7
|
+
PATH = '/stores/:store_id/payment-requests'
|
8
|
+
|
9
|
+
# @see https://docs.btcpayserver.org/API/Greenfield/v1/#operation/PaymentRequests_GetPaymentRequests
|
10
|
+
def all(store_id, **opts)
|
11
|
+
client.get(store_path(store_id), options: opts)
|
12
|
+
end
|
13
|
+
|
14
|
+
alias index all
|
15
|
+
|
16
|
+
# @see https://docs.btcpayserver.org/API/Greenfield/v1/#operation/PaymentRequests_CreatePaymentRequest
|
17
|
+
def create(store_id, payload, **opts)
|
18
|
+
client.post(store_path(store_id), payload: payload, options: opts)
|
19
|
+
end
|
20
|
+
|
21
|
+
# @see https://docs.btcpayserver.org/API/Greenfield/v1/#operation/PaymentRequests_GetPaymentRequests
|
22
|
+
def get(store_id, request_id, **opts)
|
23
|
+
client.get(store_path(store_id, request_id), options: opts)
|
24
|
+
end
|
25
|
+
|
26
|
+
alias find get
|
27
|
+
|
28
|
+
# @see https://docs.btcpayserver.org/API/Greenfield/v1/#operation/PaymentRequests_ArchivePaymentRequest
|
29
|
+
def delete(store_id, request_id, **opts)
|
30
|
+
client.delete(store_path(store_id, request_id), options: opts)
|
31
|
+
end
|
32
|
+
|
33
|
+
# @see https://docs.btcpayserver.org/API/Greenfield/v1/#operation/PaymentRequests_ArchivePaymentRequest
|
34
|
+
def update(store_id, request_id, payload, **opts)
|
35
|
+
client.put(store_path(store_id, request_id), payload: payload, options: opts)
|
36
|
+
end
|
37
|
+
|
38
|
+
protected
|
39
|
+
|
40
|
+
def set_base_path
|
41
|
+
@base_path = PATH.dup
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
@@ -0,0 +1,29 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module BtcPay
|
4
|
+
module Client
|
5
|
+
module Api
|
6
|
+
class StorePayouts < Base
|
7
|
+
PATH = '/stores/:store_id/payouts'
|
8
|
+
|
9
|
+
# @see https://docs.btcpayserver.org/API/Greenfield/v1/#/paths/~1api~1v1~1stores~1{storeId}~1payouts~1{payoutId}/post
|
10
|
+
def approve(store_id, payout_id, payload, **opts)
|
11
|
+
client.post(store_path(store_id, payout_id), payload: payload, options: opts)
|
12
|
+
end
|
13
|
+
|
14
|
+
# @see https://docs.btcpayserver.org/API/Greenfield/v1/#tag/Pull-payments-(Management)/paths/~1api~1v1~1stores~1{storeId}~1payouts~1{payoutId}/delete
|
15
|
+
def delete(store_id, payout_id, **opts)
|
16
|
+
client.delete(store_path(store_id, payout_id), options: opts)
|
17
|
+
end
|
18
|
+
|
19
|
+
alias cancel delete
|
20
|
+
|
21
|
+
protected
|
22
|
+
|
23
|
+
def set_base_path
|
24
|
+
@base_path = PATH.dup
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
@@ -0,0 +1,34 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module BtcPay
|
4
|
+
module Client
|
5
|
+
module Api
|
6
|
+
class StorePullPayments < Base
|
7
|
+
PATH = '/stores/:store_id/pull-payments'
|
8
|
+
|
9
|
+
# @see https://docs.btcpayserver.org/API/Greenfield/v1/#tag/Pull-payments-(Management)/paths/~1api~1v1~1stores~1{storeId}~1pull-payments/get
|
10
|
+
def all(store_id, **opts)
|
11
|
+
client.get(store_path(store_id), options: opts)
|
12
|
+
end
|
13
|
+
|
14
|
+
alias index all
|
15
|
+
|
16
|
+
# @see https://docs.btcpayserver.org/API/Greenfield/v1/#operation/PaymentRequests_CreatePaymentRequest
|
17
|
+
def create(store_id, payload, **opts)
|
18
|
+
client.post(store_path(store_id), payload: payload, options: opts)
|
19
|
+
end
|
20
|
+
|
21
|
+
# @see https://docs.btcpayserver.org/API/Greenfield/v1/#tag/Pull-payments-(Management)/paths/~1api~1v1~1stores~1{storeId}~1pull-payments~1{pullPaymentId}/delete
|
22
|
+
def delete(store_id, pull_payment_id, **opts)
|
23
|
+
client.delete(store_path(store_id, pull_payment_id), options: opts)
|
24
|
+
end
|
25
|
+
|
26
|
+
protected
|
27
|
+
|
28
|
+
def set_base_path
|
29
|
+
@base_path = PATH.dup
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
@@ -0,0 +1,29 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module BtcPay
|
4
|
+
module Client
|
5
|
+
module Api
|
6
|
+
class Users < Base
|
7
|
+
PATH = '/users'
|
8
|
+
|
9
|
+
# @see https://docs.btcpayserver.org/API/Greenfield/v1/#operation/Users_GetCurrentUser
|
10
|
+
def me(**opts)
|
11
|
+
client.get(path('me'), options: opts)
|
12
|
+
end
|
13
|
+
|
14
|
+
alias get me
|
15
|
+
|
16
|
+
# @see https://docs.btcpayserver.org/API/Greenfield/v1/#tag/Users/paths/~1api~1v1~1users/post
|
17
|
+
def create(payload, **opts)
|
18
|
+
client.post(path, payload: payload, options: opts)
|
19
|
+
end
|
20
|
+
|
21
|
+
protected
|
22
|
+
|
23
|
+
def set_base_path
|
24
|
+
@base_path = PATH
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|