Sobes.tech
Junior — Senior
65

Коррекция бизнес‑логики в обработчике запросов

Компании, где спрашивали:

РозумСофт
Условие задачи

В проекте есть функция, реализующая некоторую бизнес‑логику при обработке запросов к 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, и предложить исправления.