Class: Dianping::Api::MiddleWare

Inherits:
Object
  • Object
show all
Defined in:
lib/dianping/api/middle_ware.rb

Instance Method Summary collapse

Constructor Details

#initialize(app, client) ⇒ MiddleWare

Returns a new instance of MiddleWare.



6
7
8
9
# File 'lib/dianping/api/middle_ware.rb', line 6

def initialize(app, client)
  @app = app
  @client = client
end

Instance Method Details

#call(env) ⇒ Object



11
12
13
14
15
16
17
18
19
# 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) ⇒ Object

Raises:



29
30
31
32
33
34
35
36
37
38
39
40
# 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) ⇒ Object

Raises:



21
22
23
24
25
26
27
# 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