lib/valabn/lookup.rb in valabn-0.1.0 vs lib/valabn/lookup.rb in valabn-0.1.2

- old
+ new

@@ -1,64 +1,64 @@ -require 'savon' -require 'json' -require 'redis-namespace' -require_relative 'utils' - -class Valabn - class Lookup - - WSDL = 'http://www.abn.business.gov.au/abrxmlsearch/ABRXMLSearch.asmx?WSDL' - @@cache_host = nil - @@cache_port = nil - @@guid = nil - - def self.guid=(value) - @@guid = value - end - - def self.cache_host=(value) - @@cache_host = value - end - - def self.cache_port=(value) - @@cache_port = value - end - - def self.configure - yield self - end - - def self.validate(number, options = {}) - number = number.to_s.gsub(/\W/, '') - - if Valabn::Utils.valid_format?(number) - cache = if @@cache_port && @@cache_host - redis_client = Redis.new(host: @@cache_host, port: @@cache_port, db: 15) - namespaced_redis = Redis::Namespace.new(:valabn_cache, redis: redis_client) - - JSON.parse(namespaced_redis.get(number) || '{}', symbolize_names: true) - else - {} - end - - if cache.any? && Time.at(cache[:expires_at]) > Time.now - cache - else - options[:includeHistoricalDetails] ||= 'n' - options[:searchString] = number - options[:authenticationGuid] = options[:guid] || @@guid - - client = Savon.client(wsdl: WSDL) - - response = JSON.parse(client.call(:search_by_ab_nv201408, message: options).body.to_json, symbolize_names: true) - response[:expires_at] = (Time.now + 7200).to_i - - namespaced_redis.set(number, response.to_json) if @@cache_port && @@cache_host - - response - end - else - {} - end - end - end +require 'savon' +require 'json' +require 'redis-namespace' +require_relative 'utils' + +class Valabn + class Lookup + + WSDL = 'http://www.abn.business.gov.au/abrxmlsearch/ABRXMLSearch.asmx?WSDL' + @@cache_host = nil + @@cache_port = nil + @@guid = nil + + def self.guid=(value) + @@guid = value + end + + def self.cache_host=(value) + @@cache_host = value + end + + def self.cache_port=(value) + @@cache_port = value + end + + def self.configure + yield self + end + + def self.validate(number, options = {}) + number = number.to_s.gsub(/\W/, '') + + if Valabn::Utils.valid_format?(number) + cache = if @@cache_port && @@cache_host + redis_client = Redis.new(host: @@cache_host, port: @@cache_port, db: 15) + namespaced_redis = Redis::Namespace.new(:valabn_cache, redis: redis_client) + + JSON.parse(namespaced_redis.get(number) || '{}', symbolize_names: true) + else + {} + end + + if cache.any? && Time.at(cache[:expires_at]) > Time.now + cache + else + options[:includeHistoricalDetails] ||= 'n' + options[:searchString] = number + options[:authenticationGuid] = options[:guid] || @@guid + + client = Savon.client(wsdl: WSDL) + + response = JSON.parse(client.call(:search_by_ab_nv201408, message: options).body.to_json, symbolize_names: true) + response[:expires_at] = (Time.now + 7200).to_i + + namespaced_redis.set(number, response.to_json) if @@cache_port && @@cache_host + + response + end + else + {} + end + end + end end \ No newline at end of file