#include <WiFi.h>
#include <HTTPClient.h>
#include <ArduinoJson.h>

const char* ssid = "Wokwi-GUEST";
const char* password = "";
const char* host = "opensky-network.org";
const int httpsPort = 443;
const String url = "/api/states/all";

void setup() {
  Serial.begin(115200);
  delay(10);

  WiFi.begin(ssid, password);
  while (WiFi.status() != WL_CONNECTED) {
    delay(1000);
    Serial.println("Connecting to WiFi...");
  }

  Serial.println("Connected to WiFi");

  HTTPClient client;
  Serial.print("Connecting to ");
  Serial.println(host);

  if (!client.begin(host, httpsPort)) {
    Serial.println("Connection failed");
    return;
  }

  Serial.print("Requesting URL: ");
  Serial.println(url);

  int httpResponseCode = client.GET();
  if (httpResponseCode != 200) {
    Serial.print("Request failed. Error code: ");
    Serial.println(httpResponseCode);
    return;
  }

  String response = client.getString();
  client.end();

  DynamicJsonDocument doc(1024);
  DeserializationError error = deserializeJson(doc, response);
  if (error) {
    Serial.print("deserializeJson() failed: ");
    Serial.println(error.c_str());
    return;
  }

  const JsonArray& data = doc["states"];
  int maxFlights = 20;
  int numFlights = std::min(maxFlights, data.size());
  for (int i = 0; i < numFlights; i++) {
    const JsonObject& flight = data[i].as<JsonObject>();

    double latitude = flight["0"].as<double>();
    double longitude = flight["1"].as<double>();

    // نمایش اطلاعات هواپیما
    Serial.print("Flight ");
    Serial.println(i + 1);
    Serial.print("ICAO24: ");
    Serial.println(flight["2"].as<String>());
    Serial.print("Callsign: ");
    Serial.println(flight["1"].as<String>());
    Serial.print("Latitude: ");
    Serial.println(latitude);
    Serial.print("Longitude: ");
    Serial.println(longitude);
    Serial.println();
  }
}

void loop() {
  // تکرار کد در این قسمت
}