class Dianping::Api::MiddleWare

Public Class Methods

new(app, client) click to toggle source
# File lib/dianping/api/middle_ware.rb, line 6
def initialize(app, client)
  @app = app
  @client = client
end

Public Instance Methods

call(env) click to toggle source
# File lib/dianping/api/middle_ware.rb, line 11
def call(env)
  Api.logger.debug { { request: env } }
  check_session(env)
  @app.call(env).on_complete do |response_env|
    Api.logger.debug { { response: response_env } }
    hash = MultiJson.load response_env.body, symbolize_keys: true
    check_response(hash)
  end
end
check_response(body) click to toggle source
# File lib/dianping/api/middle_ware.rb, line 29
def check_response(body)
  code = body[:code].to_i
  msg = format('[%<code>d]%<msg>s', code: code, msg: body[:msg])

  Api.logger.debug { { response: body, msg: msg } }

  Api.logger.warn body unless code == 200

  raise TokenExpireError, msg if code == 608
  raise UsageError, msg if code >= 800
  raise Error, msg unless code == 200
end
check_session(_env) click to toggle source
# File lib/dianping/api/middle_ware.rb, line 21
def check_session(_env)
  raise TokenMissingError unless @client.token.authorized?
  return unless @client.token.expired?

  @client.token.refresh
  raise TokenExpireError
end