Sha256: fc5cbd21d8fd1dc21a9ab150b38b04dd53d36682827a0845519f67c69a4644df

Contents?: true

Size: 1.3 KB

Versions: 1

Compression:

Stored size: 1.3 KB

Contents

module Rack
  module OAuth2
    module Server
      module Util
        class << self
          def compact_hash(hash)
            hash.reject do |key, value|
              value.blank?
            end
          end

          def parse_uri(uri)
            case uri
            when URI::Generic
              uri
            when String
              URI.parse(uri)
            else
              raise "Invalid format of URI is given."
            end
          end

          def redirect_uri(base_uri, location, params)
            redirect_uri = parse_uri base_uri
            case location
            when :query
              redirect_uri.query = [redirect_uri.query, Util.compact_hash(params).to_query].compact.join('&')
            when :fragment
              redirect_uri.fragment = Util.compact_hash(params).to_query
            end
            redirect_uri.to_s
          end

          def uri_match?(base, given)
            base = parse_uri(base)
            given = parse_uri(given)
            base.path = '/' if base.path.blank?
            given.path = '/' if given.path.blank?
            [:scheme, :host, :port].all? do |key|
              base.send(key) == given.send(key)
            end && /^#{base.path}/ =~ given.path
          rescue
            false
          end
        end
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
rack-oauth2-0.3.1 lib/rack/oauth2/server/util.rb