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