api_banking 0.1.2 → 0.1.3
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 +4 -4
- data/api_banking.gemspec +3 -1
- data/lib/api_banking/environment/qg/env.rb +19 -0
- data/lib/api_banking/environment/ybl/env.rb +3 -2
- data/lib/api_banking/soap/domesticRemittanceByPartnerService.rb +242 -0
- data/lib/api_banking/soap/fundsTransferByCustomerService2.rb +27 -1
- data/lib/api_banking/soap/instantCreditService.rb +110 -0
- data/lib/api_banking/soap/instantMoneyTransferService.rb +140 -0
- data/lib/api_banking/soap/notificationService.rb +396 -0
- data/lib/api_banking/soap/soap_client.rb +9 -2
- data/lib/api_banking/version.rb +1 -1
- data/lib/api_banking.rb +4 -0
- metadata +34 -2
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            SHA1:
         | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 3 | 
            +
              metadata.gz: 8f7815f524c5f3a301a23b06dedaf78bbdc5e583
         | 
| 4 | 
            +
              data.tar.gz: 93bb01969b48b89de0580afbbf9c1aa74887588b
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: 91965c47a8f7e004cab8bc4803beb356eb1ed3dc3b2f67cf023bf74686e50589fa319526f06ad029e7fd123326644de849debf52dec2a5f672b68351fce7b92e
         | 
| 7 | 
            +
              data.tar.gz: 398738d686b5a2367a44019e9cd02ff17ad686dd724ff77ef7c577dad5289c67e36dc2a471ea0f99a1519e5a1176e17205c5e3a974fc3d9bf2c5749e02d153f8
         | 
    
        data/api_banking.gemspec
    CHANGED
    
    | @@ -21,7 +21,9 @@ Gem::Specification.new do |spec| | |
| 21 21 | 
             
              spec.add_development_dependency "bundler", "~> 1.9"
         | 
| 22 22 | 
             
              spec.add_development_dependency "rake", "~> 10.0"
         | 
| 23 23 | 
             
              spec.add_development_dependency "minitest"
         | 
| 24 | 
            +
              spec.add_development_dependency "vcr"
         | 
| 25 | 
            +
              spec.add_development_dependency "webmock"
         | 
| 24 26 |  | 
| 25 27 | 
             
              spec.add_dependency "typhoeus"
         | 
| 26 | 
            -
              spec.add_dependency "nokogiri" | 
| 28 | 
            +
              spec.add_dependency "nokogiri"
         | 
| 27 29 | 
             
            end
         | 
| @@ -0,0 +1,19 @@ | |
| 1 | 
            +
            module ApiBanking
         | 
| 2 | 
            +
              module Environment
         | 
| 3 | 
            +
                module QG
         | 
| 4 | 
            +
                  DEMO = Struct.new(:user, :password, :endpoints) do
         | 
| 5 | 
            +
                    def initialize(*)
         | 
| 6 | 
            +
                      super
         | 
| 7 | 
            +
                      self.endpoints = {
         | 
| 8 | 
            +
                        FundsTransferByCustomerService:  'https://api.quantiguous.com/fundsTransferByCustomerServiceHttpService',
         | 
| 9 | 
            +
                        FundsTransferByCustomerService2: 'http://10.211.55.6:7801/fundsTransferByCustomerService2',
         | 
| 10 | 
            +
                        InstantMoneyTransferService:     'https://api.quantiguous.com/IMTService',
         | 
| 11 | 
            +
                        DomesticRemittanceByPartnerService:    'https://api.quantiguous.com/DomesticRemittanceByPartnerService', 
         | 
| 12 | 
            +
                        NotificationService:             'https://api.quantiguous.com/NotificationService',
         | 
| 13 | 
            +
                        InstantCreditService:            'https://api.quantiguous.com/InstantCreditService'
         | 
| 14 | 
            +
                      }
         | 
| 15 | 
            +
                    end
         | 
| 16 | 
            +
                  end
         | 
| 17 | 
            +
                end
         | 
| 18 | 
            +
              end  
         | 
| 19 | 
            +
            end
         | 
| @@ -6,8 +6,9 @@ module ApiBanking | |
| 6 6 | 
             
                      super
         | 
| 7 7 | 
             
                      self.endpoints = {
         | 
| 8 8 | 
             
                        FundsTransferByCustomerService:  'https://uatsky.yesbank.in/app/uat/fundsTransferByCustomerServiceHttpService',
         | 
| 9 | 
            -
                        FundsTransferByCustomerService2: ' | 
| 10 | 
            -
                        InstantMoneyTransferService:     'https://uatsky.yesbank.in:7081/IMTService'
         | 
| 9 | 
            +
                        FundsTransferByCustomerService2: 'http://10.211.55.6:7801/fundsTransferByCustomerService2',
         | 
| 10 | 
            +
                        InstantMoneyTransferService:     'https://uatsky.yesbank.in:7081/IMTService',
         | 
| 11 | 
            +
                        NotificationService:             'http://10.211.55.6:7802/NotificationService'
         | 
| 11 12 | 
             
                      }
         | 
| 12 13 | 
             
                    end
         | 
| 13 14 | 
             
                  end
         | 
| @@ -0,0 +1,242 @@ | |
| 1 | 
            +
            module ApiBanking
         | 
| 2 | 
            +
              class DomesticRemittanceByPartnerService < SoapClient
         | 
| 3 | 
            +
                
         | 
| 4 | 
            +
                SERVICE_NAMESPACE = 'http://www.quantiguous.com/services'
         | 
| 5 | 
            +
                SERVICE_VERSION = 1
         | 
| 6 | 
            +
                
         | 
| 7 | 
            +
                attr_accessor :request, :result
         | 
| 8 | 
            +
             | 
| 9 | 
            +
                #remit
         | 
| 10 | 
            +
                module Remit
         | 
| 11 | 
            +
                  Address = Struct.new(:address1, :address2, :address3, :postalCode, :city, :stateOrProvince, :country)
         | 
| 12 | 
            +
                  Contact = Struct.new(:mobileNo, :emailID)
         | 
| 13 | 
            +
                  Request = Struct.new(:uniqueRequestNo, :partnerCode, :customerID, :debitAccountNo, :remitterAccountNo,
         | 
| 14 | 
            +
                                       :remitterIFSC, :remitterName, :remitterAddress, :remitterContact, :beneficiaryName, :beneficiaryAddress, 
         | 
| 15 | 
            +
                                       :beneficiaryContact, :beneficiaryAccountNo, :beneficiaryIFSC, :transferType, :transferCurrencyCode, :transferAmount,
         | 
| 16 | 
            +
                                       :remitterToBeneficiaryInfo)
         | 
| 17 | 
            +
              
         | 
| 18 | 
            +
                  TransactionStatus = Struct.new(:statusCode, :subStatusCode, :bankReferenceNo, :beneficiaryReferenceNo, :reason)
         | 
| 19 | 
            +
                                     
         | 
| 20 | 
            +
                  Result = Struct.new(:version, :uniqueResponseNo, :attemptNo, :requestReferenceNo, :transferType, :lowBalanceAlert, 
         | 
| 21 | 
            +
                                      :transactionStatus)
         | 
| 22 | 
            +
                end
         | 
| 23 | 
            +
                
         | 
| 24 | 
            +
                #getStatus
         | 
| 25 | 
            +
                module GetStatus
         | 
| 26 | 
            +
                  Request = Struct.new(:version, :partnerCode, :requestReferenceNo)
         | 
| 27 | 
            +
                  TransactionStatus = Struct.new(:statusCode, :subStatusCode, :bankReferenceNo, :beneficiaryReferenceNo, :reason)
         | 
| 28 | 
            +
                
         | 
| 29 | 
            +
                  Result = Struct.new(:version, :transferType, :reqTransferType, :transactionDate, :transferAmount, :transferCurrencyCode,
         | 
| 30 | 
            +
                                    :transactionStatus)
         | 
| 31 | 
            +
                end
         | 
| 32 | 
            +
                                             
         | 
| 33 | 
            +
                #getBalance
         | 
| 34 | 
            +
                module GetBalance
         | 
| 35 | 
            +
                  Request = Struct.new(:version, :partnerCode, :customerID, :accountNo)
         | 
| 36 | 
            +
             | 
| 37 | 
            +
                  Result = Struct.new(:version, :accountCurrencyCode, :accountBalanceAmount, :lowBalanceAlert)
         | 
| 38 | 
            +
                end
         | 
| 39 | 
            +
                
         | 
| 40 | 
            +
                #getTransactions
         | 
| 41 | 
            +
                module GetTransactions
         | 
| 42 | 
            +
                  Request = Struct.new(:version, :partnerCode, :customerID, :accountNo, :dateRange)
         | 
| 43 | 
            +
                
         | 
| 44 | 
            +
                  DateRange = Struct.new(:fromDate, :toDate)    
         | 
| 45 | 
            +
                  TransactionsArray = Struct.new(:transaction)
         | 
| 46 | 
            +
                  Transaction = Struct.new(:transactionDateTime, :transactionType, :amount, :narrative, :referenceNo, :balance)
         | 
| 47 | 
            +
             | 
| 48 | 
            +
                  Result = Struct.new(:version, :openingBalance, :numDebits, :numCredits, :closingBalance, :numTransactions, :transactionsArray)
         | 
| 49 | 
            +
                end
         | 
| 50 | 
            +
                
         | 
| 51 | 
            +
                class << self
         | 
| 52 | 
            +
                  attr_accessor :configuration
         | 
| 53 | 
            +
                end
         | 
| 54 | 
            +
                    
         | 
| 55 | 
            +
                def self.configure
         | 
| 56 | 
            +
                  self.configuration ||= Configuration.new
         | 
| 57 | 
            +
                  yield(configuration)
         | 
| 58 | 
            +
                end
         | 
| 59 | 
            +
                
         | 
| 60 | 
            +
                class Configuration
         | 
| 61 | 
            +
                  attr_accessor :environment, :proxy, :timeout
         | 
| 62 | 
            +
                end
         | 
| 63 | 
            +
                    
         | 
| 64 | 
            +
                def self.remit(request)
         | 
| 65 | 
            +
                  reply = do_remote_call do |xml|
         | 
| 66 | 
            +
                    xml.remit("xmlns:ns" => SERVICE_NAMESPACE ) do
         | 
| 67 | 
            +
                      xml.parent.namespace = xml.parent.namespace_definitions.first
         | 
| 68 | 
            +
                      xml['ns'].version SERVICE_VERSION
         | 
| 69 | 
            +
                      xml['ns'].uniqueRequestNo request.uniqueRequestNo
         | 
| 70 | 
            +
                      xml['ns'].partnerCode request.partnerCode
         | 
| 71 | 
            +
                      xml['ns'].customerID request.customerID
         | 
| 72 | 
            +
                      xml['ns'].debitAccountNo request.debitAccountNo
         | 
| 73 | 
            +
                      xml['ns'].remitterAccountNo request.remitterAccountNo
         | 
| 74 | 
            +
                      xml['ns'].remitterIFSC request.remitterIFSC
         | 
| 75 | 
            +
                      xml['ns'].remitterName request.remitterName
         | 
| 76 | 
            +
                      xml['ns'].remitterAddress do |xml|
         | 
| 77 | 
            +
                        if request.remitterAddress.kind_of?  Remit::Address
         | 
| 78 | 
            +
                          xml.address1 request.remitterAddress.address1
         | 
| 79 | 
            +
                          xml.address2 request.remitterAddress.address2 unless request.remitterAddress.address2.nil?
         | 
| 80 | 
            +
                          xml.address3 request.remitterAddress.address3 unless request.remitterAddress.address3.nil?
         | 
| 81 | 
            +
                          xml.postalCode request.remitterAddress.postalCode unless request.remitterAddress.postalCode.nil?
         | 
| 82 | 
            +
                          xml.city request.remitterAddress.city unless request.remitterAddress.city.nil?
         | 
| 83 | 
            +
                          xml.stateOrProvince request.remitterAddress.stateOrProvince unless request.remitterAddress.stateOrProvince.nil?
         | 
| 84 | 
            +
                          xml.country request.remitterAddress.country unless request.remitterAddress.country.nil?
         | 
| 85 | 
            +
                        else
         | 
| 86 | 
            +
                          xml.address1 request.remitterAddress
         | 
| 87 | 
            +
                        end
         | 
| 88 | 
            +
                      end
         | 
| 89 | 
            +
                      xml['ns'].remitterContact do |xml|
         | 
| 90 | 
            +
                        xml.mobileNo request.remitterContact.mobileNo unless request.remitterContact.mobileNo.nil?
         | 
| 91 | 
            +
                        xml.emailID request.remitterContact.emailID unless request.remitterContact.emailID.nil?
         | 
| 92 | 
            +
                      end
         | 
| 93 | 
            +
                      xml['ns'].beneficiaryName request.beneficiaryName
         | 
| 94 | 
            +
                      xml['ns'].beneficiaryAddress do |xml|
         | 
| 95 | 
            +
                        if request.beneficiaryAddress.kind_of? Remit::Address
         | 
| 96 | 
            +
                          xml.address1 request.beneficiaryAddress.address1
         | 
| 97 | 
            +
                          xml.address2 request.beneficiaryAddress.address2 unless request.beneficiaryAddress.address2.nil?
         | 
| 98 | 
            +
                          xml.address3 request.beneficiaryAddress.address3 unless request.beneficiaryAddress.address3.nil?
         | 
| 99 | 
            +
                          xml.postalCode request.beneficiaryAddress.postalCode unless request.beneficiaryAddress.postalCode.nil?
         | 
| 100 | 
            +
                          xml.city request.beneficiaryAddress.city unless request.beneficiaryAddress.city.nil?
         | 
| 101 | 
            +
                          xml.stateOrProvince request.beneficiaryAddress.stateOrProvince unless request.beneficiaryAddress.stateOrProvince.nil?
         | 
| 102 | 
            +
                          xml.country request.beneficiaryAddress.country unless request.beneficiaryAddress.country.nil?
         | 
| 103 | 
            +
                        else
         | 
| 104 | 
            +
                          xml.address1 request.beneficiaryAddress
         | 
| 105 | 
            +
                        end
         | 
| 106 | 
            +
                      end
         | 
| 107 | 
            +
                      xml['ns'].beneficiaryContact do |xml|
         | 
| 108 | 
            +
                        xml.mobileNo request.beneficiaryContact.mobileNo unless request.beneficiaryContact.mobileNo.nil?
         | 
| 109 | 
            +
                        xml.emailID request.beneficiaryContact.emailID unless request.beneficiaryContact.emailID.nil?
         | 
| 110 | 
            +
                      end
         | 
| 111 | 
            +
                      xml['ns'].beneficiaryAccountNo request.beneficiaryAccountNo
         | 
| 112 | 
            +
                      xml['ns'].beneficiaryIFSC request.beneficiaryIFSC
         | 
| 113 | 
            +
                      xml['ns'].transferType request.transferType
         | 
| 114 | 
            +
                      xml['ns'].transferCurrencyCode 'INR'
         | 
| 115 | 
            +
                      xml['ns'].transferAmount request.transferAmount
         | 
| 116 | 
            +
                      xml['ns'].remitterToBeneficiaryInfo request.remitterToBeneficiaryInfo
         | 
| 117 | 
            +
                    end
         | 
| 118 | 
            +
                  end  
         | 
| 119 | 
            +
                  parse_reply(:remit, reply)
         | 
| 120 | 
            +
                end
         | 
| 121 | 
            +
                
         | 
| 122 | 
            +
                def self.get_status(request)
         | 
| 123 | 
            +
                  reply = do_remote_call do |xml|
         | 
| 124 | 
            +
                    xml.getRemittanceStatus("xmlns:ns" => SERVICE_NAMESPACE ) do
         | 
| 125 | 
            +
                      xml.parent.namespace = xml.parent.namespace_definitions.first
         | 
| 126 | 
            +
                      xml['ns'].version SERVICE_VERSION
         | 
| 127 | 
            +
                      xml['ns'].partnerCode request.partnerCode
         | 
| 128 | 
            +
                      xml['ns'].requestReferenceNo request.requestReferenceNo
         | 
| 129 | 
            +
                    end
         | 
| 130 | 
            +
                  end
         | 
| 131 | 
            +
                  parse_reply(:getRemittanceStatus, reply)
         | 
| 132 | 
            +
                end
         | 
| 133 | 
            +
                
         | 
| 134 | 
            +
                def self.get_balance(request)
         | 
| 135 | 
            +
                  reply = do_remote_call do |xml|
         | 
| 136 | 
            +
                    xml.getBalance("xmlns:ns" => SERVICE_NAMESPACE ) do
         | 
| 137 | 
            +
                      xml.parent.namespace = xml.parent.namespace_definitions.first
         | 
| 138 | 
            +
                      xml['ns'].version SERVICE_VERSION
         | 
| 139 | 
            +
                      xml['ns'].partnerCode request.partnerCode
         | 
| 140 | 
            +
                      xml['ns'].customerID request.customerID
         | 
| 141 | 
            +
                      xml['ns'].accountNo request.accountNo
         | 
| 142 | 
            +
                    end
         | 
| 143 | 
            +
                  end
         | 
| 144 | 
            +
                  parse_reply(:getBalance, reply)
         | 
| 145 | 
            +
                end
         | 
| 146 | 
            +
                
         | 
| 147 | 
            +
                def self.get_transactions(request)
         | 
| 148 | 
            +
                  reply = do_remote_call do |xml|
         | 
| 149 | 
            +
                    xml.getTransactions("xmlns:ns" => SERVICE_NAMESPACE ) do
         | 
| 150 | 
            +
                      xml.parent.namespace = xml.parent.namespace_definitions.first
         | 
| 151 | 
            +
                      xml['ns'].version SERVICE_VERSION
         | 
| 152 | 
            +
                      xml['ns'].partnerCode request.partnerCode
         | 
| 153 | 
            +
                      xml['ns'].customerID request.customerID
         | 
| 154 | 
            +
                      xml['ns'].accountNo request.accountNo
         | 
| 155 | 
            +
                      xml.dateRange do |xml|
         | 
| 156 | 
            +
                        xml.fromDate request.dateRange.fromDate unless request.dateRange.fromDate.nil?
         | 
| 157 | 
            +
                        xml.toDate request.dateRange.toDate unless request.dateRange.toDate.nil?
         | 
| 158 | 
            +
                      end
         | 
| 159 | 
            +
                    end
         | 
| 160 | 
            +
                  end
         | 
| 161 | 
            +
                  parse_reply(:getTransactions, reply)
         | 
| 162 | 
            +
                end
         | 
| 163 | 
            +
                
         | 
| 164 | 
            +
                def self.parse_reply(operationName, reply)
         | 
| 165 | 
            +
                  if reply.kind_of?Fault
         | 
| 166 | 
            +
                    return reply
         | 
| 167 | 
            +
                  else
         | 
| 168 | 
            +
                    case operationName
         | 
| 169 | 
            +
                      when :remit
         | 
| 170 | 
            +
                        transactionStatus = Remit::TransactionStatus.new(
         | 
| 171 | 
            +
                          content_at(reply.at_xpath('//ns:remitResponse/ns:transactionStatus/ns:statusCode', 'ns' => SERVICE_NAMESPACE)),
         | 
| 172 | 
            +
                          content_at(reply.at_xpath('//ns:remitResponse/ns:transactionStatus/ns:subStatusCode', 'ns' => SERVICE_NAMESPACE)),
         | 
| 173 | 
            +
                          content_at(reply.at_xpath('//ns:remitResponse/ns:transactionStatus/ns:bankReferenceNo', 'ns' => SERVICE_NAMESPACE)),
         | 
| 174 | 
            +
                          content_at(reply.at_xpath('//ns:remitResponse/ns:transactionStatus/ns:beneficiaryReferenceNo', 'ns' => SERVICE_NAMESPACE)),
         | 
| 175 | 
            +
                          content_at(reply.at_xpath('//ns:remitResponse/ns:transactionStatus/ns:reason', 'ns' => SERVICE_NAMESPACE))
         | 
| 176 | 
            +
                        )
         | 
| 177 | 
            +
                        return Remit::Result.new(
         | 
| 178 | 
            +
                          content_at(reply.at_xpath('//ns:remitResponse/ns:version', 'ns' => SERVICE_NAMESPACE)),
         | 
| 179 | 
            +
                          content_at(reply.at_xpath('//ns:remitResponse/ns:uniqueResponseNo', 'ns' => SERVICE_NAMESPACE)),
         | 
| 180 | 
            +
                          content_at(reply.at_xpath('//ns:remitResponse/ns:attemptNo', 'ns' => SERVICE_NAMESPACE)),
         | 
| 181 | 
            +
                          content_at(reply.at_xpath('//ns:remitResponse/ns:requestReferenceNo', 'ns' => SERVICE_NAMESPACE)),
         | 
| 182 | 
            +
                          content_at(reply.at_xpath('//ns:remitResponse/ns:transferType', 'ns' => SERVICE_NAMESPACE)),
         | 
| 183 | 
            +
                          content_at(reply.at_xpath('//ns:remitResponse/ns:lowBalanceAlert', 'ns' => SERVICE_NAMESPACE)),
         | 
| 184 | 
            +
                          transactionStatus
         | 
| 185 | 
            +
                        )
         | 
| 186 | 
            +
                      when :getRemittanceStatus
         | 
| 187 | 
            +
                        transactionStatus = GetStatus::TransactionStatus.new(
         | 
| 188 | 
            +
                          content_at(reply.at_xpath('//ns:getRemittanceStatusResponse/ns:transactionStatus/ns:statusCode', 'ns' => SERVICE_NAMESPACE)),
         | 
| 189 | 
            +
                          content_at(reply.at_xpath('//ns:getRemittanceStatusResponse/ns:transactionStatus/ns:subStatusCode', 'ns' => SERVICE_NAMESPACE)),
         | 
| 190 | 
            +
                          content_at(reply.at_xpath('//ns:getRemittanceStatusResponse/ns:transactionStatus/ns:bankReferenceNo', 'ns' => SERVICE_NAMESPACE)),
         | 
| 191 | 
            +
                          content_at(reply.at_xpath('//ns:getRemittanceStatusResponse/ns:transactionStatus/ns:beneficiaryReferenceNo', 'ns' => SERVICE_NAMESPACE))
         | 
| 192 | 
            +
                        )
         | 
| 193 | 
            +
                        return GetStatus::Result.new(
         | 
| 194 | 
            +
                          content_at(reply.at_xpath('//ns:getRemittanceStatusResponse/ns:version', 'ns' => SERVICE_NAMESPACE)),
         | 
| 195 | 
            +
                          content_at(reply.at_xpath('//ns:getRemittanceStatusResponse/ns:transferType', 'ns' => SERVICE_NAMESPACE)),
         | 
| 196 | 
            +
                          content_at(reply.at_xpath('//ns:getRemittanceStatusResponse/ns:reqTransferType', 'ns' => SERVICE_NAMESPACE)),
         | 
| 197 | 
            +
                          content_at(reply.at_xpath('//ns:getRemittanceStatusResponse/ns:transactionDate', 'ns' => SERVICE_NAMESPACE)),
         | 
| 198 | 
            +
                          content_at(reply.at_xpath('//ns:getRemittanceStatusResponse/ns:transferAmount', 'ns' => SERVICE_NAMESPACE)),
         | 
| 199 | 
            +
                          content_at(reply.at_xpath('//ns:getRemittanceStatusResponse/ns:transferCurrencyCode', 'ns' => SERVICE_NAMESPACE)),
         | 
| 200 | 
            +
                          transactionStatus
         | 
| 201 | 
            +
                        ) 
         | 
| 202 | 
            +
                      when :getBalance
         | 
| 203 | 
            +
                        return GetBalance::Result.new(
         | 
| 204 | 
            +
                          content_at(reply.at_xpath('//ns:getBalanceResponse/ns:version', 'ns' => SERVICE_NAMESPACE)),
         | 
| 205 | 
            +
                          content_at(reply.at_xpath('//ns:getBalanceResponse/ns:accountCurrencyCode', 'ns' => SERVICE_NAMESPACE)),
         | 
| 206 | 
            +
                          content_at(reply.at_xpath('//ns:getBalanceResponse/ns:accountBalanceAmount', 'ns' => SERVICE_NAMESPACE)),
         | 
| 207 | 
            +
                          content_at(reply.at_xpath('//ns:getBalanceResponse/ns:lowBalanceAlert', 'ns' => SERVICE_NAMESPACE))
         | 
| 208 | 
            +
                        )
         | 
| 209 | 
            +
                      when :getTransactions
         | 
| 210 | 
            +
                        txnsArray = Array.new
         | 
| 211 | 
            +
                        i = 1
         | 
| 212 | 
            +
                        numTxns = content_at(reply.at_xpath('//ns:getTransactionsResponse/ns:numTransactions', 'ns' => SERVICE_NAMESPACE)).to_i
         | 
| 213 | 
            +
                        until i > numTxns
         | 
| 214 | 
            +
                          txnsArray << GetTransactions::Transaction.new(
         | 
| 215 | 
            +
                            content_at(reply.at_xpath("//ns:getTransactionsResponse/ns:transactionsArray/ns:transaction[#{i}]/ns:transactionDateTime", 'ns' => SERVICE_NAMESPACE)),
         | 
| 216 | 
            +
                            content_at(reply.at_xpath("//ns:getTransactionsResponse/ns:transactionsArray/ns:transaction[#{i}]/ns:transactionType", 'ns' => SERVICE_NAMESPACE)),
         | 
| 217 | 
            +
                            content_at(reply.at_xpath("//ns:getTransactionsResponse/ns:transactionsArray/ns:transaction[#{i}]/ns:amount", 'ns' => SERVICE_NAMESPACE)),
         | 
| 218 | 
            +
                            content_at(reply.at_xpath("//ns:getTransactionsResponse/ns:transactionsArray/ns:transaction[#{i}]/ns:narrative", 'ns' => SERVICE_NAMESPACE)),
         | 
| 219 | 
            +
                            content_at(reply.at_xpath("//ns:getTransactionsResponse/ns:transactionsArray/ns:transaction[#{i}]/ns:referenceNo", 'ns' => SERVICE_NAMESPACE)),
         | 
| 220 | 
            +
                            content_at(reply.at_xpath("//ns:getTransactionsResponse/ns:transactionsArray/ns:transaction[#{i}]/ns:balance", 'ns' => SERVICE_NAMESPACE))
         | 
| 221 | 
            +
                          )
         | 
| 222 | 
            +
                          i = i + 1;
         | 
| 223 | 
            +
                        end;
         | 
| 224 | 
            +
                        transactionsArray = GetTransactions::TransactionsArray.new(txnsArray)
         | 
| 225 | 
            +
                        return GetTransactions::Result.new(
         | 
| 226 | 
            +
                          content_at(reply.at_xpath('//ns:getTransactionsResponse/ns:version', 'ns' => SERVICE_NAMESPACE)),
         | 
| 227 | 
            +
                          content_at(reply.at_xpath('//ns:getTransactionsResponse/ns:openingBalance', 'ns' => SERVICE_NAMESPACE)),
         | 
| 228 | 
            +
                          content_at(reply.at_xpath('//ns:getTransactionsResponse/ns:numDebits', 'ns' => SERVICE_NAMESPACE)),
         | 
| 229 | 
            +
                          content_at(reply.at_xpath('//ns:getTransactionsResponse/ns:numCredits', 'ns' => SERVICE_NAMESPACE)),
         | 
| 230 | 
            +
                          content_at(reply.at_xpath('//ns:getTransactionsResponse/ns:closingBalance', 'ns' => SERVICE_NAMESPACE)),
         | 
| 231 | 
            +
                          content_at(reply.at_xpath('//ns:getTransactionsResponse/ns:numTransactions', 'ns' => SERVICE_NAMESPACE)),
         | 
| 232 | 
            +
                          transactionsArray
         | 
| 233 | 
            +
                        )
         | 
| 234 | 
            +
                    end         
         | 
| 235 | 
            +
                  end
         | 
| 236 | 
            +
                end
         | 
| 237 | 
            +
                
         | 
| 238 | 
            +
                def url
         | 
| 239 | 
            +
                  return '/DomesticRemittanceByPartnerService'
         | 
| 240 | 
            +
                end
         | 
| 241 | 
            +
              end
         | 
| 242 | 
            +
            end
         | 
| @@ -23,6 +23,12 @@ module ApiBanking | |
| 23 23 | 
             
                  Result = Struct.new(:version, :transferType, :reqTransferType, :transactionDate, :transferAmount, :transferCurrencyCode, :transactionStatus)
         | 
| 24 24 | 
             
                end
         | 
| 25 25 |  | 
| 26 | 
            +
                #getBalance
         | 
| 27 | 
            +
                module GetBalance
         | 
| 28 | 
            +
                  Request = Struct.new(:version, :appID, :customerID, :AccountNumber)
         | 
| 29 | 
            +
                  Result = Struct.new(:Version, :accountCurrencyCode, :accountBalanceAmount, :lowBalanceAlert)
         | 
| 30 | 
            +
                end
         | 
| 31 | 
            +
                
         | 
| 26 32 | 
             
                class << self
         | 
| 27 33 | 
             
                  attr_accessor :configuration
         | 
| 28 34 | 
             
                end
         | 
| @@ -93,6 +99,19 @@ module ApiBanking | |
| 93 99 | 
             
                  end
         | 
| 94 100 | 
             
                  parse_reply(:getStatus, reply)
         | 
| 95 101 | 
             
                end
         | 
| 102 | 
            +
                
         | 
| 103 | 
            +
                def self.get_balance(request)
         | 
| 104 | 
            +
                  reply = do_remote_call do |xml|
         | 
| 105 | 
            +
                    xml.getBalance("xmlns:ns" => SERVICE_NAMESPACE ) do
         | 
| 106 | 
            +
                      xml.parent.namespace = xml.parent.namespace_definitions.first
         | 
| 107 | 
            +
                      xml['ns'].version SERVICE_VERSION
         | 
| 108 | 
            +
                      xml['ns'].appID request.appID
         | 
| 109 | 
            +
                      xml['ns'].customerID request.customerID
         | 
| 110 | 
            +
                      xml['ns'].AccountNumber request.AccountNumber
         | 
| 111 | 
            +
                    end
         | 
| 112 | 
            +
                  end
         | 
| 113 | 
            +
                  parse_reply(:getBalance, reply)
         | 
| 114 | 
            +
                end
         | 
| 96 115 |  | 
| 97 116 | 
             
                private
         | 
| 98 117 |  | 
| @@ -128,13 +147,20 @@ module ApiBanking | |
| 128 147 | 
             
                          content_at(reply.at_xpath('//ns:getStatusResponse/ns:transactionStatus/ns:beneficiaryReferenceNo', 'ns' => SERVICE_NAMESPACE))
         | 
| 129 148 | 
             
                        )
         | 
| 130 149 | 
             
                        return GetStatus::Result.new(
         | 
| 131 | 
            -
                          content_at(reply.at_xpath('//ns:getStatusResponse | 
| 150 | 
            +
                          content_at(reply.at_xpath('//ns:getStatusResponse/ns:version', 'ns' => SERVICE_NAMESPACE)),
         | 
| 132 151 | 
             
                          content_at(reply.at_xpath('//ns:getStatusResponse/ns:transferType', 'ns' => SERVICE_NAMESPACE)),
         | 
| 133 152 | 
             
                          content_at(reply.at_xpath('//ns:getStatusResponse/ns:reqTransferType', 'ns' => SERVICE_NAMESPACE)),
         | 
| 134 153 | 
             
                          content_at(reply.at_xpath('//ns:getStatusResponse/ns:transactionDate', 'ns' => SERVICE_NAMESPACE)),
         | 
| 135 154 | 
             
                          content_at(reply.at_xpath('//ns:getStatusResponse/ns:transferAmount', 'ns' => SERVICE_NAMESPACE)),
         | 
| 136 155 | 
             
                          content_at(reply.at_xpath('//ns:getStatusResponse/ns:transferCurrencyCode', 'ns' => SERVICE_NAMESPACE)),
         | 
| 137 156 | 
             
                          transactionStatus
         | 
| 157 | 
            +
                        )  
         | 
| 158 | 
            +
                      when :getBalance
         | 
| 159 | 
            +
                        return GetBalance::Result.new(
         | 
| 160 | 
            +
                          content_at(reply.at_xpath('//ns:getBalanceResponse/ns:Version', 'ns' => SERVICE_NAMESPACE)),
         | 
| 161 | 
            +
                          content_at(reply.at_xpath('//ns:getBalanceResponse/ns:accountCurrencyCode', 'ns' => SERVICE_NAMESPACE)),
         | 
| 162 | 
            +
                          content_at(reply.at_xpath('//ns:getBalanceResponse/ns:accountBalanceAmount', 'ns' => SERVICE_NAMESPACE)),
         | 
| 163 | 
            +
                          content_at(reply.at_xpath('//ns:getBalanceResponse/ns:lowBalanceAlert', 'ns' => SERVICE_NAMESPACE))
         | 
| 138 164 | 
             
                        )   
         | 
| 139 165 | 
             
                    end         
         | 
| 140 166 | 
             
                  end
         | 
| @@ -0,0 +1,110 @@ | |
| 1 | 
            +
            module ApiBanking
         | 
| 2 | 
            +
              class InstantCreditService < SoapClient
         | 
| 3 | 
            +
                
         | 
| 4 | 
            +
                SERVICE_NAMESPACE = 'http://www.quantiguous.com/services'
         | 
| 5 | 
            +
                SERVICE_VERSION = 1
         | 
| 6 | 
            +
                
         | 
| 7 | 
            +
                attr_accessor :request, :result
         | 
| 8 | 
            +
                
         | 
| 9 | 
            +
                #payNow
         | 
| 10 | 
            +
                module PayNow
         | 
| 11 | 
            +
                  InvoiceDetail = Struct.new(:invoiceNo, :invoiceDate, :dueDate, :invoiceAmount)
         | 
| 12 | 
            +
                  Request = Struct.new(:version, :uniqueRequestNo, :customerID, :appID, :supplierCode, :invoiceDetail, :discountedAmount, :feeAmount)
         | 
| 13 | 
            +
                  Result = Struct.new(:version, :requestReferenceNo, :creditReferenceNo)
         | 
| 14 | 
            +
                end
         | 
| 15 | 
            +
                
         | 
| 16 | 
            +
                #getStatus
         | 
| 17 | 
            +
                module GetStatus
         | 
| 18 | 
            +
                  Request = Struct.new(:version, :appID, :customerID, :requestReferenceNo)
         | 
| 19 | 
            +
                  Status = Struct.new(:statusCode, :subStatusCode, :subStatusText)
         | 
| 20 | 
            +
                  Result = Struct.new(:version, :requestReferenceNo, :status, :creditReferenceNo)
         | 
| 21 | 
            +
                end
         | 
| 22 | 
            +
                
         | 
| 23 | 
            +
                class << self
         | 
| 24 | 
            +
                  attr_accessor :configuration
         | 
| 25 | 
            +
                end
         | 
| 26 | 
            +
                    
         | 
| 27 | 
            +
                def self.configure
         | 
| 28 | 
            +
                  self.configuration ||= Configuration.new
         | 
| 29 | 
            +
                  yield(configuration)
         | 
| 30 | 
            +
                end
         | 
| 31 | 
            +
                
         | 
| 32 | 
            +
                class Configuration
         | 
| 33 | 
            +
                  attr_accessor :environment, :proxy, :timeout
         | 
| 34 | 
            +
                end
         | 
| 35 | 
            +
                    
         | 
| 36 | 
            +
                def self.pay_now(request)
         | 
| 37 | 
            +
                  reply = do_remote_call do |xml|
         | 
| 38 | 
            +
                    xml.payNow("xmlns:ns" => SERVICE_NAMESPACE ) do
         | 
| 39 | 
            +
                      xml.parent.namespace = xml.parent.namespace_definitions.first
         | 
| 40 | 
            +
                      xml['ns'].version SERVICE_VERSION
         | 
| 41 | 
            +
                      xml['ns'].uniqueRequestNo request.uniqueRequestNo
         | 
| 42 | 
            +
                      xml['ns'].customerID request.customerID
         | 
| 43 | 
            +
                      xml['ns'].appID request.appID
         | 
| 44 | 
            +
                      xml['ns'].supplierCode request.supplierCode
         | 
| 45 | 
            +
                      xml['ns'].invoiceDetail do  |xml|
         | 
| 46 | 
            +
                        xml.invoiceNo request.invoiceDetail.invoiceNo
         | 
| 47 | 
            +
                        xml.invoiceDate request.invoiceDetail.invoiceDate
         | 
| 48 | 
            +
                        xml.dueDate request.invoiceDetail.dueDate
         | 
| 49 | 
            +
                        xml.invoiceAmount request.invoiceDetail.invoiceAmount
         | 
| 50 | 
            +
                      end
         | 
| 51 | 
            +
                      xml.discountedAmount request.discountedAmount
         | 
| 52 | 
            +
                      xml.feeAmount request.feeAmount
         | 
| 53 | 
            +
                    end
         | 
| 54 | 
            +
                  end
         | 
| 55 | 
            +
                  parse_reply(:payNow, reply)
         | 
| 56 | 
            +
                end
         | 
| 57 | 
            +
             | 
| 58 | 
            +
                
         | 
| 59 | 
            +
                def self.get_status(request)
         | 
| 60 | 
            +
                  reply = do_remote_call do |xml|
         | 
| 61 | 
            +
                    xml.getStatus("xmlns:ns" => SERVICE_NAMESPACE ) do
         | 
| 62 | 
            +
                      xml.parent.namespace = xml.parent.namespace_definitions.first
         | 
| 63 | 
            +
                      xml['ns'].version SERVICE_VERSION
         | 
| 64 | 
            +
                      xml['ns'].customerID request.customerID
         | 
| 65 | 
            +
                      xml['ns'].appID request.appID
         | 
| 66 | 
            +
                      xml['ns'].requestReferenceNo request.requestReferenceNo
         | 
| 67 | 
            +
                    end
         | 
| 68 | 
            +
                  end
         | 
| 69 | 
            +
                  parse_reply(:getStatus, reply)
         | 
| 70 | 
            +
                end
         | 
| 71 | 
            +
             | 
| 72 | 
            +
                private
         | 
| 73 | 
            +
                
         | 
| 74 | 
            +
                def self.uri()
         | 
| 75 | 
            +
                    return '/InstantCreditService'
         | 
| 76 | 
            +
                end
         | 
| 77 | 
            +
                    
         | 
| 78 | 
            +
                def self.parse_reply(operationName, reply)
         | 
| 79 | 
            +
                  if reply.kind_of?Fault
         | 
| 80 | 
            +
                    return reply
         | 
| 81 | 
            +
                  else
         | 
| 82 | 
            +
                    case operationName
         | 
| 83 | 
            +
                      when :payNow
         | 
| 84 | 
            +
                        return PayNow::Result.new(
         | 
| 85 | 
            +
                          content_at(reply.at_xpath('//ns:payNowResponse/ns:version', 'ns' => SERVICE_NAMESPACE)),
         | 
| 86 | 
            +
                          content_at(reply.at_xpath('//ns:payNowResponse/ns:requestReferenceNo', 'ns' => SERVICE_NAMESPACE)),
         | 
| 87 | 
            +
                          content_at(reply.at_xpath('//ns:payNowResponse/ns:creditReferenceNo', 'ns' => SERVICE_NAMESPACE))
         | 
| 88 | 
            +
                          )
         | 
| 89 | 
            +
                      when :getStatus
         | 
| 90 | 
            +
                        status = GetStatus::Status.new(
         | 
| 91 | 
            +
                          content_at(reply.at_xpath('//ns:getStatusResponse/ns:status/ns:statusCode', 'ns' => SERVICE_NAMESPACE)),
         | 
| 92 | 
            +
                          content_at(reply.at_xpath('//ns:getStatusResponse/ns:status/ns:subStatusCode', 'ns' => SERVICE_NAMESPACE)),
         | 
| 93 | 
            +
                          content_at(reply.at_xpath('//ns:getStatusResponse/ns:status/ns:subStatusText', 'ns' => SERVICE_NAMESPACE))
         | 
| 94 | 
            +
                        )
         | 
| 95 | 
            +
                        return GetStatus::Result.new(
         | 
| 96 | 
            +
                          content_at(reply.at_xpath('//ns:getStatusResponse/ns:version', 'ns' => SERVICE_NAMESPACE)),
         | 
| 97 | 
            +
                          content_at(reply.at_xpath('//ns:getStatusResponse/ns:requestReferenceNo', 'ns' => SERVICE_NAMESPACE)),
         | 
| 98 | 
            +
                          status,
         | 
| 99 | 
            +
                          content_at(reply.at_xpath('//ns:getStatusResponse/ns:creditReferenceNo', 'ns' => SERVICE_NAMESPACE))
         | 
| 100 | 
            +
                        ) 
         | 
| 101 | 
            +
                    end         
         | 
| 102 | 
            +
                  end
         | 
| 103 | 
            +
                end
         | 
| 104 | 
            +
                
         | 
| 105 | 
            +
                def url
         | 
| 106 | 
            +
                  return '/InstantCreditService'
         | 
| 107 | 
            +
                end
         | 
| 108 | 
            +
             | 
| 109 | 
            +
              end
         | 
| 110 | 
            +
            end
         | 
| @@ -5,6 +5,35 @@ module ApiBanking | |
| 5 5 | 
             
                SERVICE_VERSION = 1
         | 
| 6 6 |  | 
| 7 7 | 
             
                attr_accessor :request, :result
         | 
| 8 | 
            +
                
         | 
| 9 | 
            +
                module AddBeneficiary
         | 
| 10 | 
            +
                  Request = Struct.new(:uniqueRequestNo, :appID, :customerID, :beneficiaryMobileNo, :beneficiaryName, :beneficiaryAddress)
         | 
| 11 | 
            +
                  Address = Struct.new(:addressLine, :cityName, :postalCode)
         | 
| 12 | 
            +
             | 
| 13 | 
            +
                  Result = Struct.new(:uniqueResponseNo)
         | 
| 14 | 
            +
                end
         | 
| 15 | 
            +
             | 
| 16 | 
            +
                module CancelTransfer
         | 
| 17 | 
            +
                  Request = Struct.new(:uniqueRequestNo, :appID, :customerID, :initiateTransferRequestNo, :reasonToCancel)
         | 
| 18 | 
            +
                  Result = Struct.new(:uniqueResponseNo, :cancelResult)
         | 
| 19 | 
            +
                  CancelResult = Struct.new(:imtReferenceNo, :bankReferenceNo)
         | 
| 20 | 
            +
                end
         | 
| 21 | 
            +
             | 
| 22 | 
            +
                module DeleteBeneficiary
         | 
| 23 | 
            +
                  Request = Struct.new(:uniqueRequestNo, :appID, :customerID, :beneficiaryMobileNo)
         | 
| 24 | 
            +
             | 
| 25 | 
            +
                  Result = Struct.new(:uniqueResponseNo)
         | 
| 26 | 
            +
                end
         | 
| 27 | 
            +
             | 
| 28 | 
            +
                module GetBeneficiaries
         | 
| 29 | 
            +
                  Request = Struct.new(:uniqueRequestNo, :appID, :customerID, :dateRange, :numBeneficiaries)
         | 
| 30 | 
            +
                
         | 
| 31 | 
            +
                  DateRange = Struct.new(:fromDate, :toDate)  
         | 
| 32 | 
            +
                  BeneficiariesArray = Struct.new(:beneficiary)
         | 
| 33 | 
            +
                  Beneficiary = Struct.new(:beneficiaryName, :beneficiaryMobileNo, :registrationDate, :addressLine, :postalCode)
         | 
| 34 | 
            +
             | 
| 35 | 
            +
                  Result = Struct.new(:numBeneficiaries, :beneficiariesArray)
         | 
| 36 | 
            +
                end
         | 
| 8 37 |  | 
| 9 38 | 
             
                #transfer
         | 
| 10 39 | 
             
                module InitiateTransfer
         | 
| @@ -43,6 +72,80 @@ module ApiBanking | |
| 43 72 |  | 
| 44 73 | 
             
                  parse_reply(:initiateTransfer, reply)
         | 
| 45 74 | 
             
                end
         | 
| 75 | 
            +
             | 
| 76 | 
            +
                def self.add_beneficiary(request)
         | 
| 77 | 
            +
                  reply = do_remote_call do |xml|
         | 
| 78 | 
            +
                    xml.addBeneficiary("xmlns:ns" => SERVICE_NAMESPACE ) do
         | 
| 79 | 
            +
                      xml.parent.namespace = xml.parent.namespace_definitions.first
         | 
| 80 | 
            +
                      xml['ns'].version SERVICE_VERSION
         | 
| 81 | 
            +
                      xml['ns'].uniqueRequestNo request.uniqueRequestNo
         | 
| 82 | 
            +
                      xml['ns'].appID request.appID
         | 
| 83 | 
            +
                      xml['ns'].customerID request.customerID
         | 
| 84 | 
            +
                      xml['ns'].beneficiaryMobileNo request.beneficiaryMobileNo
         | 
| 85 | 
            +
                      xml['ns'].beneficiaryName request.beneficiaryName
         | 
| 86 | 
            +
                      xml['ns'].beneficiaryAddress do  |xml|
         | 
| 87 | 
            +
                        if request.beneficiaryAddress.kind_of? AddBeneficiary::Address 
         | 
| 88 | 
            +
                          xml.addressLine request.beneficiaryAddress.addressLine
         | 
| 89 | 
            +
                          xml.cityName request.beneficiaryAddress.cityName unless request.beneficiaryAddress.cityName.nil?
         | 
| 90 | 
            +
                          xml.postalCode request.beneficiaryAddress.postalCode unless request.beneficiaryAddress.postalCode.nil?
         | 
| 91 | 
            +
                        else
         | 
| 92 | 
            +
                          xml.addressLine request.beneficiaryAddress
         | 
| 93 | 
            +
                        end
         | 
| 94 | 
            +
                      end
         | 
| 95 | 
            +
                    end
         | 
| 96 | 
            +
                  end
         | 
| 97 | 
            +
                  
         | 
| 98 | 
            +
                  parse_reply(:addBeneficiary, reply)
         | 
| 99 | 
            +
                end
         | 
| 100 | 
            +
             | 
| 101 | 
            +
                def self.delete_beneficiary(request)
         | 
| 102 | 
            +
                  reply = do_remote_call do |xml|
         | 
| 103 | 
            +
                    xml.deleteBeneficiary("xmlns:ns" => SERVICE_NAMESPACE ) do
         | 
| 104 | 
            +
                      xml.parent.namespace = xml.parent.namespace_definitions.first
         | 
| 105 | 
            +
                      xml['ns'].version SERVICE_VERSION
         | 
| 106 | 
            +
                      xml['ns'].uniqueRequestNo request.uniqueRequestNo
         | 
| 107 | 
            +
                      xml['ns'].appID request.appID
         | 
| 108 | 
            +
                      xml['ns'].customerID request.customerID
         | 
| 109 | 
            +
                      xml['ns'].beneficiaryMobileNo request.beneficiaryMobileNo
         | 
| 110 | 
            +
                    end
         | 
| 111 | 
            +
                  end
         | 
| 112 | 
            +
                  
         | 
| 113 | 
            +
                  parse_reply(:deleteBeneficiary, reply)
         | 
| 114 | 
            +
                end
         | 
| 115 | 
            +
             | 
| 116 | 
            +
                def self.get_beneficiaries(request)
         | 
| 117 | 
            +
                  reply = do_remote_call do |xml|
         | 
| 118 | 
            +
                    xml.getBeneficiaries("xmlns:ns" => SERVICE_NAMESPACE ) do
         | 
| 119 | 
            +
                      xml.parent.namespace = xml.parent.namespace_definitions.first
         | 
| 120 | 
            +
                      xml['ns'].version SERVICE_VERSION
         | 
| 121 | 
            +
                      xml['ns'].uniqueRequestNo request.uniqueRequestNo
         | 
| 122 | 
            +
                      xml['ns'].appID request.appID
         | 
| 123 | 
            +
                      xml['ns'].customerID request.customerID
         | 
| 124 | 
            +
                      xml.dateRange do |xml|
         | 
| 125 | 
            +
                        xml.fromDate request.dateRange.fromDate unless request.dateRange.fromDate.nil?
         | 
| 126 | 
            +
                        xml.toDate request.dateRange.toDate unless request.dateRange.toDate.nil?
         | 
| 127 | 
            +
                      end
         | 
| 128 | 
            +
                      xml['ns'].numBeneficiaries request.numBeneficiaries
         | 
| 129 | 
            +
                    end
         | 
| 130 | 
            +
                  end
         | 
| 131 | 
            +
                  parse_reply(:getBeneficiaries, reply)
         | 
| 132 | 
            +
                end
         | 
| 133 | 
            +
             | 
| 134 | 
            +
                def self.cancel_transfer(request)
         | 
| 135 | 
            +
                  reply = do_remote_call do |xml|
         | 
| 136 | 
            +
                    xml.cancelTransfer("xmlns:ns" => SERVICE_NAMESPACE ) do
         | 
| 137 | 
            +
                      xml.parent.namespace = xml.parent.namespace_definitions.first
         | 
| 138 | 
            +
                      xml['ns'].version SERVICE_VERSION
         | 
| 139 | 
            +
                      xml['ns'].uniqueRequestNo request.uniqueRequestNo
         | 
| 140 | 
            +
                      xml['ns'].appID request.appID
         | 
| 141 | 
            +
                      xml['ns'].customerID request.customerID
         | 
| 142 | 
            +
                      xml['ns'].initiateTransferRequestNo request.initiateTransferRequestNo
         | 
| 143 | 
            +
                      xml['ns'].reasonToCancel request.reasonToCancel
         | 
| 144 | 
            +
                    end
         | 
| 145 | 
            +
                  end
         | 
| 146 | 
            +
                  
         | 
| 147 | 
            +
                  parse_reply(:deleteBeneficiary, reply)
         | 
| 148 | 
            +
                end
         | 
| 46 149 |  | 
| 47 150 | 
             
                private
         | 
| 48 151 |  | 
| @@ -61,6 +164,43 @@ module ApiBanking | |
| 61 164 | 
             
                        content_at(reply.at_xpath('//ns:initiateTransferResponse/ns:uniqueResponseNo', 'ns' => SERVICE_NAMESPACE)),
         | 
| 62 165 | 
             
                        transferResult
         | 
| 63 166 | 
             
                        )
         | 
| 167 | 
            +
                      when :addBeneficiary
         | 
| 168 | 
            +
                      return AddBeneficiary::Result.new(
         | 
| 169 | 
            +
                        content_at(reply.at_xpath('//ns:addBeneficiaryResponse/ns:uniqueResponseNo', 'ns' => SERVICE_NAMESPACE)),
         | 
| 170 | 
            +
                        )
         | 
| 171 | 
            +
                      when :deleteBeneficiary
         | 
| 172 | 
            +
                      return DeleteBeneficiary::Result.new(
         | 
| 173 | 
            +
                        content_at(reply.at_xpath('//ns:deleteBeneficiaryResponse/ns:uniqueResponseNo', 'ns' => SERVICE_NAMESPACE)),
         | 
| 174 | 
            +
                        )
         | 
| 175 | 
            +
                      when :getBeneficiaries
         | 
| 176 | 
            +
                        beneficiariesArray = Array.new
         | 
| 177 | 
            +
                        i = 1
         | 
| 178 | 
            +
                        numBeneficiaries = content_at(reply.at_xpath('//ns:getBeneficiariesResponse/ns:numBeneficiaries', 'ns' => SERVICE_NAMESPACE)).to_i
         | 
| 179 | 
            +
                        until i > numBeneficiaries
         | 
| 180 | 
            +
                          BeneficiariesArray << getBeneficiaries::Beneficiary.new(
         | 
| 181 | 
            +
                            content_at(reply.at_xpath("//ns:getBeneficiariesResponse/ns:BeneficiariesArray/ns:beneficiary[#{i}]/ns:beneficiaryName", 'ns' => SERVICE_NAMESPACE)),
         | 
| 182 | 
            +
                            content_at(reply.at_xpath("//ns:getBeneficiariesResponse/ns:BeneficiariesArray/ns:beneficiary[#{i}]/ns:beneficiaryMobileNo", 'ns' => SERVICE_NAMESPACE)),
         | 
| 183 | 
            +
                            content_at(reply.at_xpath("//ns:getBeneficiariesResponse/ns:BeneficiariesArray/ns:beneficiary[#{i}]/ns:registrationDate", 'ns' => SERVICE_NAMESPACE)),
         | 
| 184 | 
            +
                            content_at(reply.at_xpath("//ns:getBeneficiariesResponse/ns:BeneficiariesArray/ns:beneficiary[#{i}]/ns:addressLine", 'ns' => SERVICE_NAMESPACE)),
         | 
| 185 | 
            +
                            content_at(reply.at_xpath("//ns:getBeneficiariesResponse/ns:BeneficiariesArray/ns:beneficiary[#{i}]/ns:postalCode", 'ns' => SERVICE_NAMESPACE))
         | 
| 186 | 
            +
                          )
         | 
| 187 | 
            +
                          i = i + 1;
         | 
| 188 | 
            +
                        end;
         | 
| 189 | 
            +
                        beneArray = getBeneficiaries::BeneficiariesArray.new(beneficiariesArray)
         | 
| 190 | 
            +
                        return getBeneficiaries::Result.new(
         | 
| 191 | 
            +
                          content_at(reply.at_xpath('//ns:getBeneficiariesResponse/ns:version', 'ns' => SERVICE_NAMESPACE)),
         | 
| 192 | 
            +
                          content_at(reply.at_xpath('//ns:getBeneficiariesResponse/ns:numBeneficiaries', 'ns' => SERVICE_NAMESPACE)),
         | 
| 193 | 
            +
                          beneArray
         | 
| 194 | 
            +
                        )
         | 
| 195 | 
            +
                      when :cancelTransfer
         | 
| 196 | 
            +
                      cancelResult = CancelTransfer::CancelResult.new(
         | 
| 197 | 
            +
                        content_at(reply.at_xpath('//ns:cancelTransferResponse/ns:cancelResult/ns:imtReferenceNo', 'ns' => SERVICE_NAMESPACE)),
         | 
| 198 | 
            +
                        content_at(reply.at_xpath('//ns:cancelTransferResponse/ns:cancelResult/ns:bankReferenceNo', 'ns' => SERVICE_NAMESPACE))
         | 
| 199 | 
            +
                      )
         | 
| 200 | 
            +
                      return CancelTransfer::Result.new(
         | 
| 201 | 
            +
                        content_at(reply.at_xpath('//ns:cancelTransferResponse/ns:uniqueResponseNo', 'ns' => SERVICE_NAMESPACE)),
         | 
| 202 | 
            +
                        cancelResult
         | 
| 203 | 
            +
                      )
         | 
| 64 204 | 
             
                    end
         | 
| 65 205 | 
             
                  end
         | 
| 66 206 | 
             
                end
         | 
| @@ -0,0 +1,396 @@ | |
| 1 | 
            +
            module ApiBanking
         | 
| 2 | 
            +
              class NotificationService < SoapClient
         | 
| 3 | 
            +
                
         | 
| 4 | 
            +
                SERVICE_NAMESPACE = 'http://www.quantiguous.com/services'
         | 
| 5 | 
            +
                SERVICE_VERSION = 1
         | 
| 6 | 
            +
                
         | 
| 7 | 
            +
                attr_accessor :request, :result
         | 
| 8 | 
            +
             | 
| 9 | 
            +
                #getTopics
         | 
| 10 | 
            +
                module GetTopics
         | 
| 11 | 
            +
                  ReqCriteria = Struct.new(:topicGroup, :subscriber)
         | 
| 12 | 
            +
                  Subscriber = Struct.new(:customerID, :subscribed, :unsubscribed)
         | 
| 13 | 
            +
                  Request = Struct.new(:version, :appID, :criteria)
         | 
| 14 | 
            +
                
         | 
| 15 | 
            +
                  TopicsArray = Struct.new(:topic)
         | 
| 16 | 
            +
                  Topic = Struct.new(:topicName, :topicDisplayName, :topicGroup, :needsSubscription, :notifyByEmail, :notifyBySMS, :canBeBatched, :subscriptionProvider, :criteriaDefinitionArray, :subscription)
         | 
| 17 | 
            +
                  CriteriaDefinitionArray = Struct.new(:criteriaDefinition)
         | 
| 18 | 
            +
                  CriteriaDefinition = Struct.new(:name, :valueDataType, :condition)
         | 
| 19 | 
            +
                  Subscription = Struct.new(:subscribedAt, :criteriaArray)
         | 
| 20 | 
            +
                  CriteriaArray = Struct.new(:criteria)
         | 
| 21 | 
            +
                  RepCriteria = Struct.new(:name, :value)
         | 
| 22 | 
            +
                  Value = Struct.new(:decimalValue, :dateValue, :stringValue)
         | 
| 23 | 
            +
                  Result = Struct.new(:version, :topicsArray)
         | 
| 24 | 
            +
                end
         | 
| 25 | 
            +
             | 
| 26 | 
            +
                #setSubscription
         | 
| 27 | 
            +
                module SetSubscription
         | 
| 28 | 
            +
                  Request = Struct.new(:version, :appID, :topicName, :notifyByEmail, :notifyBySMS, :subscriber, :criteriaArray)
         | 
| 29 | 
            +
                  Subscriber = Struct.new(:customerID, :accountNo, :contact)
         | 
| 30 | 
            +
                  Contact =  Struct.new(:emailID, :mobileNo)
         | 
| 31 | 
            +
                  CriteriaArray = Struct.new(:criteria)
         | 
| 32 | 
            +
                  Criteria = Struct.new(:name, :value)
         | 
| 33 | 
            +
                  Value = Struct.new(:decimalValue, :dateValue, :stringValue)
         | 
| 34 | 
            +
                  Result = Struct.new(:version, :subscribedAt)
         | 
| 35 | 
            +
                end
         | 
| 36 | 
            +
             | 
| 37 | 
            +
                #deleteSubscription
         | 
| 38 | 
            +
                module DeleteSubscription
         | 
| 39 | 
            +
                  Request = Struct.new(:version, :appID, :topicName, :subscriber)
         | 
| 40 | 
            +
                  Subscriber = Struct.new(:customerID, :accountNo)
         | 
| 41 | 
            +
                  Result = Struct.new(:version, :subscribedAt)
         | 
| 42 | 
            +
                end
         | 
| 43 | 
            +
             | 
| 44 | 
            +
                #sendMessage
         | 
| 45 | 
            +
                module SendMessage
         | 
| 46 | 
            +
                  Request = Struct.new(:version, :appID, :topicName, :recipient, :mergeVarArray, :criteriaArray, :referenceNo, :sendAt, :attachment)
         | 
| 47 | 
            +
                  Recipient = Struct.new(:subscriber, :guest)
         | 
| 48 | 
            +
                  Subscriber = Struct.new(:customerID, :accountNo, :contact)
         | 
| 49 | 
            +
                  Contact = Struct.new(:emailID, :mobileNo)
         | 
| 50 | 
            +
                  Guest = Struct.new(:emailID, :mobileNo)
         | 
| 51 | 
            +
                  MergeVarArray = Struct.new(:mergeVar)
         | 
| 52 | 
            +
                  MergeVar = Struct.new(:name, :content)
         | 
| 53 | 
            +
                  Content = Struct.new(:stringContent, :dateContent, :dateTimeContent, :decimalContent)
         | 
| 54 | 
            +
                  CriteriaArray = Struct.new(:criteria)
         | 
| 55 | 
            +
                  Criteria = Struct.new(:name, :value)
         | 
| 56 | 
            +
                  Value = Struct.new(:decimalValue, :dateValue, :stringValue)
         | 
| 57 | 
            +
                  Attachment = Struct.new(:filePath, :contentType)
         | 
| 58 | 
            +
                  Result = Struct.new(:version, :uniqueResponseNo)
         | 
| 59 | 
            +
                end
         | 
| 60 | 
            +
             | 
| 61 | 
            +
                #dispatchMessage
         | 
| 62 | 
            +
                module DispatchMessage
         | 
| 63 | 
            +
                  Request = Struct.new(:version, :appID, :topicName, :recipient, :criteriaArray, :message, :referenceNo, :sendAt)
         | 
| 64 | 
            +
                  Recipient = Struct.new(:subscriber, :guest)
         | 
| 65 | 
            +
                  Subscriber = Struct.new(:customerID, :accountNo, :contact)
         | 
| 66 | 
            +
                  Contact = Struct.new(:emailID, :mobileNo)
         | 
| 67 | 
            +
                  Guest = Struct.new(:emailID, :mobileNo)
         | 
| 68 | 
            +
                  CriteriaArray = Struct.new(:criteria)
         | 
| 69 | 
            +
                  Criteria = Struct.new(:name, :value)
         | 
| 70 | 
            +
                  Value = Struct.new(:decimalValue, :dateValue, :stringValue)
         | 
| 71 | 
            +
                  Message = Struct.new(:smsText, :email)
         | 
| 72 | 
            +
                  Email = Struct.new(:subject, :bodyContent, :attachment)
         | 
| 73 | 
            +
                  Attachment = Struct.new(:filePath, :contentType)
         | 
| 74 | 
            +
                  Result = Struct.new(:version, :uniqueResponseNo)
         | 
| 75 | 
            +
                end
         | 
| 76 | 
            +
                
         | 
| 77 | 
            +
                class << self
         | 
| 78 | 
            +
                  attr_accessor :configuration
         | 
| 79 | 
            +
                end
         | 
| 80 | 
            +
                    
         | 
| 81 | 
            +
                def self.configure
         | 
| 82 | 
            +
                  self.configuration ||= Configuration.new
         | 
| 83 | 
            +
                  yield(configuration)
         | 
| 84 | 
            +
                end
         | 
| 85 | 
            +
                
         | 
| 86 | 
            +
                class Configuration
         | 
| 87 | 
            +
                  attr_accessor :environment, :proxy, :timeout
         | 
| 88 | 
            +
                end
         | 
| 89 | 
            +
                    
         | 
| 90 | 
            +
                def self.getTopics(request)
         | 
| 91 | 
            +
                  reply = do_remote_call do |xml|
         | 
| 92 | 
            +
                    xml.getTopics("xmlns:ns" => SERVICE_NAMESPACE ) do
         | 
| 93 | 
            +
                      xml.parent.namespace = xml.parent.namespace_definitions.first
         | 
| 94 | 
            +
                      xml['ns'].version SERVICE_VERSION
         | 
| 95 | 
            +
                      xml['ns'].appID request.appID
         | 
| 96 | 
            +
                      unless request.criteria.nil?
         | 
| 97 | 
            +
                        xml['ns'].criteria do  |xml|
         | 
| 98 | 
            +
                          xml.topicGroup request.criteria.topicGroup unless request.criteria.topicGroup.nil?
         | 
| 99 | 
            +
                          unless request.criteria.subscriber.nil?
         | 
| 100 | 
            +
                            xml.subscriber do |xml|
         | 
| 101 | 
            +
                              xml.customerID request.criteria.subscriber.customerID unless request.criteria.subscriber.customerID.nil?
         | 
| 102 | 
            +
                              xml.subscribed request.criteria.subscriber.subscribed unless request.criteria.subscriber.subscribed.nil?
         | 
| 103 | 
            +
                              xml.unsubscribed request.criteria.subscriber.unsubscribed unless request.criteria.subscriber.unsubscribed.nil?
         | 
| 104 | 
            +
                            end
         | 
| 105 | 
            +
                          end
         | 
| 106 | 
            +
                        end
         | 
| 107 | 
            +
                      end
         | 
| 108 | 
            +
                    end  
         | 
| 109 | 
            +
                  end
         | 
| 110 | 
            +
                  parse_reply(:getTopics, reply)
         | 
| 111 | 
            +
                end
         | 
| 112 | 
            +
             | 
| 113 | 
            +
                def self.setSubscription(request)
         | 
| 114 | 
            +
                  reply = do_remote_call do |xml|
         | 
| 115 | 
            +
                    xml.setSubscription("xmlns:ns" => SERVICE_NAMESPACE ) do
         | 
| 116 | 
            +
                      xml.parent.namespace = xml.parent.namespace_definitions.first
         | 
| 117 | 
            +
                      xml['ns'].version SERVICE_VERSION
         | 
| 118 | 
            +
                      xml['ns'].appID request.appID
         | 
| 119 | 
            +
                      xml['ns'].topicName request.topicName
         | 
| 120 | 
            +
                      xml['ns'].notifyByEmail request.notifyByEmail
         | 
| 121 | 
            +
                      xml['ns'].notifyBySMS request.notifyBySMS
         | 
| 122 | 
            +
                      xml['ns'].subscriber do |xml|
         | 
| 123 | 
            +
                        xml.customerID request.subscriber.customerID
         | 
| 124 | 
            +
                        xml.accountNo request.subscriber.accountNo
         | 
| 125 | 
            +
                        unless request.subscriber.contact.nil?
         | 
| 126 | 
            +
                          xml.contact do |xml|
         | 
| 127 | 
            +
                            xml.emailID request.subscriber.contact.emailID unless request.subscriber.contact.emailID.nil? 
         | 
| 128 | 
            +
                            xml.mobileNo request.subscriber.contact.mobileNo unless request.subscriber.contact.mobileNo.nil? 
         | 
| 129 | 
            +
                          end
         | 
| 130 | 
            +
                        end
         | 
| 131 | 
            +
                      end
         | 
| 132 | 
            +
                      unless request.criteriaArray.nil?
         | 
| 133 | 
            +
                        xml['ns'].criteriaArray do |xml|
         | 
| 134 | 
            +
                          unless request.criteriaArray.criteria.nil?
         | 
| 135 | 
            +
                            xml.criteria do |xml|
         | 
| 136 | 
            +
                              xml.name request.criteriaArray.criteria.name
         | 
| 137 | 
            +
                              xml.value do |xml|
         | 
| 138 | 
            +
                                xml.decimalValue request.criteriaArray.criteria.value.decimalValue unless request.criteriaArray.criteria.value.decimalValue.nil? 
         | 
| 139 | 
            +
                                xml.dateValue request.criteriaArray.criteria.value.dateValue unless request.criteriaArray.criteria.value.dateValue.nil? 
         | 
| 140 | 
            +
                                xml.stringValue request.criteriaArray.criteria.value.stringValue unless request.criteriaArray.criteria.value.stringValue.nil? 
         | 
| 141 | 
            +
                              end
         | 
| 142 | 
            +
                            end
         | 
| 143 | 
            +
                          end
         | 
| 144 | 
            +
                        end
         | 
| 145 | 
            +
                      end
         | 
| 146 | 
            +
                    end  
         | 
| 147 | 
            +
                  end
         | 
| 148 | 
            +
                  parse_reply(:setSubscription, reply)
         | 
| 149 | 
            +
                end
         | 
| 150 | 
            +
             | 
| 151 | 
            +
                def self.deleteSubscription(request)
         | 
| 152 | 
            +
                  reply = do_remote_call do |xml|
         | 
| 153 | 
            +
                    xml.deleteSubscription("xmlns:ns" => SERVICE_NAMESPACE ) do
         | 
| 154 | 
            +
                      xml.parent.namespace = xml.parent.namespace_definitions.first
         | 
| 155 | 
            +
                      xml['ns'].version SERVICE_VERSION
         | 
| 156 | 
            +
                      xml['ns'].appID request.appID
         | 
| 157 | 
            +
                      xml['ns'].topicName request.topicName
         | 
| 158 | 
            +
                      unless request.subscriber.nil?
         | 
| 159 | 
            +
                        xml.subscriber do |xml|
         | 
| 160 | 
            +
                          xml.customerID request.subscriber.customerID
         | 
| 161 | 
            +
                          xml.accountNo request.subscriber.accountNo unless request.subscriber.accountNo.nil?
         | 
| 162 | 
            +
                        end
         | 
| 163 | 
            +
                      end
         | 
| 164 | 
            +
                    end  
         | 
| 165 | 
            +
                  end
         | 
| 166 | 
            +
                  parse_reply(:deleteSubscription, reply)
         | 
| 167 | 
            +
                end
         | 
| 168 | 
            +
             | 
| 169 | 
            +
                def self.sendMessage(request)
         | 
| 170 | 
            +
                  reply = do_remote_call do |xml|
         | 
| 171 | 
            +
                    xml.sendMessage("xmlns:ns" => SERVICE_NAMESPACE ) do
         | 
| 172 | 
            +
                      xml.parent.namespace = xml.parent.namespace_definitions.first
         | 
| 173 | 
            +
                      xml['ns'].version SERVICE_VERSION
         | 
| 174 | 
            +
                      xml['ns'].appID request.appID
         | 
| 175 | 
            +
                      xml['ns'].topicName request.topicName
         | 
| 176 | 
            +
                      xml.recipient do |xml|
         | 
| 177 | 
            +
                        xml.subscriber do |xml|
         | 
| 178 | 
            +
                          xml.customerID request.recipient.subscriber.customerID
         | 
| 179 | 
            +
                          xml.accountNo request.recipient.subscriber.accountNo unless request.recipient.subscriber.accountNo.nil?
         | 
| 180 | 
            +
                          unless request.recipient.subscriber.contact.nil?
         | 
| 181 | 
            +
                            xml.contact do |xml|
         | 
| 182 | 
            +
                              xml.emailID request.recipient.subscriber.contact.emailID unless request.recipient.subscriber.contact.emailID.nil?
         | 
| 183 | 
            +
                              xml.mobileNo request.recipient.subscriber.contact.mobileNo unless request.recipient.subscriber.contact.mobileNo.nil?
         | 
| 184 | 
            +
                            end
         | 
| 185 | 
            +
                          end
         | 
| 186 | 
            +
                        end
         | 
| 187 | 
            +
                        unless request.recipient.guest.nil?
         | 
| 188 | 
            +
                          xml.guest do |xml|
         | 
| 189 | 
            +
                            xml.emailID request.recipient.guest.emailID unless request.recipient.guest.emailID.nil?
         | 
| 190 | 
            +
                            xml.mobileNo request.recipient.guest.mobileNo unless request.recipient.guest.mobileNo.nil?
         | 
| 191 | 
            +
                          end
         | 
| 192 | 
            +
                        end
         | 
| 193 | 
            +
                      end
         | 
| 194 | 
            +
                      unless request.mergeVarArray.nil?
         | 
| 195 | 
            +
                        xml.mergeVarArray do |xml|
         | 
| 196 | 
            +
                          xml.mergeVar do |xml|
         | 
| 197 | 
            +
                            xml.name request.mergeVarArray.mergeVar.name
         | 
| 198 | 
            +
                            xml.content do |xml|
         | 
| 199 | 
            +
                              xml.stringContent request.mergeVarArray.mergeVar.content.stringContent unless request.mergeVarArray.mergeVar.content.stringContent.nil?
         | 
| 200 | 
            +
                              xml.dateContent request.mergeVarArray.mergeVar.content.dateContent unless request.mergeVarArray.mergeVar.content.dateContent.nil?
         | 
| 201 | 
            +
                              xml.dateTimeContent request.mergeVarArray.mergeVar.content.dateTimeContent unless request.mergeVarArray.mergeVar.content.dateTimeContent.nil?
         | 
| 202 | 
            +
                              xml.decimalContent request.mergeVarArray.mergeVar.content.decimalContent unless request.mergeVarArray.mergeVar.content.decimalContent.nil?
         | 
| 203 | 
            +
                            end
         | 
| 204 | 
            +
                          end
         | 
| 205 | 
            +
                        end
         | 
| 206 | 
            +
                      end
         | 
| 207 | 
            +
                      unless request.criteriaArray.nil?
         | 
| 208 | 
            +
                        xml.criteriaArray do |xml|
         | 
| 209 | 
            +
                          xml.criteria do |xml|
         | 
| 210 | 
            +
                            xml.name request.criteriaArray.criteria.name
         | 
| 211 | 
            +
                            xml.value do |xml|
         | 
| 212 | 
            +
                              xml.decimalValue request.criteriaArray.criteria.value.decimalValue unless request.criteriaArray.criteria.value.decimalValue.nil?
         | 
| 213 | 
            +
                              xml.dateValue request.criteriaArray.criteria.value.dateValue unless request.criteriaArray.criteria.value.dateValue.nil?
         | 
| 214 | 
            +
                              xml.stringValue request.criteriaArray.criteria.value.stringValue unless request.criteriaArray.criteria.value.stringValue.nil?
         | 
| 215 | 
            +
                            end
         | 
| 216 | 
            +
                          end
         | 
| 217 | 
            +
                        end
         | 
| 218 | 
            +
                      end
         | 
| 219 | 
            +
                      xml['ns'].referenceNo request.referenceNo unless request.referenceNo.nil?
         | 
| 220 | 
            +
                      xml['ns'].sendAt request.sendAt unless request.sendAt.nil?
         | 
| 221 | 
            +
                      unless request.attachment.nil?
         | 
| 222 | 
            +
                        xml['ns'].attachment do |xml|
         | 
| 223 | 
            +
                          xml.filePath request.attachment.filePath
         | 
| 224 | 
            +
                          xml.contentType request.attachment.contentType
         | 
| 225 | 
            +
                        end
         | 
| 226 | 
            +
                      end
         | 
| 227 | 
            +
                    end  
         | 
| 228 | 
            +
                  end
         | 
| 229 | 
            +
                  parse_reply(:sendMessage, reply)
         | 
| 230 | 
            +
                end
         | 
| 231 | 
            +
             | 
| 232 | 
            +
                def self.dispatchMessage(request)
         | 
| 233 | 
            +
                  reply = do_remote_call do |xml|
         | 
| 234 | 
            +
                    xml.dispatchMessage("xmlns:ns" => SERVICE_NAMESPACE ) do
         | 
| 235 | 
            +
                      xml.parent.namespace = xml.parent.namespace_definitions.first
         | 
| 236 | 
            +
                      xml['ns'].version SERVICE_VERSION
         | 
| 237 | 
            +
                      xml['ns'].appID request.appID
         | 
| 238 | 
            +
                      xml['ns'].topicName request.topicName
         | 
| 239 | 
            +
                      xml.recipient do |xml|
         | 
| 240 | 
            +
                        xml.subscriber do |xml|
         | 
| 241 | 
            +
                          xml.customerID request.recipient.subscriber.customerID
         | 
| 242 | 
            +
                          xml.accountNo request.recipient.subscriber.accountNo unless request.recipient.subscriber.accountNo.nil?
         | 
| 243 | 
            +
                          unless request.recipient.subscriber.contact.nil?
         | 
| 244 | 
            +
                            xml.contact do |xml|
         | 
| 245 | 
            +
                              xml.emailID request.recipient.subscriber.contact.emailID unless request.recipient.subscriber.contact.emailID.nil?
         | 
| 246 | 
            +
                              xml.mobileNo request.recipient.subscriber.contact.mobileNo unless request.recipient.subscriber.contact.mobileNo.nil?
         | 
| 247 | 
            +
                            end
         | 
| 248 | 
            +
                          end
         | 
| 249 | 
            +
                        end
         | 
| 250 | 
            +
                        unless request.recipient.guest.nil?
         | 
| 251 | 
            +
                          xml.guest do |xml|
         | 
| 252 | 
            +
                            xml.emailID request.recipient.guest.emailID unless request.recipient.guest.emailID.nil?
         | 
| 253 | 
            +
                            xml.mobileNo request.recipient.guest.mobileNo unless request.recipient.guest.mobileNo.nil?
         | 
| 254 | 
            +
                          end
         | 
| 255 | 
            +
                        end
         | 
| 256 | 
            +
                      end
         | 
| 257 | 
            +
                      unless request.criteriaArray.nil?
         | 
| 258 | 
            +
                        xml.criteriaArray do |xml|
         | 
| 259 | 
            +
                          xml.criteria do |xml|
         | 
| 260 | 
            +
                            xml.name request.criteriaArray.criteria.name
         | 
| 261 | 
            +
                            xml.value do |xml|
         | 
| 262 | 
            +
                              xml.decimalValue request.criteriaArray.criteria.value.decimalValue unless request.criteriaArray.criteria.value.decimalValue.nil?
         | 
| 263 | 
            +
                              xml.dateValue request.criteriaArray.criteria.value.dateValue unless request.criteriaArray.criteria.value.dateValue.nil?
         | 
| 264 | 
            +
                              xml.stringValue request.criteriaArray.criteria.value.stringValue unless request.criteriaArray.criteria.value.stringValue.nil?
         | 
| 265 | 
            +
                            end
         | 
| 266 | 
            +
                          end
         | 
| 267 | 
            +
                        end
         | 
| 268 | 
            +
                      end
         | 
| 269 | 
            +
                      xml.message do |xml|
         | 
| 270 | 
            +
                        xml.smsText request.message.smsText unless request.message.smsText.nil?
         | 
| 271 | 
            +
                        unless request.message.email.nil?
         | 
| 272 | 
            +
                          xml.email do |xml|
         | 
| 273 | 
            +
                            xml.subject request.message.email.subject unless request.message.email.subject.nil?
         | 
| 274 | 
            +
                            xml.bodyContent request.message.email.bodyContent unless request.message.email.bodyContent.nil?
         | 
| 275 | 
            +
                            unless request.message.email.attachment.nil?
         | 
| 276 | 
            +
                              xml.attachment do |xml|
         | 
| 277 | 
            +
                                xml.filePath request.attachment.filePath
         | 
| 278 | 
            +
                                xml.contentType request.attachment.contentType
         | 
| 279 | 
            +
                              end
         | 
| 280 | 
            +
                            end
         | 
| 281 | 
            +
                          end
         | 
| 282 | 
            +
                        end
         | 
| 283 | 
            +
                      end
         | 
| 284 | 
            +
                      xml['ns'].referenceNo request.referenceNo unless request.referenceNo.nil?
         | 
| 285 | 
            +
                      xml['ns'].sendAt request.sendAt unless request.sendAt.nil?
         | 
| 286 | 
            +
                    end  
         | 
| 287 | 
            +
                  end
         | 
| 288 | 
            +
                  parse_reply(:dispatchMessage, reply)
         | 
| 289 | 
            +
                end
         | 
| 290 | 
            +
             | 
| 291 | 
            +
                private
         | 
| 292 | 
            +
                
         | 
| 293 | 
            +
                def self.uri()
         | 
| 294 | 
            +
                    return '/NotificationService'
         | 
| 295 | 
            +
                end
         | 
| 296 | 
            +
                    
         | 
| 297 | 
            +
                def self.parse_reply(operationName, reply)
         | 
| 298 | 
            +
                  if reply.kind_of?Fault
         | 
| 299 | 
            +
                    return reply
         | 
| 300 | 
            +
                  else
         | 
| 301 | 
            +
                    case operationName
         | 
| 302 | 
            +
                    when :getTopics
         | 
| 303 | 
            +
                      tpcsArray = Array.new  
         | 
| 304 | 
            +
                      criteriaDefArray = Array.new
         | 
| 305 | 
            +
                      criArray = Array.new 
         | 
| 306 | 
            +
                      
         | 
| 307 | 
            +
                      i = 1
         | 
| 308 | 
            +
                      numTopics = reply.xpath('//ns:getTopicsResponse/ns:topicsArray/ns:topic', 'ns' => SERVICE_NAMESPACE).count
         | 
| 309 | 
            +
                      until i > numTopics
         | 
| 310 | 
            +
                        numCriDef = reply.xpath("//ns:getTopicsResponse/ns:topicsArray/ns:topic[#{i}]/ns:criteriaDefinitionArray/ns:criteriaDefinition", 'ns' => SERVICE_NAMESPACE).count
         | 
| 311 | 
            +
                        j = 1
         | 
| 312 | 
            +
                        until j > numCriDef
         | 
| 313 | 
            +
                          criteriaDefArray << GetTopics::CriteriaDefinition.new(
         | 
| 314 | 
            +
                            content_at(reply.at_xpath("//ns:getTopicsResponse/ns:topicsArray/ns:topic[#{i}]/ns:criteriaDefinitionArray/ns:criteriaDefinition[#{j}]/ns:name", 'ns' => SERVICE_NAMESPACE)),
         | 
| 315 | 
            +
                            content_at(reply.at_xpath("//ns:getTopicsResponse/ns:topicsArray/ns:topic[#{i}]/ns:criteriaDefinitionArray/ns:criteriaDefinition[#{j}]/ns:valueDataType", 'ns' => SERVICE_NAMESPACE)),
         | 
| 316 | 
            +
                            content_at(reply.at_xpath("//ns:getTopicsResponse/ns:topicsArray/ns:topic[#{i}]/ns:criteriaDefinitionArray/ns:criteriaDefinition[#{j}]/ns:condition", 'ns' => SERVICE_NAMESPACE))
         | 
| 317 | 
            +
                          )
         | 
| 318 | 
            +
                          j = j + 1;
         | 
| 319 | 
            +
                        end
         | 
| 320 | 
            +
                        
         | 
| 321 | 
            +
                        criteriaDefinitionArray = GetTopics::CriteriaDefinitionArray.new(criteriaDefArray)
         | 
| 322 | 
            +
                        criteriaDefArray = []
         | 
| 323 | 
            +
                        
         | 
| 324 | 
            +
                        numCriteria = reply.xpath("//ns:getTopicsResponse/ns:topicsArray/ns:topic[#{i}]/ns:subscription/ns:criteriaArray/ns:criteria", 'ns' => SERVICE_NAMESPACE).count
         | 
| 325 | 
            +
                        j = 1
         | 
| 326 | 
            +
                        until j > numCriteria
         | 
| 327 | 
            +
                          value = GetTopics::Value.new(
         | 
| 328 | 
            +
                            content_at(reply.at_xpath("//ns:getTopicsResponse/ns:topicsArray/ns:topic[#{i}]/ns:subscription/ns:criteriaArray/ns:criteria[#{j}]/ns:value/ns:decimalValue", 'ns' => SERVICE_NAMESPACE)),
         | 
| 329 | 
            +
                            content_at(reply.at_xpath("//ns:getTopicsResponse/ns:topicsArray/ns:topic[#{i}]/ns:subscription/ns:criteriaArray/ns:criteria[#{j}]/ns:value/ns:dateValue", 'ns' => SERVICE_NAMESPACE)),
         | 
| 330 | 
            +
                            content_at(reply.at_xpath("//ns:getTopicsResponse/ns:topicsArray/ns:topic[#{i}]/ns:subscription/ns:criteriaArray/ns:criteria[#{j}]/ns:value/ns:stringValue", 'ns' => SERVICE_NAMESPACE))
         | 
| 331 | 
            +
                          )
         | 
| 332 | 
            +
                          criArray << GetTopics::RepCriteria.new(
         | 
| 333 | 
            +
                            content_at(reply.at_xpath("//ns:getTopicsResponse/ns:topicsArray/ns:topic[#{i}]/ns:subscription/ns:criteriaArray/ns:criteria[#{j}]/ns:name", 'ns' => SERVICE_NAMESPACE)),
         | 
| 334 | 
            +
                            value
         | 
| 335 | 
            +
                          )
         | 
| 336 | 
            +
                          j = j + 1;
         | 
| 337 | 
            +
                        end
         | 
| 338 | 
            +
                        
         | 
| 339 | 
            +
                        criteriaArray = GetTopics::CriteriaArray.new(criArray)
         | 
| 340 | 
            +
                        criArray = []
         | 
| 341 | 
            +
                        
         | 
| 342 | 
            +
                        subscription = GetTopics::Subscription.new(
         | 
| 343 | 
            +
                          content_at(reply.at_xpath("//ns:getTopicsResponse/ns:topicsArray/ns:topic[#{i}]/ns:subscription/ns:subscribedAt", 'ns' => SERVICE_NAMESPACE)),
         | 
| 344 | 
            +
                          criteriaArray
         | 
| 345 | 
            +
                        )
         | 
| 346 | 
            +
                        
         | 
| 347 | 
            +
                        tpcsArray << GetTopics::Topic.new(
         | 
| 348 | 
            +
                          content_at(reply.at_xpath("//ns:getTopicsResponse/ns:topicsArray/ns:topic[#{i}]/ns:topicName", 'ns' => SERVICE_NAMESPACE)),
         | 
| 349 | 
            +
                          content_at(reply.at_xpath("//ns:getTopicsResponse/ns:topicsArray/ns:topic[#{i}]/ns:topicDisplayName", 'ns' => SERVICE_NAMESPACE)),
         | 
| 350 | 
            +
                          content_at(reply.at_xpath("//ns:getTopicsResponse/ns:topicsArray/ns:topic[#{i}]/ns:topicGroup", 'ns' => SERVICE_NAMESPACE)),
         | 
| 351 | 
            +
                          content_at(reply.at_xpath("//ns:getTopicsResponse/ns:topicsArray/ns:topic[#{i}]/ns:needsSubscription", 'ns' => SERVICE_NAMESPACE)),
         | 
| 352 | 
            +
                          content_at(reply.at_xpath("//ns:getTopicsResponse/ns:topicsArray/ns:topic[#{i}]/ns:notifyByEmail", 'ns' => SERVICE_NAMESPACE)),
         | 
| 353 | 
            +
                          content_at(reply.at_xpath("//ns:getTopicsResponse/ns:topicsArray/ns:topic[#{i}]/ns:notifyBySMS", 'ns' => SERVICE_NAMESPACE)),
         | 
| 354 | 
            +
                          content_at(reply.at_xpath("//ns:getTopicsResponse/ns:topicsArray/ns:topic[#{i}]/ns:canBeBatched", 'ns' => SERVICE_NAMESPACE)),
         | 
| 355 | 
            +
                          content_at(reply.at_xpath("//ns:getTopicsResponse/ns:topicsArray/ns:topic[#{i}]/ns:subscriptionProvider", 'ns' => SERVICE_NAMESPACE)),
         | 
| 356 | 
            +
                          (criteriaDefinitionArray.criteriaDefinition.empty? ? nil : criteriaDefinitionArray),
         | 
| 357 | 
            +
                          (subscription.subscribedAt.nil? ? nil : subscription)
         | 
| 358 | 
            +
                        )
         | 
| 359 | 
            +
                        i = i + 1;
         | 
| 360 | 
            +
                      end;
         | 
| 361 | 
            +
                      
         | 
| 362 | 
            +
                      topicsArray = GetTopics::TopicsArray.new(tpcsArray)
         | 
| 363 | 
            +
                      return GetTopics::Result.new(
         | 
| 364 | 
            +
                        content_at(reply.at_xpath('//ns:getTopicsResponse/ns:version', 'ns' => SERVICE_NAMESPACE)),
         | 
| 365 | 
            +
                        (topicsArray.topic.empty? ? nil : topicsArray)
         | 
| 366 | 
            +
                      ) 
         | 
| 367 | 
            +
                    when :setSubscription
         | 
| 368 | 
            +
                      return SetSubscription::Result.new(
         | 
| 369 | 
            +
                        content_at(reply.at_xpath('//ns:setSubscriptionResponse/ns:version', 'ns' => SERVICE_NAMESPACE)),
         | 
| 370 | 
            +
                        content_at(reply.at_xpath('//ns:setSubscriptionResponse/ns:subscribedAt', 'ns' => SERVICE_NAMESPACE))
         | 
| 371 | 
            +
                      )
         | 
| 372 | 
            +
                    when :deleteSubscription
         | 
| 373 | 
            +
                      return DeleteSubscription::Result.new(
         | 
| 374 | 
            +
                        content_at(reply.at_xpath('//ns:deleteSubscriptionResponse/ns:version', 'ns' => SERVICE_NAMESPACE)),
         | 
| 375 | 
            +
                        content_at(reply.at_xpath('//ns:deleteSubscriptionResponse/ns:subscribedAt', 'ns' => SERVICE_NAMESPACE))
         | 
| 376 | 
            +
                      )
         | 
| 377 | 
            +
                    when :sendMessage
         | 
| 378 | 
            +
                      return SendMessage::Result.new(
         | 
| 379 | 
            +
                        content_at(reply.at_xpath('//ns:sendMessageResponse/ns:version', 'ns' => SERVICE_NAMESPACE)),
         | 
| 380 | 
            +
                        content_at(reply.at_xpath('//ns:sendMessageResponse/ns:uniqueResponseNo', 'ns' => SERVICE_NAMESPACE))
         | 
| 381 | 
            +
                      )
         | 
| 382 | 
            +
                    when :dispatchMessage
         | 
| 383 | 
            +
                      return DispatchMessage::Result.new(
         | 
| 384 | 
            +
                        content_at(reply.at_xpath('//ns:dispatchMessageResponse/ns:version', 'ns' => SERVICE_NAMESPACE)),
         | 
| 385 | 
            +
                        content_at(reply.at_xpath('//ns:dispatchMessageResponse/ns:uniqueResponseNo', 'ns' => SERVICE_NAMESPACE))
         | 
| 386 | 
            +
                      )
         | 
| 387 | 
            +
                    end         
         | 
| 388 | 
            +
                  end
         | 
| 389 | 
            +
                end
         | 
| 390 | 
            +
                
         | 
| 391 | 
            +
                def url
         | 
| 392 | 
            +
                  return '/NotificationService'
         | 
| 393 | 
            +
                end
         | 
| 394 | 
            +
             | 
| 395 | 
            +
              end
         | 
| 396 | 
            +
            end
         | 
| @@ -6,7 +6,6 @@ module ApiBanking | |
| 6 6 | 
             
                  data = construct_envelope(&block)
         | 
| 7 7 | 
             
                  options = {}
         | 
| 8 8 | 
             
                  options[:method] = :post
         | 
| 9 | 
            -
                  puts data.to_xml
         | 
| 10 9 | 
             
                  options[:body] = data.to_xml
         | 
| 11 10 |  | 
| 12 11 | 
             
                  options[:headers] = {'Content-Type' => "application/xml; charset=utf-8"}
         | 
| @@ -42,6 +41,8 @@ module ApiBanking | |
| 42 41 | 
             
                    options[:userpwd] = "#{self.configuration.environment.user}:#{self.configuration.environment.password}"
         | 
| 43 42 | 
             
                    options[:headers]["X-IBM-Client-Id"] = self.configuration.environment.client_id
         | 
| 44 43 | 
             
                    options[:headers]["X-IBM-Client-Secret"] = self.configuration.environment.client_secret
         | 
| 44 | 
            +
                  elsif self.configuration.environment.kind_of?ApiBanking::Environment::QG::DEMO
         | 
| 45 | 
            +
                    options[:userpwd] = "#{self.configuration.environment.user}:#{self.configuration.environment.password}"        
         | 
| 45 46 | 
             
                  end
         | 
| 46 47 | 
             
                end
         | 
| 47 48 |  | 
| @@ -96,10 +97,16 @@ module ApiBanking | |
| 96 97 | 
             
                  code   = content_at(reply.at_xpath('//soapenv12:Fault/soapenv12:Code/soapenv12:Subcode/soapenv12:Value', 'soapenv12' => 'http://www.w3.org/2003/05/soap-envelope'))
         | 
| 97 98 | 
             
                  subcode   = content_at(reply.at_xpath('//soapenv12:Fault/soapenv12:Code/soapenv12:Subcode/soapenv12:Subcode/soapenv12:Value', 'soapenv12' => 'http://www.w3.org/2003/05/soap-envelope'))
         | 
| 98 99 | 
             
                  reasonText   = content_at(reply.at_xpath('//soapenv12:Fault/soapenv12:Reason/soapenv12:Text', 'soapenv12' => 'http://www.w3.org/2003/05/soap-envelope'))
         | 
| 99 | 
            -
                   | 
| 100 | 
            +
            #      detail = parse_detail(reply.at_xpath('//soapenv12:Fault/soapenv12:Detail', 'soapenv12' => 'http://www.w3.org/2003/05/soap-envelope'))
         | 
| 101 | 
            +
                  
         | 
| 102 | 
            +
                  code ||= 'ns:E500'  # in certain cases, a fault code isn't set by the server
         | 
| 100 103 | 
             
                  return Fault.new(code, subcode, reasonText)
         | 
| 101 104 | 
             
                end
         | 
| 102 105 |  | 
| 106 | 
            +
                def self.parse_detail(node)
         | 
| 107 | 
            +
                  return content_at(node.at_xpath('Text')) # 
         | 
| 108 | 
            +
                end
         | 
| 109 | 
            +
                
         | 
| 103 110 | 
             
                def self.content_at(node)
         | 
| 104 111 | 
             
                  node.content unless node.nil?
         | 
| 105 112 | 
             
                end
         | 
    
        data/lib/api_banking/version.rb
    CHANGED
    
    
    
        data/lib/api_banking.rb
    CHANGED
    
    | @@ -4,12 +4,16 @@ require "api_banking/version" | |
| 4 4 | 
             
            require_relative "api_banking/config"
         | 
| 5 5 | 
             
            require_relative "api_banking/environment/rbl/env"
         | 
| 6 6 | 
             
            require_relative "api_banking/environment/ybl/env"
         | 
| 7 | 
            +
            require_relative "api_banking/environment/qg/env"
         | 
| 7 8 |  | 
| 8 9 | 
             
            require_relative "api_banking/soap/fault"
         | 
| 9 10 | 
             
            require_relative "api_banking/soap/soap_client"
         | 
| 10 11 | 
             
            require_relative "api_banking/soap/fundsTransferByCustomerService"
         | 
| 11 12 | 
             
            require_relative "api_banking/soap/fundsTransferByCustomerService2"
         | 
| 12 13 | 
             
            require_relative "api_banking/soap/instantMoneyTransferService"
         | 
| 14 | 
            +
            require_relative "api_banking/soap/domesticRemittanceByPartnerService"
         | 
| 15 | 
            +
            require_relative "api_banking/soap/notificationService"
         | 
| 16 | 
            +
            require_relative "api_banking/soap/instantCreditService"
         | 
| 13 17 |  | 
| 14 18 | 
             
            require_relative "api_banking/json/json_client"
         | 
| 15 19 | 
             
            require_relative "api_banking/json/singlePayment"
         | 
    
        metadata
    CHANGED
    
    | @@ -1,14 +1,14 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: api_banking
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 0.1. | 
| 4 | 
            +
              version: 0.1.3
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors:
         | 
| 7 7 | 
             
            - akil
         | 
| 8 8 | 
             
            autorequire: 
         | 
| 9 9 | 
             
            bindir: exe
         | 
| 10 10 | 
             
            cert_chain: []
         | 
| 11 | 
            -
            date: 2016- | 
| 11 | 
            +
            date: 2016-08-20 00:00:00.000000000 Z
         | 
| 12 12 | 
             
            dependencies:
         | 
| 13 13 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 14 14 | 
             
              name: bundler
         | 
| @@ -52,6 +52,34 @@ dependencies: | |
| 52 52 | 
             
                - - ">="
         | 
| 53 53 | 
             
                  - !ruby/object:Gem::Version
         | 
| 54 54 | 
             
                    version: '0'
         | 
| 55 | 
            +
            - !ruby/object:Gem::Dependency
         | 
| 56 | 
            +
              name: vcr
         | 
| 57 | 
            +
              requirement: !ruby/object:Gem::Requirement
         | 
| 58 | 
            +
                requirements:
         | 
| 59 | 
            +
                - - ">="
         | 
| 60 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 61 | 
            +
                    version: '0'
         | 
| 62 | 
            +
              type: :development
         | 
| 63 | 
            +
              prerelease: false
         | 
| 64 | 
            +
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 65 | 
            +
                requirements:
         | 
| 66 | 
            +
                - - ">="
         | 
| 67 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 68 | 
            +
                    version: '0'
         | 
| 69 | 
            +
            - !ruby/object:Gem::Dependency
         | 
| 70 | 
            +
              name: webmock
         | 
| 71 | 
            +
              requirement: !ruby/object:Gem::Requirement
         | 
| 72 | 
            +
                requirements:
         | 
| 73 | 
            +
                - - ">="
         | 
| 74 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 75 | 
            +
                    version: '0'
         | 
| 76 | 
            +
              type: :development
         | 
| 77 | 
            +
              prerelease: false
         | 
| 78 | 
            +
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 79 | 
            +
                requirements:
         | 
| 80 | 
            +
                - - ">="
         | 
| 81 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 82 | 
            +
                    version: '0'
         | 
| 55 83 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 56 84 | 
             
              name: typhoeus
         | 
| 57 85 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| @@ -99,16 +127,20 @@ files: | |
| 99 127 | 
             
            - bin/setup
         | 
| 100 128 | 
             
            - lib/api_banking.rb
         | 
| 101 129 | 
             
            - lib/api_banking/config.rb
         | 
| 130 | 
            +
            - lib/api_banking/environment/qg/env.rb
         | 
| 102 131 | 
             
            - lib/api_banking/environment/rbl/env.rb
         | 
| 103 132 | 
             
            - lib/api_banking/environment/rbl/uat.pem
         | 
| 104 133 | 
             
            - lib/api_banking/environment/ybl/env.rb
         | 
| 105 134 | 
             
            - lib/api_banking/environment/ybl/prd.pem
         | 
| 106 135 | 
             
            - lib/api_banking/json/json_client.rb
         | 
| 107 136 | 
             
            - lib/api_banking/json/singlePayment.rb
         | 
| 137 | 
            +
            - lib/api_banking/soap/domesticRemittanceByPartnerService.rb
         | 
| 108 138 | 
             
            - lib/api_banking/soap/fault.rb
         | 
| 109 139 | 
             
            - lib/api_banking/soap/fundsTransferByCustomerService.rb
         | 
| 110 140 | 
             
            - lib/api_banking/soap/fundsTransferByCustomerService2.rb
         | 
| 141 | 
            +
            - lib/api_banking/soap/instantCreditService.rb
         | 
| 111 142 | 
             
            - lib/api_banking/soap/instantMoneyTransferService.rb
         | 
| 143 | 
            +
            - lib/api_banking/soap/notificationService.rb
         | 
| 112 144 | 
             
            - lib/api_banking/soap/soap_client.rb
         | 
| 113 145 | 
             
            - lib/api_banking/version.rb
         | 
| 114 146 | 
             
            homepage: http://apibanking.com
         |