Module: BaiduApi::Geocoding

Extended by:
Geocoding
Included in:
Geocoding
Defined in:
lib/baidu_api/geocoding.rb,
lib/baidu_api/geocoding/version.rb,
lib/baidu_api/geocoding/v2/geocoder.rb,
lib/baidu_api/geocoding/configuration.rb

Defined Under Namespace

Modules: Exceptions, V2 Classes: Configuration

Constant Summary collapse

VERSION =
"1.1.1"

Instance Method Summary collapse

Instance Method Details

#configObject



20
21
22
# File 'lib/baidu_api/geocoding.rb', line 20

def config
  @@config || fail(ArgumentError, 'Please setup API with BaiduApi::Geocoding.setup(options) before starting!')
end

#fetch_accepted_data(data) ⇒ Object



37
38
39
40
41
42
# File 'lib/baidu_api/geocoding.rb', line 37

def fetch_accepted_data(data)
  %w(ak sk version address city coordtype location pois).inject({}) do |ret, item|
    ret[item.intern] = fetch_data(data, item)
    ret
  end
end

#fetch_data(data, key) ⇒ Object



44
45
46
# File 'lib/baidu_api/geocoding.rb', line 44

def fetch_data(data, key)
  data.fetch(key.intern) { data.fetch(key.to_s, config[key]) }
end

#geocode(data = {}) ⇒ Object



24
25
26
27
28
29
# File 'lib/baidu_api/geocoding.rb', line 24

def geocode(data = {})
  data = fetch_accepted_data(data)
  version = data.delete(:version).upcase
  geocoder = Object.const_get("BaiduApi::Geocoding::#{version}::Geocoder") rescue fail(ArgumentError, "API version #{version} doesn't exist!")
  geocoder.geocode(data)
end

#geocode!(data = {}) ⇒ Object



31
32
33
34
35
# File 'lib/baidu_api/geocoding.rb', line 31

def geocode!(data = {})
  ret = geocode(data)
  raise BaiduApi::Geocoding::Exceptions::Failed.new(ret) if ret['status'] != 0
  ret
end

#setup(options = {}) {|@@config| ... } ⇒ Object

options:

:ak
:sk
:output    default: json
:version   default: v2

Yields:



15
16
17
18
# File 'lib/baidu_api/geocoding.rb', line 15

def setup(options = {})
  @@config = BaiduApi::Geocoding::Configuration.new(options)
  yield @@config if block_given?
end