class Fadada::HttpClient
Public Class Methods
request(method, action, params = {}, digest_params = nil)
click to toggle source
HTTP 请求 digest_params 示例: {
_params: { a: 1, b: 2 }, _md5_params: { a: 1, b: 2 }, _extend_params: { a: 1, b: 2 }
}
# File lib/fadada/http_client.rb, line 12 def request(method, action, params = {}, digest_params = nil) _method = method.to_s.downcase _digest_params = digest_params || { _params: params } payload = build_basic_params(_digest_params).merge(params) if _method == 'post' response = HTTParty.post( url(action), body: payload, header: form_header, logger: Fadada::config.logger, log_format: Fadada::config.logger_format ).parsed_response hander_exception(response) else "#{url(action)}?#{URI.encode_www_form(payload)}" end end
Private Class Methods
build_basic_params(options)
click to toggle source
构建基础请求参数
# File lib/fadada/http_client.rb, line 41 def build_basic_params(options) _timestamp = DateTime.now.strftime("%Y%m%d%H%M%S") { app_id: Fadada::config.app_id, timestamp: _timestamp, v: '2.0', msg_digest: Fadada::Digest.generate(_timestamp, options) } end
form_header()
click to toggle source
# File lib/fadada/http_client.rb, line 36 def form_header { 'Content-Type' => 'application/x-www-form-urlencoded;charset=utf8' } end
hander_exception(response)
click to toggle source
处理异常
# File lib/fadada/http_client.rb, line 52 def hander_exception(response) code = response['code'].to_s return response if code == '1' || code == '1000' message = response['msg'] if %w(0 1004).include?(code) message = response['data'] || response['msg'] elsif code == '2' message = '重复请求' end raise Fadada::ApiServiceException.new(code, message) end
url(action)
click to toggle source
# File lib/fadada/http_client.rb, line 32 def url(action) Fadada::config.server + action end