lib/excon/addressable.rb in excon-addressable-0.3.1 vs lib/excon/addressable.rb in excon-addressable-0.4.0

- old
+ new

@@ -1,21 +1,35 @@ # frozen_string_literal: true + require 'addressable/template' require 'addressable/uri' require 'excon' require 'excon/addressable/parser' require 'excon/addressable/version' Excon.defaults[:uri_parser] = Excon::Addressable::Parser +# Excon +# +# We inject the `expand` key to the allowed lists of keys to be used when +# creating a request, or connection object. Excon does not enforce this yet, but +# it does print a warning, so this makes things future-proof. module Excon + VALID_REQUEST_KEYS << :expand + VALID_CONNECTION_KEYS << :expand + module Addressable # Middleware # # Parses a Templated URI string and merges it with the provided variables. # class Middleware < Excon::Middleware::Base def request_call(datum) + # we need to convert a query hash (or string) to the proper format for + # Addressable to work with. We also need to remove the `?` character + # that Excon prepends to the final query string. + datum[:query] = Excon::Utils.query_string(datum)[1..-1] + url = ::Addressable::URI.new(datum) if (template = ::Addressable::Template.new(url)) && template.variables.any? uri = template.expand(datum[:expand].to_h) datum.merge!(uri.to_hash)