class Vindi::Middleware::ResponseParser
Vindi
Response Parser
Saves metadata info into metadata object.
Public Instance Methods
extract_response_headers_info(response_headers)
click to toggle source
# File lib/vindi/middleware/response_parser.rb, line 37 def extract_response_headers_info(response_headers) { items: response_headers[:total], link: response_headers[:link], rate_limit: { limit: response_headers[:"rate-limit-limit"], reset: Time.at(response_headers[:"rate-limit-reset"].to_i), remaining: response_headers[:"rate-limit-remaining"] } } end
on_complete(env)
click to toggle source
# File lib/vindi/middleware/response_parser.rb, line 9 def on_complete(env) env[:body] = parse(env[:status] == 204 ? "{}" : env) Vindi::RateLimit.update env[:body].dig :metadata, :rate_limit end
parse(env)
click to toggle source
# File lib/vindi/middleware/response_parser.rb, line 15 def parse(env) json = Her::Middleware::ParseJSON.new.parse_json env[:body] errors = translate_errors_to_activemodel_style(json.delete(:errors) || []) metadata = (json.delete(:metadata) || {}).merge(extract_response_headers_info(env[:response_headers])) { data: json, errors: errors, metadata: metadata } end
translate_errors_to_activemodel_style(errors)
click to toggle source
# File lib/vindi/middleware/response_parser.rb, line 27 def translate_errors_to_activemodel_style(errors) errors.map do |e| { attribute: e[:parameter], type: e[:id] == "invalid_parameter" ? :invalid : e[:id], message: e[:message] } end end