module Baidumap::Request

Constants

HOST

Public Class Methods

new(ak,pagesize=10,page_num=0,scope=2) click to toggle source
# File lib/baidumap/request.rb, line 7
def initialize(ak,pagesize=10,page_num=0,scope=2)
  service_name = self.class.name.split('::').last.downcase
  @service_path = "/#{service_name}/v2"
  @ak = ak
  @segments = {:ak=>@ak,:output=>'json',:pagesize=>pagesize,:page_num => page_num,:scope=>scope}
end

Public Instance Methods

act(action,params) click to toggle source

actions: search, detail, eventsearch, eventdetail

# File lib/baidumap/request.rb, line 15
def act(action,params)
  @action_path = File.join(@service_path,action.to_s)
  @params = params
  request
end
next() click to toggle source

next page

# File lib/baidumap/request.rb, line 22
def next
  @segments[:page_num] += 1
  request
end
prev() click to toggle source

previous page

# File lib/baidumap/request.rb, line 28
def prev
  @segments[:page_num] -= 1
  request
end

Private Instance Methods

make_query(segments) click to toggle source

make http query from a hash

# File lib/baidumap/request.rb, line 35
def make_query(segments)
  URI.encode(segments.map{|k,v|"#{k}=#{v}"}.join('&'))
end
request() click to toggle source

send http request

# File lib/baidumap/request.rb, line 40
def request
  http_segments = @segments.clone
  @params.each do |key,value|
    http_segments[key] = value
  end
  uri = URI::HTTP.build(
    :host => HOST,
    :path => @action_path,
    :query => make_query(http_segments)
  ).to_s
  result = JSON.parse(HTTParty.get(uri).parsed_response)
  Baidumap::Response.new(result,self)
end