lib/ibanomat/client.rb in ibanomat-1.2.0 vs lib/ibanomat/client.rb in ibanomat-1.3.0
- old
+ new
@@ -1,31 +1,37 @@
-require 'rest-client'
+require 'net/http'
require 'json'
module Ibanomat
+ class ResourceNotFoundError < RuntimeError; end
+
URL = 'https://www.sparkasse.de/bin/servlets/sparkasse/iban'
def self.find(options)
raise ArgumentError.new unless options.is_a?(Hash)
raise ArgumentError.new('Option :bank_code is missing!') if options[:bank_code].empty?
raise ArgumentError.new('Option :bank_account_number is missing!') if options[:bank_account_number].empty?
- response = RestClient.get URL, {
- :params => {
- 'b' => options[:bank_code],
- 'a' => options[:bank_account_number]
- },
- :accept => :json
- }
- if response.code == 200
- hash = JSON.parse(response)
+ uri = URI(URL)
+ params = { 'b' => options[:bank_code],
+ 'a' => options[:bank_account_number]
+ }
+ uri.query = URI.encode_www_form(params)
- { :bank_name => hash['Institutsname'],
- :bic => hash['BIC'],
- :iban => hash['IBAN'],
- :bank_code => hash['BLZ'],
- :bank_account_number => hash['KtoNr'],
- :return_code => hash['RetCode']
- }
+ case response = Net::HTTP.get_response(uri)
+ when Net::HTTPSuccess
+ hash = JSON.parse(response.body)
+
+ { :bank_name => hash['Institutsname'],
+ :bic => hash['BIC'],
+ :iban => hash['IBAN'],
+ :bank_code => hash['BLZ'],
+ :bank_account_number => hash['KtoNr'],
+ :return_code => hash['RetCode']
+ }
+ when Net::HTTPNotFound
+ raise ResourceNotFoundError
+ else
+ raise RuntimeError
end
end
end