Sha256: 9f297e76eb0fb21baaeb9e7746afa703fe11b94a6d2c1ebd21ead139ca7977dd

Contents?: true

Size: 838 Bytes

Versions: 5

Compression:

Stored size: 838 Bytes

Contents

module Parsable
  class UriHelper

    def initialize uri
      @uri = uri
    end

    def exploded_query
      @query ||= original_query.split("&").each_with_object({}) do |query, hash|
        name, value = query.split("=")
        hash.store(name, value) if name && value
      end
    end

    def query
      query_hash.each_with_object([]) { |(key, value), array| array.push("#{key}=#{value}") }.join("&")
    end

    def query_hash
      exploded_query.reject { |key, value| scrub_param?(key) }
    end

    def secrets
      exploded_query.select { |key, value| scrub_param?(key) }
    end

    def to_s
      uri = @uri.dup
      uri.query = query
      uri.to_s
    end

    private

    def original_query
      @uri.query.to_s
    end

    def scrub_param? param_name
      !!(param_name =~ /(key|token)/)
    end
  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
parsable-0.2.5 lib/parsable/uri_helper.rb
parsable-0.2.4 lib/parsable/uri_helper.rb
parsable-0.2.3 lib/parsable/uri_helper.rb
parsable-0.2.2 lib/parsable/uri_helper.rb
parsable-0.2.1 lib/parsable/uri_helper.rb