Sha256: 8e897c147c2d9d638b5c64a8970e0dfa91d39bcaf10f894fffe27574fe7bc208
Contents?: true
Size: 875 Bytes
Versions: 2
Compression:
Stored size: 875 Bytes
Contents
module GCoder class Resolver def initialize(opts = {}) @config = GCoder.config.merge(opts) if (adapter_name = @config[:storage]) @conn = Storage[adapter_name].new(@config[:storage_config]) else @conn = nil end end def [](*args) geocode *args end def geocode(query, opts = {}) fetch([query, opts].join) { Geocoder::Request.new(query, opts).get.as_mash }.results end def fetch(key) raise ArgumentError, 'block required' unless block_given? Hashie::Mash.new( (val = get(key)) ? MultiJson.load(val) : set(key, yield) ) end private def get(query) return nil unless @conn @conn.get(query) end def set(key, value) return value unless @conn @conn.set(key, MultiJson.dump(value)) value end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
gcoder-1.2.0 | lib/gcoder/resolver.rb |
gcoder-1.1.0 | lib/gcoder/resolver.rb |