aderyabin/sniffer

View on GitHub
lib/sniffer/request_policy.rb

Summary

Maintainability
A
0 mins
Test Coverage
# frozen_string_literal: true

module Sniffer
  # match request with white and black lists
  module RequestPolicy
    class << self
      def call(request)
        url = "#{request.host}:#{request.port}"
        if config.url_whitelist
          whitelist_url?(url)
        elsif config.url_blacklist
          !blacklist_url?(url)
        else
          true
        end
      end

      private

      def whitelist_url?(url)
        !url.match(config.url_whitelist).nil?
      end

      def blacklist_url?(url)
        !url.match(config.url_blacklist).nil?
      end

      def config
        Sniffer.config
      end
    end
  end
end