"error", "message" => "Не переданы обязательные параметры: flight_number, date." ]); exit; } // Преобразуем дату в нужный формат try { $start = (new DateTime($flightDate))->setTime(0, 0, 0)->format('Y-m-d\T00:00:00\Z'); $end = (new DateTime($flightDate))->setTime(23, 59, 59)->format('Y-m-d\T23:59:59\Z'); } catch (Exception $e) { writeLog("Ошибка обработки даты: " . $e->getMessage()); echo json_encode([ "status" => "error", "message" => "Некорректный формат даты." ]); exit; } // Ваш API-ключ FlightAware $apiKey = "Puz0cdxAHzAEqMRZwtdeqBUSm9naJfwK"; // Формируем URL для API $baseUrl = "https://aeroapi.flightaware.com/aeroapi/flights"; $url = "{$baseUrl}/{$flightNumber}?start={$start}&end={$end}"; // Логируем отправку запроса writeLog("Отправка запроса к API FlightAware: $url"); // Настраиваем cURL $ch = curl_init($url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_HTTPHEADER, [ "x-apikey: $apiKey" ]); curl_setopt($ch, CURLOPT_TIMEOUT, 30); // Отправка запроса $response = curl_exec($ch); $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE); $curlError = curl_error($ch); curl_close($ch); // Логируем HTTP-код ответа writeLog("HTTP-код ответа: $httpCode"); // Проверяем ошибки cURL if ($curlError) { writeLog("Ошибка cURL: $curlError"); echo json_encode([ "status" => "error", "message" => "Ошибка запроса: $curlError" ]); exit; } // Логируем тело ответа writeLog("Тело ответа: $response"); // Обрабатываем тело ответа $data = json_decode($response, true); if ($httpCode === 200 && isset($data['flights'][0])) { $flight = $data['flights'][0]; // Формируем JSON-ответ $response = [ "status" => "success", "message" => "Информация о рейсе получена.", "flight_info" => [ "Рейс" => $flight['ident'] ?? 'Не указано', "Статус" => $flight['status'] ?? 'Не указано', "Аэропорт вылета" => $flight['origin']['name'] ?? 'Не указано', "Запланированное время вылета" => $flight['scheduled_out'] ?? 'Не указано', "Фактический взлет" => $flight['actual_off'] ?? $flight['estimated_off'] ?? 'Не указано', "Аэропорт прилета" => $flight['destination']['name'] ?? 'Не указано', "Запланированное время прилета" => $flight['scheduled_in'] ?? 'Не указано', "Фактическое приземление" => $flight['actual_on'] ?? $flight['estimated_on'] ?? 'Не указано', "Задержка вылета (в минутах)" => isset($flight['departure_delay']) ? round($flight['departure_delay'] / 60) : 'Не указано', "Задержка прилета (в минутах)" => isset($flight['arrival_delay']) ? round($flight['arrival_delay'] / 60) : 'Не указано', "Прогресс выполнения рейса (%)" => $flight['progress_percent'] ?? 'Не указано', "Самолет" => $flight['aircraft_type'] ?? 'Не указано', "Багажная зона" => $flight['baggage_claim'] ?? 'Не указано' ] ]; writeLog("Возвращаем JSON-ответ: " . json_encode($response, JSON_UNESCAPED_UNICODE)); header('Content-Type: application/json'); echo json_encode($response, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE); exit; } else { $error = $data['error']['message'] ?? "Рейс не найден или произошла ошибка."; writeLog("Ошибка: HTTP-код $httpCode, Сообщение: $error"); // Формируем JSON с ошибкой echo json_encode([ "status" => "error", "message" => $error ]); exit; } ?>