webserv/webserv/config/validation/structural_rules/RequiredLocationBlocksRule.cpp
2025-10-07 17:11:17 +02:00

34 lines
1.2 KiB
C++

#include <webserv/config/validation/structural_rules/RequiredLocationBlocksRule.hpp>
#include <webserv/config/ServerConfig.hpp>
#include <webserv/log/Log.hpp>
#include <string>
RequiredLocationBlocksRule::RequiredLocationBlocksRule(size_t minimumLocations)
: AStructuralValidationRule("RequiredLocationBlocksRule", "Ensures server has at least " +
std::to_string(minimumLocations) +
" location block(s)"),
minimumLocations_(minimumLocations)
{
}
ValidationResult RequiredLocationBlocksRule::validateServer(const ServerConfig *config) const
{
Log::trace(LOCATION);
if (config == nullptr)
{
return ValidationResult::error("Server config is null");
}
size_t locationCount = config->getLocationPaths().size();
if (locationCount < minimumLocations_)
{
return ValidationResult::error("Server block must have at least " + std::to_string(minimumLocations_) +
" location block(s), but found " + std::to_string(locationCount));
}
return ValidationResult::success();
}