Junior — Senior
64
Коррекция бизнес‑логики в обработчике запросов
Companies where asked:
РозумСофт
Task condition
В проекте есть функция, реализующая некоторую бизнес‑логику при обработке запросов к API. На вход всегда приходят корректные данные, однако при работе с сервисом SERVICE::NUMBER1 постоянно возникает ошибка. Необходимо проанализировать код, выявить и описать места, где логика реализована неверно.
json::object Session::ProcessRequest(const json::object& body, const SERVICE& service, const API& api)
{
json::object requestJson = body;
requestJson["version"] = api;
switch (service)
{
case SERVICE::NUMBER2:
{
requestJson["search_type"] = "1";
requestJson = Authorization(requestJson);
break;
}
case SERVICE::NUMBER1:
{
requestJson["search_type"] = "2";
switch (api)
{
case API::V1:
break;
case API::V2:
requestJson = Authorization(requestJson);
break;
default:
return HandleErrorMessage(fmt::v8::format("Invalid API version for Audio: {}", api));
}
break;
}
default:
return HandleErrorMessage(fmt::v8::format("Invalid service type: {}", service));
}
if (requestJson.contains("status") && requestJson.at("status").is_string() && requestJson.at("status").as_string() == "error")
return requestJson;
return SendMessage(requestJson, config.requestName, config.resultName);
}
Задача: определить, какие части кода приводят к некорректному поведению при обработке SERVICE::NUMBER1, и предложить исправления.