Sha256: b3cf7bbc4d036f2d45614f1f856cadef26a45fc64d7bf3f56158c19534182913

Contents?: true

Size: 1.27 KB

Versions: 3

Compression:

Stored size: 1.27 KB

Contents

# coding: utf-8
module RockFintech
  module Http

    class Response
      attr_accessor :service, :flow_id
      attr_accessor :http_response, :raw_body
      attr_accessor :data, :data_valid

      def initialize(params)
        self.data_valid = true

        params.each do |key, value|
          instance_variable_set("@#{key}", value)
        end

        self.data = {} if self.data.nil? # 默认一定要有

        unless self.data_valid
          self.data[:code] = 'sign_valid_fail'
          self.data[:msg] = '数据签名错误'
        end
      end

      def [] key
        instance_variable_get("#{key}")
      end

      def to_s
        arr = ["{"]
        self.instance_variables.map{ |value|
          arr << "\t#{value.to_s} => #{self[value.to_sym]}"
        }
        arr << ["}"]
        arr.join("\n")
      end

      def http_success?
        http_response && /^2/ =~ http_response.code.to_s
      end

      def http_fail?
        # 而 400 错误一般都是地址不存在或者没有权限,都当成错误处理
        http_response && http_response.code.to_s == '404'
      end

      def http_pending?
        # nil 的时候是超时,非 404 的其他错误都是 pending
        http_response.nil? || (!http_success? && !http_fail?)
      end
    end

  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
rock_fintech-0.7.0 lib/rock_fintech/http/response.rb
rock_fintech-0.6.0 lib/rock_fintech/http/response.rb
rock_fintech-0.5.0 lib/rock_fintech/http/response.rb