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

const int LED1 = 9; //Led Azul
const int LED2 = 3; //Led Vemelho
const int LED3 = 18; //Led Verde

bool led1State = false; //Define o estado bool para o led (ligado ou não)
bool led2State = false; //Define o estado bool para o led (ligado ou não)
bool led3State = false; //Define o estado bool para o led (ligado ou não)

#define WIFI_SSID "Wokwi-GUEST"
#define WIFI_PASSWORD ""

void setup() {
  Serial.begin(9600); //Define a porta serial na qual o programa irá rodar
  pinMode(LED1, OUTPUT);
  pinMode(LED2, OUTPUT);
  pinMode(LED3, OUTPUT);

  WiFi.begin(WIFI_SSID, WIFI_PASSWORD);  //Define a conecção do esp32 com a rede Wokwi Guest.
  Serial.print("Conectando-se ao Wi-Fi ");
  Serial.print(WIFI_SSID); 

  while ( WiFi.status() != WL_CONNECTED ) {
    delay(100);
    Serial.print(".");

    led1State = !led1State; //Define que o LED azul deve brilhar enquanto a conecção ao wifi não efetuada efetuada
        digitalWrite(LED1, led1State);
        break;
  }

  Serial.println(" Conectado!"); // Define que, quando conectado, deve-se prontar no monitor serial a menssagem do argumento.


  if(WiFi.status() == WL_CONNECTED){ //Condicional para quando o o esp se concetar ao Wifi
  HTTPClient http;

    String serverPath = "http://google.com"; //Define a o endereçõ da requisição por parte do ESP32

    http.begin(serverPath.c_str());

    //Código do Resultado da Requisição HTTP - 1
    int httpResponseCode = http.GET(); //Define o um inteiro que recebe o valor da requisição HTTP, definindo que ela será bem sucedida quando o valor for >= 1
    if (httpResponseCode>0) {
      Serial.print("HTTP Response code: ");

      Serial.println(httpResponseCode);

      String payload = http.getString();

      Serial.println(payload);

      led3State = !led3State;
        digitalWrite(LED1, led3State); //Liga o led verde quando a conecção é bem sucedida
      }
    else {
      Serial.print("Error code: ");
      Serial.println(httpResponseCode);
      led2State = !led2State;
        digitalWrite(LED1, led2State); //Liga o led vermelho quando a conecção é mal sucedida
      }
    }
      http.end();
    }

  else {
    Serial.println("WiFi Disconnected");
  }
}

void loop() {
}