Sha256: 8421b9fafb47df855fe256ac6835442744a950ccd62826a08cc1e0e8512be35b

Contents?: true

Size: 1.48 KB

Versions: 1

Compression:

Stored size: 1.48 KB

Contents

# -*- encoding : utf-8 -*-
require 'singleton'

module OpenPayU

  class Configuration

    include Singleton

    class << self
      attr_accessor :env, :merchant_pos_id, :pos_auth_key, :client_id,
        :client_secret, :signature_key, :service_domain, :country, :data_format,
          :algorithm, :protocol, :order_url, :notify_url, :continue_url

      def configure(file_path = nil)
        set_defaults
        if block_given?
          yield self
        else
          file = File.open(file_path) if file_path && File.exists?(file_path)
          env = defined?(Rails) ? Rails.env : ENV['RACK_ENV']
          config = YAML.load(file)[env]
          if config.present?
            config.each_pair do |key, value|
              send("#{key}=", value)
            end
          end
        end
        valid?
      end

      def set_defaults
        @service_domain = 'payu.com'
        @env    = 'sandbox'
        @country = 'pl'
        @algorithm = 'MD5'
        @data_format = 'json'
      end

      def required_parameters
        [:merchant_pos_id, :signature_key]
      end

      def valid?
        required_parameters.each do |parameter|
          if send(parameter).nil? || send(parameter).blank?
            raise WrongConfigurationError, "Parameter #{parameter} is invalid."
          end
        end
        true
      end

      def get_base_url
        "#{@protocol}://#{@env}.#{@service_domain}/api/v2/"
      end

      def use_ssl?
        @protocol == 'https'
      end
    end
  end

end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
openpayu-0.1.2 lib/openpayu/configuration.rb