static void CheckWebError(string operationName, ProjectManagerServerResponse response)
 {
     if (response.kind == "error")
     {
         LogWebError(operationName, (ErrorResponse)response);
     }
 }
        static public void RejectTestTask(Int64 taskId, string message)
        {
            SendConfirmTestTaskRequestData requestData = new SendConfirmTestTaskRequestData();

            requestData.actor   = Settings.Actor;
            requestData.agent   = Settings.Agent;
            requestData.task    = taskId.ToString();
            requestData.confirm = false;
            requestData.message = message;
            ProjectManagerServerResponse response = PerformRequest(ConfirmTaskUrl(), requestData);

            CheckWebError("Отклонение выполнения задачи", response);
        }
        static protected ProjectManagerServerResponse PerformRequest(string URL, object data)
        {
            string responseText = PerformPostRequest(URL, JsonConvert.SerializeObject(data));
            ProjectManagerServerResponse response = JsonConvert.DeserializeObject <ProjectManagerServerResponse>(responseText);

            if (response.kind == "error")
            {
                return(JsonConvert.DeserializeObject <ErrorResponse>(responseText));
            }
            if (response.kind == "testTask")
            {
                return(JsonConvert.DeserializeObject <TestTaskResponse>(responseText));
            }
            return(response);
        }
        static public bool ConfirmTask(Int64 taskId)
        {
            SendConfirmTestTaskRequestData requestData = new SendConfirmTestTaskRequestData();

            requestData.actor   = Settings.Actor;
            requestData.agent   = Settings.Agent;
            requestData.task    = taskId.ToString();
            requestData.confirm = true;
            try
            {
                ProjectManagerServerResponse response = PerformRequest(ConfirmTaskUrl(), requestData);
                CheckWebError("Подтверждение выполнения задачи", response);
                return(response.kind == "accepted");
            }
            catch (Exception)
            {
                return(false);
            }
        }
        static public TestTaskResponseBody RequestTestTask()
        {
            GetTestTaskRequestData requestData = new GetTestTaskRequestData();

            requestData.agent = Settings.Agent;
            requestData.actor = Settings.Actor;

            ProjectManagerServerResponse response = PerformRequest(RequestTestTaskURL(), requestData);

            CheckWebError("Запрос задачи тестирования", response);

            if (response.kind == "error")
            {
                throw new Exception(((ErrorResponse)response).response.errorText);
            }

            if (response.kind == "testTask")
            {
                return(((TestTaskResponse)response).response);
            }

            return(null);
        }