class BtcPay::Client::Base
Constants
- API_PATH
- DEFAULT_TIMEOUT
Attributes
config[R]
logger[R]
Public Class Methods
new(config:, logger: Logger.new(STDOUT), timeout: DEFAULT_TIMEOUT, **_kwargs)
click to toggle source
@param config [BtcPay::Client::Config] @param logger [Logger] @param timeout [Integer] Defaults to DEFAULT_TIMEOUT
# File lib/btcpay/client/base.rb, line 28 def initialize(config:, logger: Logger.new(STDOUT), timeout: DEFAULT_TIMEOUT, **_kwargs) @config = config @logger = logger @timeout = timeout end
Public Instance Methods
api_keys()
click to toggle source
# File lib/btcpay/client/base.rb, line 78 def api_keys @api_keys ||= Api::ApiKeys.new(client: self) end
api_keys_helper()
click to toggle source
# File lib/btcpay/client/base.rb, line 82 def api_keys_helper @api_keys_helper ||= Helpers::ApiKeys.new(client: self) end
delete(uri, options: {}, headers: {})
click to toggle source
DELETE request
@param uri [String] @param options [Hash] @param headers [Hash] @return [Result]
# File lib/btcpay/client/base.rb, line 74 def delete(uri, options: {}, headers: {}) request(uri, method: :delete, options: options, headers: headers) end
get(uri, options: {}, headers: {}, **kwargs)
click to toggle source
GET request
@param uri [String] @param options [Hash] @param headers [Hash] @return [Result]
# File lib/btcpay/client/base.rb, line 40 def get(uri, options: {}, headers: {}, **kwargs) request(uri, method: :get, options: options, headers: headers, **kwargs) end
health()
click to toggle source
# File lib/btcpay/client/base.rb, line 86 def health @health ||= Api::Health.new(client: self) end
lightning()
click to toggle source
# File lib/btcpay/client/base.rb, line 90 def lightning @lightning ||= OpenStruct.new(node: Api::LightningNode.new(client: self)) end
post(uri, payload: {}, options: {}, headers: {})
click to toggle source
POST request
@param uri [String] @param payload [Hash] @param options [Hash] @param headers [Hash] @return [Result]
# File lib/btcpay/client/base.rb, line 51 def post(uri, payload: {}, options: {}, headers: {}) data = payload.is_a?(Hash) ? payload.to_json : payload request(uri, method: :post, payload: data, options: options, headers: headers) end
pull_payments()
click to toggle source
# File lib/btcpay/client/base.rb, line 94 def pull_payments @pull_payments ||= Api::PullPayments.new(client: self) end
Also aliased as: payments
put(uri, payload:, options: {}, headers: {})
click to toggle source
PUT request
@param uri [String] @param payload [Hash] @param options [Hash] @param headers [Hash] @return [Result]
# File lib/btcpay/client/base.rb, line 63 def put(uri, payload:, options: {}, headers: {}) data = payload.is_a?(Hash) ? payload.to_json : payload request(uri, method: :put, payload: data, options: options, headers: headers) end
server()
click to toggle source
# File lib/btcpay/client/base.rb, line 100 def server @server ||= Api::Server.new(client: self) end
store()
click to toggle source
# File lib/btcpay/client/base.rb, line 104 def store @store ||= Api::Store.new(client: self) end
users()
click to toggle source
# File lib/btcpay/client/base.rb, line 108 def users @users ||= Api::Users.new(client: self) end
Private Instance Methods
default_headers()
click to toggle source
@return [Hash]
# File lib/btcpay/client/base.rb, line 117 def default_headers { 'Content-Type' => 'application/json', 'Accept' => 'application/json', 'User-Agent' => config.user_agent, 'Accept-Encoding' => 'deflate, gzip', 'Authorization' => config.authorization } end
handle_error(error)
click to toggle source
Handle errors @param error [Error] @return [Result]
# File lib/btcpay/client/base.rb, line 171 def handle_error(error) logger.error(error: 'Request Exception', code: error.response.code, message: error.message) Result.failed(error.response) end
open_timeout()
click to toggle source
@return [Integer]
# File lib/btcpay/client/base.rb, line 178 def open_timeout @open_timeout || DEFAULT_TIMEOUT end
request(uri, **kwargs)
click to toggle source
@yield [Result]
# File lib/btcpay/client/base.rb, line 128 def request(uri, **kwargs) params = request_builder(uri, **kwargs) return params if kwargs[:skip_request] response = RestClient::Request.execute(params) logger.debug(message: 'GET Request', url: params[:url], options: kwargs[:options], status: response.code) result = success?(response.code) ? Result.success(response) : Result.failed(response) logger.warn(error: 'Request Error', code: result.code, body: result.raw) if result.failure? result rescue ::RestClient::GatewayTimeout raise Error.new('Gateway timeout') rescue ::RestClient::RequestTimeout raise Error.new('Request timeout') rescue ::RestClient::Exception => e handle_error(e) end
request_builder(uri, **kwargs)
click to toggle source
@param uri @option
# File lib/btcpay/client/base.rb, line 148 def request_builder(uri, **kwargs) options = kwargs[:options] ||= {} headers = kwargs[:headers] ||= {} url = URI(config.base_url) url.path = kwargs[:skip_api_path] ? uri : API_PATH + uri url.query = CGI.unescape(options.to_query).presence return url.to_s if kwargs[:skip_request] { method: kwargs[:method], url: url.to_s, payload: kwargs[:payload].presence, headers: default_headers.merge(headers), open_timeout: open_timeout, timeout: timeout }.compact end
success?(response_code)
click to toggle source
# File lib/btcpay/client/base.rb, line 187 def success?(response_code) response_code.in?(200..299) end
timeout()
click to toggle source
@return [Integer]
# File lib/btcpay/client/base.rb, line 183 def timeout @timeout || DEFAULT_TIMEOUT end