Class: QueryInterface::Client::JsonMiddleware

Inherits:
Faraday::Response::Middleware
  • Object
show all
Defined in:
lib/query-interface-client/json_middleware.rb

Instance Method Summary collapse

Instance Method Details

#on_complete(env) ⇒ Object



27
28
29
30
31
32
33
34
# File 'lib/query-interface-client/json_middleware.rb', line 27

def on_complete(env)
  env[:body] = case env[:status]
  when 204
    parse('{}')
  else
    parse(env[:body])
  end
end

#parse(body) ⇒ Object



16
17
18
19
20
21
22
23
24
25
# File 'lib/query-interface-client/json_middleware.rb', line 16

def parse(body)
  json = parse_json(body)
  errors = json.delete(:errors) || {}
   = json.delete(:metadata) || {}
  {
    :data => json,
    :errors => errors,
    :metadata => 
  }
end

#parse_json(body) ⇒ Object



7
8
9
10
11
12
13
14
# File 'lib/query-interface-client/json_middleware.rb', line 7

def parse_json(body)
  body = '{}' if body.blank?
  json = JSON.parse(body, symbolize_names: true)
  unless json.is_a?(Hash) || json.is_a?(Array)
    raise "Response must be Hash or Array, got: #{body.inspect}"
  end
  json
end