class Baidu::Request
百度云推送API封装类
@attr_reader apisecret [String] 应用的secret @attr_reader options [Hash] 配置参数
Constants
- API_URL
@private
- REQUEST_GET
@private
Attributes
apisecret[R]
options[R]
Public Class Methods
new(apisecret,options = {})
click to toggle source
# File lib/baidu/request.rb, line 25 def initialize(apisecret,options = {}) @apisecret = apisecret @options = {use_ssl: false}.merge(options) @sysinfo = SysInfo.new end
Public Instance Methods
start(resource,method,params={})
click to toggle source
# File lib/baidu/request.rb, line 31 def start(resource,method,params={}) uri = get_uri(resource,method) type = get_type(resource,method) send_request(uri,type,params) end
Private Instance Methods
gen_sign(apisecret,requet_method,url,params)
click to toggle source
# File lib/baidu/request.rb, line 76 def gen_sign(apisecret,requet_method,url,params) parameter = requet_method+url params.sort.each{|p| parameter = parameter + "#{p[0]}=#{p[1]}" } parameter = parameter + apisecret Digest::MD5.hexdigest(URI.encode_www_form_component(parameter)) end
get_type(resource,method)
click to toggle source
# File lib/baidu/request.rb, line 59 def get_type(resource,method) if REQUEST_GET.has_key?(resource.to_sym) && REQUEST_GET[resource.to_sym].include?(method) 'GET' else 'POST' end end
get_uri(resource,method)
click to toggle source
# File lib/baidu/request.rb, line 55 def get_uri(resource,method) URI(get_url(resource,method)) end
get_url(resource,method)
click to toggle source
# File lib/baidu/request.rb, line 67 def get_url(resource,method) http = @options[:use_ssl] ? 'https' : 'http' "#{http+API_URL}/#{resource}/#{method}" end
http_response_to_baidu_response(response)
click to toggle source
# File lib/baidu/request.rb, line 72 def http_response_to_baidu_response(response) Baidu::Response.new(response) end
send_request(uri,type,params)
click to toggle source
# File lib/baidu/request.rb, line 38 def send_request(uri,type,params) params = params.merge({sign:gen_sign(@apisecret,type,uri.to_s,params)}) req = nil case type when 'GET' uri.query = URI.encode_www_form(params) req = Net::HTTP::Get.new(uri) when 'POST' req = Net::HTTP::Post.new(uri) req.set_form_data(params) end req['Content-Type'] = "application/x-www-form-urlencoded;charset=utf-8" req['User-Agent'] = "BCCS_SDK/3.0 (#{@sysinfo.os},#{@sysinfo.arch},#{@sysinfo.impl}) Ruby/#{RUBY_VERSION} (Baidu Push Server SDK V3.0.0)" response = Net::HTTP.start(uri.host,uri.port,use_ssl: @options[:use_ssl]){|http| http.request(req)} http_response_to_baidu_response(response) end