Module: Parsbank

Defined in:
lib/db_setup.rb,
lib/parsbank.rb,
lib/parsbank/soap.rb,
lib/parsbank/gates.rb,
lib/parsbank/version.rb,
lib/parsbank/restfull.rb,
lib/parsbank/zibal/zibal.rb,
lib/parsbank/mellat/mellat.rb,
lib/parsbank/binance/binance.rb,
lib/parsbank/nobitex/nobitex.rb,
lib/parsbank/zarinpal/zarinpal.rb,
lib/parsbank/transaction_verify.rb,
lib/parsbank/transaction_request.rb

Defined Under Namespace

Classes: Binance, DBSetup, Error, Gates, Mellat, Nobitex, Restfull, SOAP, TransactionRequest, TransactionVerify, Zarinpal, Zibal

Constant Summary collapse

VERSION =
'0.0.8'

Class Attribute Summary collapse

Class Method Summary collapse

Class Attribute Details

.configurationObject

Returns the value of attribute configuration.



26
27
28
# File 'lib/parsbank.rb', line 26

def configuration
  @configuration
end

Class Method Details

.available_gateways_listObject



42
43
44
# File 'lib/parsbank.rb', line 42

def self.available_gateways_list
  load_secrets_yaml.select { |_, value| value['enabled'] }
end

.configure {|configuration| ... } ⇒ Object

Yields:



29
30
31
32
# File 'lib/parsbank.rb', line 29

def self.configure
  self.configuration ||= Configuration.new
  yield configuration
end

.gateways_listObject



38
39
40
# File 'lib/parsbank.rb', line 38

def self.gateways_list
  load_secrets_yaml
end

.gateways_list_shortcode(args = {}) ⇒ Object



79
80
81
82
83
# File 'lib/parsbank.rb', line 79

def self.gateways_list_shortcode(args = {})
  ERB.new(File.read(File.join(__dir__, 'tmpl', 'bank_list.html.erb'))).result(binding).gsub(/(?:\n\r?|\r\n?)/, '').gsub(/>\s+</, '><').gsub(
    /\s+/, ' '
  ).strip
end

.initialize!Object



54
55
56
57
58
59
60
# File 'lib/parsbank.rb', line 54

def self.initialize!
  I18n.load_path += Dir.glob(File.join(__dir__, 'locales', '*.yml'))
  I18n.available_locales = i[en fa]
  I18n.enforce_available_locales = false

  Parsbank::DBSetup.establish_connection
end

.initialize_in_railsObject



46
47
48
49
50
51
52
# File 'lib/parsbank.rb', line 46

def self.initialize_in_rails
  return unless defined?(Rails)

  ActiveSupport.on_load(:after_initialize) do
    Parsbank.initialize!
  end
end

.load_secrets_yamlObject



62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
# File 'lib/parsbank.rb', line 62

def self.load_secrets_yaml
  # Load the YAML file specified by the secrets_path
  secrets = YAML.load_file(Parsbank.configuration.secrets_path)
  raise "Error: Invalid format in #{Parsbank.configuration.secrets_path}." unless secrets.is_a?(Hash)

  secrets.each_key do |bank_key|
    unless supported_psp.keys.include?(bank_key.to_s)
      raise "#{bank_key.capitalize} in #{Parsbank.configuration.secrets_path} is not supported by ParsBank. \nSupported Banks: #{supported_psp.keys.join(', ')}"
    end
  end
  secrets
rescue Errno::ENOENT
  raise "Error: Secrets file not found at #{Parsbank.configuration.secrets_path}."
rescue Psych::SyntaxError => e
  raise "Error: YAML syntax issue in #{Parsbank.configuration.secrets_path}: #{e.message}"
end

.supported_pspObject



34
35
36
# File 'lib/parsbank.rb', line 34

def self.supported_psp
  JSON.parse(File.read(File.join(__dir__, 'psp.json')))
end