module BaiduApi::LbsCloud::V3::RequestBase
Attributes
ak[RW]
sk[RW]
Public Class Methods
included(base)
click to toggle source
# File lib/baidu_api/lbs_cloud/v3/request_base.rb, line 8 def self.included(base) base.send(:include, HTTParty) base.send(:extend, ClassMethods) base.instance_eval do base_uri "http://api.map.baidu.com/" format :json end end
new(ak, sk = nil)
click to toggle source
# File lib/baidu_api/lbs_cloud/v3/request_base.rb, line 47 def initialize(ak, sk = nil) @ak, @sk = ak, sk end
Protected Instance Methods
build_query(uri, data)
click to toggle source
# File lib/baidu_api/lbs_cloud/v3/request_base.rb, line 67 def build_query(uri, data) ak_str = ak.is_a?(Proc) ? ak.call : ak sk_str = sk.is_a?(Proc) ? sk.call : sk data = data.merge(ak: ak_str) query_str = data.sort.map do |key, value| "#{key}=#{URI.encode(value.to_s, Regexp.new("[^#{URI::PATTERN::UNRESERVED}]"))}" end.join('&') return query_str if sk_str.nil? sn = Digest::MD5.hexdigest(ERB::Util.url_encode("#{uri}?#{query_str}#{sk_str}")) "#{query_str}&sn=#{sn}" end
build_uri(action)
click to toggle source
# File lib/baidu_api/lbs_cloud/v3/request_base.rb, line 63 def build_uri(action) "/#{self.class.module_name}/v3/#{self.class.controller + '/' if self.class.controller}#{action}" end
request(action, data, method = :get)
click to toggle source
# File lib/baidu_api/lbs_cloud/v3/request_base.rb, line 53 def request(action, data, method = :get) uri = build_uri(action) query_str = build_query(uri, data) if method == :post self.class.post(uri, body: query_str) else self.class.get(uri, query: query_str) end end