# frozen_string_literal: true module WildcardUrlChecker VALID_PROTOCOLS = %w(http https discourse).freeze def self.check_url(url, url_to_check) return nil if !valid_url?(url_to_check) escaped_url = Regexp.escape(url).sub("\\*", '\S*') url_regex = Regexp.new("\\A#{escaped_url}\\z", 'i') url_to_check.match(url_regex) end private def self.valid_url?(url) uri = URI.parse(url) VALID_PROTOCOLS.include?(uri&.scheme) && uri&.host.present? rescue URI::InvalidURIError false end end