module Fuyou::Base
Public Instance Methods
connection()
click to toggle source
# File lib/fuyou/base.rb, line 38 def connection Faraday.new(url: Fuyou.config.server, headers: nil) do |faraday| faraday.request :url_encoded faraday.response :logger, Fuyou.logger, bodies: true faraday.adapter Faraday.default_adapter end end
format_response(response)
click to toggle source
处理接口响应
# File lib/fuyou/base.rb, line 47 def format_response(response) raise UnknownError, "福优网无法正常访问" if response.status != 200 result = ActiveSupport::JSON.decode(response.body) raise InvalidResponseError, result['desc'] if result.is_a?(Hash) && result.key?('rcode') && result['rcode'] != '0000' result end
http_get(action, params = {})
click to toggle source
GET 请求
# File lib/fuyou/base.rb, line 27 def http_get(action, params = {}) param = sign(params) response = connection.get(action, param) format_response response end
http_post(action, params = {}, options = {})
click to toggle source
POST 请求
# File lib/fuyou/base.rb, line 20 def http_post(action, params = {}, options = {}) param = options[:skip_sign] ? params : sign(params) response = connection.post(action, param) format_response response end
refresh_token()
click to toggle source
刷新token
# File lib/fuyou/base.rb, line 34 def refresh_token Fuyou::Ca.sign_in if Fuyou.config.expired_at.nil? || DateTime.now > Fuyou.config.expired_at end
sign(params)
click to toggle source
签名
# File lib/fuyou/base.rb, line 4 def sign(params) refresh_token options = { caCode: Fuyou.config.token, customId: Fuyou.config.custom_id, timeStamp: DateTime.now.utc.to_i, nonStr: SecureRandom.hex(10) } param = params.merge!(options) data = param.select { |_k, v| v.present? }.sort.map { |k, v| "#{k}=#{v}&" }.join sign = Digest::SHA1.hexdigest(data).upcase params.merge(sign: sign) end