module Doorkeeper::OAuth::Helpers::URIChecker

def self.as_uri(url)

def self.as_uri(url)
  URI.parse(url)
end

def self.matches?(url, client_url)

def self.matches?(url, client_url)
  url = as_uri(url)
  client_url = as_uri(client_url)
  url.query = nil
  url == client_url
end

def self.native_uri?(url)

def self.native_uri?(url)
  url == Doorkeeper.configuration.native_redirect_uri
end

def self.valid?(url)

def self.valid?(url)
  uri = as_uri(url)
  uri.fragment.nil? && !uri.host.nil? && !uri.scheme.nil?
rescue URI::InvalidURIError
  false
end

def self.valid_for_authorization?(url, client_url)

def self.valid_for_authorization?(url, client_url)
  valid?(url) && client_url.split.any? { |other_url| matches?(url, other_url) }
end