Class: Europeana::API::FaradayMiddleware::ParameterRepetition

Inherits:
Faraday::Middleware
  • Object
show all
Defined in:
lib/europeana/api/faraday_middleware/request/parameter_repetition.rb

Overview

Handles multiple URL params with the same name

Europeana’s APIs expect params with the same name to appear in URL queries like ‘?qf=this&qf=that`, but Faraday constructs them the Rack/Rails way, like `?qf[]=this&qf=that`. This middleware constructs them to the former format, using `Rack::Utils.build_query`.

Instance Method Summary collapse

Instance Method Details

#call(env) ⇒ Object



13
14
15
16
# File 'lib/europeana/api/faraday_middleware/request/parameter_repetition.rb', line 13

def call(env)
  repeat_query_parameters(env)
  @app.call env
end

#repeat_query_parameters(env) ⇒ Object



18
19
20
21
# File 'lib/europeana/api/faraday_middleware/request/parameter_repetition.rb', line 18

def repeat_query_parameters(env)
  query = Rack::Utils.parse_nested_query(env.url.query)
  env.url.query = Rack::Utils.build_query(query)
end