Class: Walletone::Fields

Inherits:
Hash
  • Object
show all
Defined in:
lib/walletone/fields.rb

Direct Known Subclasses

Notification, Payment

Constant Summary collapse

W1_KEYS =
%i(
    WMI_MERCHANT_ID
    WMI_PAYMENT_AMOUNT
    WMI_CURRENCY_ID
    WMI_PAYMENT_NO
    WMI_DESCRIPTION
    WMI_SUCCESS_URL WMI_FAIL_URL
    WMI_EXPIRED_DATE
    WMI_PTENABLED WMI_PTDISABLED
    WMI_RECIPIENT_LOGIN
    WMI_CUSTOMER_FIRSTNAME WMI_CUSTOMER_LASTNAME WMI_CUSTOMER_EMAIL
    WMI_CULTURE_ID
    WMI_SIGNATURE
    WMI_DELIVERY_REQUEST 
    WMI_DELIVERY_COUNTRY WMI_DELIVERY_REGION WMI_DELIVERY_CITY WMI_DELIVERY_ADDRESS
    WMI_DELIVERY_CONTACTINFO WMI_DELIVERY_COMMENTS WMI_DELIVERY_ORDERID 
    WMI_DELIVERY_DATEFROM WMI_DELIVERY_DATETILL
    WMI_PSP_MERCHANT_ID
)
MULTIPLE_VALUES =
%i(WMI_PTENABLED WMI_PTDISABLED)

Instance Method Summary collapse

Constructor Details

#initialize(attrs = {}) ⇒ Fields

Returns a new instance of Fields.



45
46
47
48
49
50
# File 'lib/walletone/fields.rb', line 45

def initialize attrs={}
  fields = super
  return fields if attrs.empty?
  symbolyzed_attrs = attrs.inject({}) { |acc, e| acc[e.first.to_sym]=e.last; acc }
  fields.merge! symbolyzed_attrs
end

Instance Method Details

#[](key) ⇒ Object



52
53
54
# File 'lib/walletone/fields.rb', line 52

def [] key
  fetch key.to_sym, nil
end

#[]=(key, value) ⇒ Object



56
57
58
# File 'lib/walletone/fields.rb', line 56

def []= key, value
  super key.to_sym, value
end

#as_listObject



64
65
66
67
68
69
70
71
72
# File 'lib/walletone/fields.rb', line 64

def as_list
  keys.inject([]) do |acc, name|
    # Делаем именно так, чтобы работало переопределение методов
    # в Payment
    value = respond_to?(name) ? send(name) : fetch(name)
    Array(value).each { |v| acc << [name.to_s, v.to_s] }
    acc
  end
end

#fetch(key, default = nil) ⇒ Object



60
61
62
# File 'lib/walletone/fields.rb', line 60

def fetch key, default=nil
  super key.to_sym, default
end