Class: Vindi::Middleware::ResponseParser
- Inherits:
-
Faraday::Response::Middleware
- Object
- Faraday::Response::Middleware
- Vindi::Middleware::ResponseParser
- Defined in:
- lib/vindi/middleware/response_parser.rb
Overview
Vindi Response Parser
Set metada info to metadata object.
Instance Method Summary collapse
- #extract_response_headers_info(response_headers) ⇒ Object
- #on_complete(env) ⇒ Object
- #parse(env) ⇒ Object
- #translate_errors_to_activemodel_style(errors) ⇒ Object
Instance Method Details
#extract_response_headers_info(response_headers) ⇒ Object
37 38 39 40 41 42 43 44 45 46 47 |
# 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) ⇒ Object
9 10 11 12 13 |
# 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) ⇒ Object
15 16 17 18 19 20 21 22 23 24 25 |
# 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) || []) = (json.delete(:metadata) || {}).merge(extract_response_headers_info(env[:response_headers])) { data: json, errors: errors, metadata: } end |
#translate_errors_to_activemodel_style(errors) ⇒ Object
27 28 29 30 31 32 33 34 35 |
# 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 |