binking 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 ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: 87ae8c08d0cc8dc974c5525933e04ec4041ebb6d512d249594bdeeb6d6c08230
4
+ data.tar.gz: fa23a25dbfb6c7623b99703afe96e5d3c8a639935fcd35dabf013b6a4c202ac2
5
+ SHA512:
6
+ metadata.gz: 61e0fd7cde8b7b26fb7f3340580fc86918f510aab98d411148d892ece7cd28936859799cd785e2a8f8fb7af12cb049ba5c056dd1f3bd55301cf4a51c12b88585
7
+ data.tar.gz: c849c7c63eae4a3d8218382ee453671a84cae07671ea08711992ef895aedee3de8c9592caa3f80b9143db5a07a99ea0204349cebc03ab52104769eaa1557eaaa
@@ -0,0 +1,41 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "faraday"
4
+
5
+ module Binking
6
+ class Client
7
+ attr_accessor :api_token, :host, :sandbox, :cache, :logger
8
+
9
+ def initialize(api_token: Binking.config.api_token,
10
+ host: Binking.config.host,
11
+ sandbox: Binking.config.sandbox,
12
+ cache: Binking.config.cache,
13
+ logger: Binking.config.logger)
14
+ @api_token = api_token
15
+ @host = host
16
+ @sandbox = sandbox
17
+ @cache = cache
18
+ @logger = logger
19
+ end
20
+
21
+ def get(path, params = nil)
22
+ connection.get(path.gsub(%r{^/}, ""), params) do |req|
23
+ req.params["apiKey"] = api_token if api_token
24
+ req.params["sandbox"] = 1 if sandbox
25
+ end
26
+ end
27
+
28
+ private
29
+
30
+ def connection
31
+ @connection ||= Faraday.new(url: host) do |builder|
32
+ builder.use(FaradayMiddleware::Caching, cache) if cache
33
+ builder.use Faraday::Response::RaiseError
34
+ builder.request :url_encoded
35
+ builder.response :json
36
+ builder.response(:logger, logger, { headers: true, bodies: true }) if logger
37
+ builder.adapter Faraday.default_adapter
38
+ end
39
+ end
40
+ end
41
+ end
@@ -0,0 +1,25 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Binking
4
+ class Config
5
+ DEFAULT_HOST = "https://api.binking.io"
6
+
7
+ attr_accessor :api_token, :host, :sandbox, :cache, :logger
8
+
9
+ def initialize(api_token: nil,
10
+ host: DEFAULT_HOST,
11
+ sandbox: false,
12
+ cache: nil,
13
+ logger: nil)
14
+ @api_token = api_token
15
+ @host = host
16
+ @sandbox = sandbox
17
+ @cache = cache
18
+ @logger = logger
19
+ end
20
+
21
+ def configured?
22
+ [api_token, host].all? { |param| !param.nil? && !param.empty? }
23
+ end
24
+ end
25
+ end
@@ -0,0 +1,32 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Binking
4
+ FIELDS = %w[
5
+ bankAlias
6
+ bankName
7
+ bankLocalName
8
+ bankLogoBigOriginalSvg
9
+ bankLogoBigOriginalPng
10
+ bankLogoBigInvertedSvg
11
+ bankLogoBigInvertedPng
12
+ bankLogoSmallOriginalSvg
13
+ bankLogoSmallOriginalPng
14
+ bankLogoSmallInvertedSvg
15
+ bankLogoSmallInvertedPng
16
+ bankColor
17
+ bankColors
18
+ bankCountry
19
+ bankSite
20
+ bankPhone
21
+ formBackgroundColor
22
+ formBackgroundColors
23
+ formBackgroundLightness
24
+ formTextColor
25
+ formBorderColor
26
+ formBankLogoBigSvg
27
+ formBankLogoBigPng
28
+ formBankLogoSmallSvg
29
+ formBankLogoSmallPng
30
+ formLogoScheme
31
+ ].freeze
32
+ end
@@ -0,0 +1,24 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Binking
4
+ module RequestResource
5
+ extend self
6
+
7
+ RESOURCES_KEYS = {
8
+ "bank" => "bankAlias",
9
+ "banks" => "banksAliases",
10
+ "form" => "cardNumber"
11
+ }.freeze
12
+
13
+ def get(resource, value, fields: [], sandbox: false)
14
+ fields = fields.map(&:to_s) & FIELDS
15
+ params = {}
16
+ params[RESOURCES_KEYS[resource.to_s]] = value
17
+ params[:fields] = fields.join(",") unless fields.empty?
18
+
19
+ Client.new(sandbox: sandbox)
20
+ .get("/#{resource}", params)
21
+ .body
22
+ end
23
+ end
24
+ end
@@ -0,0 +1,5 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Binking
4
+ VERSION = "0.1.0"
5
+ end
data/lib/binking.rb ADDED
@@ -0,0 +1,37 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative "binking/version"
4
+ require "binking/config"
5
+ require "binking/client"
6
+ require "binking/fields"
7
+ require "binking/request_resource"
8
+
9
+ module Binking
10
+ class NotConfiguredError < StandardError; end
11
+ extend self
12
+
13
+ def configure
14
+ @config ||= Config.new
15
+ yield @config if block_given?
16
+ @config
17
+ end
18
+ alias_method :config, :configure
19
+
20
+ def configured?
21
+ config.configured?
22
+ end
23
+
24
+ def method_missing(method_name, *args, &block)
25
+ if %i[form bank banks].include?(method_name)
26
+ raise NotConfiguredError unless configured?
27
+
28
+ RequestResource.get(method_name, *args)
29
+ else
30
+ super
31
+ end
32
+ end
33
+
34
+ def respond_to_missing?(method_name, include_private = false)
35
+ connection.respond_to?(method_name) || super
36
+ end
37
+ end
metadata ADDED
@@ -0,0 +1,78 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: binking
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - Anton Kostyuk
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2022-01-15 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: rspec
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '3.2'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '3.2'
27
+ - !ruby/object:Gem::Dependency
28
+ name: faraday
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: 1.7.1
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: 1.7.1
41
+ description:
42
+ email:
43
+ - anton.kostuk.2012@gmail.com
44
+ executables: []
45
+ extensions: []
46
+ extra_rdoc_files: []
47
+ files:
48
+ - lib/binking.rb
49
+ - lib/binking/client.rb
50
+ - lib/binking/config.rb
51
+ - lib/binking/fields.rb
52
+ - lib/binking/request_resource.rb
53
+ - lib/binking/version.rb
54
+ homepage: https://github.com/RainbowPonny/ruby-binking
55
+ licenses:
56
+ - MIT
57
+ metadata:
58
+ rubygems_mfa_required: 'true'
59
+ post_install_message:
60
+ rdoc_options: []
61
+ require_paths:
62
+ - lib
63
+ required_ruby_version: !ruby/object:Gem::Requirement
64
+ requirements:
65
+ - - ">="
66
+ - !ruby/object:Gem::Version
67
+ version: 2.5.0
68
+ required_rubygems_version: !ruby/object:Gem::Requirement
69
+ requirements:
70
+ - - ">="
71
+ - !ruby/object:Gem::Version
72
+ version: '0'
73
+ requirements: []
74
+ rubygems_version: 3.1.6
75
+ signing_key:
76
+ specification_version: 4
77
+ summary: Ruby client for binking.io API
78
+ test_files: []