blacklist_requests = $blacklist_requests; if ( ! is_array( $this->blacklist_requests ) ) { $this->blacklist_requests = array(); } } public function is_blacklisted( $request ) { $isBlacklisted = function ( $request ) { return Lst::includes( $request, $this->blacklist_requests ) || $this->is_blacklisted_with_regex( $request ); }; return Wrapper::of( $request ) ->map( Str::split( '/' ) ) ->map( Fns::map( Fns::unary( pipe( 'urlencode', 'strtolower' ) ) ) ) ->map( Lst::join( '/' ) ) ->map( $isBlacklisted ) ->get(); } private function is_blacklisted_with_regex( $request ) { foreach ( $this->blacklist_requests as $blacklist_request ) { if ( $this->is_regex( $blacklist_request ) && preg_match( $blacklist_request, $request ) ) { return true; } } return false; } private function is_regex( $blacklist_request ) { return strpos( $blacklist_request, '/' ) === 0 && strrpos( $blacklist_request, '/' ) === strlen( $blacklist_request ) - 1; } }