in extensions/standard-processors/processors/ListFile.cpp [78:130]
bool ListFile::fileMatchesFilters(const ListedFile& listed_file) {
if (ignore_hidden_files_ && utils::file::FileUtils::is_hidden(listed_file.full_file_path)) {
logger_->log_debug("File '%s' is hidden so it will not be listed", listed_file.full_file_path.string());
return false;
}
if (file_filter_) {
const auto file_name = listed_file.full_file_path.filename();
if (!std::regex_match(file_name.string(), *file_filter_)) {
logger_->log_debug("File '%s' does not match file filter so it will not be listed", listed_file.full_file_path.string());
return false;
}
}
if (path_filter_) {
const auto relative_path = std::filesystem::relative(listed_file.full_file_path.parent_path(), input_directory_);
if (!std::regex_match(relative_path.string(), *path_filter_)) {
logger_->log_debug("Relative path '%s' does not match path filter so file '%s' will not be listed", relative_path.string(), listed_file.full_file_path.string());
return false;
}
}
if (minimum_file_age_ || maximum_file_age_) {
const auto file_age = std::chrono::duration_cast<std::chrono::milliseconds>(std::chrono::system_clock::now() - listed_file.getLastModified());
if (minimum_file_age_ && file_age < *minimum_file_age_) {
logger_->log_debug("File '%s' does not meet the minimum file age requirement so it will not be listed", listed_file.full_file_path.string());
return false;
}
if (maximum_file_age_ && file_age > *maximum_file_age_) {
logger_->log_debug("File '%s' does not meet the maximum file age requirement so it will not be listed", listed_file.full_file_path.string());
return false;
}
}
if (minimum_file_size_ || maximum_file_size_) {
const auto file_size = utils::file::file_size(listed_file.full_file_path);
if (minimum_file_size_ && file_size < *minimum_file_size_) {
logger_->log_debug("File '%s' does not meet the minimum file size requirement so it will not be listed", listed_file.full_file_path.string());
return false;
}
if (maximum_file_size_ && *maximum_file_size_ < file_size) {
logger_->log_debug("File '%s' does not meet the maximum file size requirement so it will not be listed", listed_file.full_file_path.string());
return false;
}
}
return true;
}