class Saddle::Middleware::Response::ParseJson
Public: Parse response bodies as JSON.
Constants
- CONTENT_TYPE
- MIME_TYPE
Public Instance Methods
call(env)
click to toggle source
# File lib/saddle/middleware/response/parse_json.rb, line 13 def call(env) result = @app.call(env) if parse_response?(result) result.env[:body] = ::JSON.parse(result.env[:body]) end result end
Private Instance Methods
has_body?(result)
click to toggle source
# File lib/saddle/middleware/response/parse_json.rb, line 29 def has_body?(result) result.env[:body] && (!result.env[:body].respond_to?(:to_str) || # must already be in string format !result.env[:body].empty?) # or must be non-empty end
parse_response?(result)
click to toggle source
# File lib/saddle/middleware/response/parse_json.rb, line 25 def parse_response?(result) has_body?(result) && (response_type(result) == MIME_TYPE) end
response_type(result)
click to toggle source
# File lib/saddle/middleware/response/parse_json.rb, line 35 def response_type(result) return nil unless result.headers type = result.headers[CONTENT_TYPE].to_s type = type.split(';', 2).first if type.index(';') type end