Sha256: eefce8f494c5acfb3dcac43737a887a6f954b6bbf243a2c3b2dc35236d44b899

Contents?: true

Size: 848 Bytes

Versions: 54

Compression:

Stored size: 848 Bytes

Contents

module Ey::Core::Mock
  module Params
    def url_params(url)
      uri   = URI.parse(url)
      query = uri.query || ""

      query.split("&").inject({}){|r,e| k,v = e.split("="); r.merge(k => v)}
    end

    def path_params(url)
      parts = URI.parse(url).path.split("/").rotate
      if parts.size % 2 == 1
        parts.pop
      end
      Hash[*parts].reject {|key,val| val.nil? || val.empty? }
    end

    def extract_url_params!(params)
      if url = params.delete("url")
        @logger.debug('request.params') { "Extracted params from url: #{path_params(url).inspect}" }

        path_params(url).each do |resource,id|
          next unless id && ! id.empty?
          params[resource.to_s.gsub(/s$/, '').gsub("-", "_")] = url_for("/#{resource}/#{id}")
        end

        params.merge!(url_params(url))
      end
    end
  end
end

Version data entries

54 entries across 54 versions & 3 rubygems

Version Path
ey-core-3.6.0.autoscaling1 lib/ey-core/mock/params.rb
ey-core-3.6.4 lib/ey-core/mock/params.rb
ey-core-3.6.3 lib/ey-core/mock/params.rb
ey-core-3.6.1 lib/ey-core/mock/params.rb
groove-ey-core-3.6.3 lib/ey-core/mock/params.rb
groove-ey-core-3.6.2 lib/ey-core/mock/params.rb
groove-ey-core-3.6.1 lib/ey-core/mock/params.rb
ey-core-3.5.0 lib/ey-core/mock/params.rb
ey-core-3.4.4 lib/ey-core/mock/params.rb
ey-core-3.4.2 lib/ey-core/mock/params.rb
ey-core-3.4.1 lib/ey-core/mock/params.rb
ey-core-3.4.0 lib/ey-core/mock/params.rb
ey-core-3.3.1 lib/ey-core/mock/params.rb
ey-core-3.3.0 lib/ey-core/mock/params.rb
ey-core-3.2.6 lib/ey-core/mock/params.rb
ey-core-3.2.5 lib/ey-core/mock/params.rb
ey-core-3.2.4 lib/ey-core/mock/params.rb
ey-core-3.2.3 lib/ey-core/mock/params.rb
ey-core-3.2.2 lib/ey-core/mock/params.rb
ey-core-3.2.1 lib/ey-core/mock/params.rb