#include <WiFiClientSecure.h>
const char* ssid = "Wokwi-GUEST"; // your network SSID (name of wifi network)
const char* password = ""; // your network password
const char* server = "outlook.live.com"; // Server URL
const String monthArray[12] = {"Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"};
WiFiClientSecure client;
const int eventCount = 12;
String events[eventCount][2];
void setup() {
//Initialize serial and wait for port to open:
Serial.begin(115200);
delay(100);
Serial.print("Attempting to connect to SSID: ");
Serial.println(ssid);
WiFi.begin(ssid, password);
// attempt to connect to Wifi network:
while (WiFi.status() != WL_CONNECTED) {
Serial.print(".");
// wait 1 second for re-trying
delay(1000);
}
Serial.print("Connected to ");
Serial.println(ssid);
Serial.println("\nStarting connection to server...");
client.setInsecure();//skip verification
if (!client.connect(server, 443))
Serial.println("Connection failed!");
else {
Serial.println("Connected to server!");
// Make a HTTP request:
client.println("GET xxxxx/calendar.ics HTTP/1.1");
client.println("Host: outlook.live.com");
client.println("User-Agent: Wget/1.21.3");
client.println("Accept: */*");
client.println("Accept-Encoding: identity");
client.println("Connection: Keep-Alive");
client.println();
String summary;
String date;
int evtCount=0;
bool newEvent = false;
while (client.connected()) {
String line = client.readStringUntil('\n');
if (line.indexOf("END:VEVENT") >= 0) {
//newEvent = false;
if (date.toInt() >= 20220913) {
events[evtCount][0]=monthArray[date.substring(4,6).toInt()-1] + " " + date.substring(6,8).toInt();;
events[evtCount][1]=summary;
evtCount++;
}
}
if (line.indexOf("SUMMARY:") >= 0) {
int index = line.indexOf(':');
summary = line.substring(index + 1);
summary.replace("\\,", ",");
}
if (line.indexOf("DTSTART;") >= 0) {
int index = line.indexOf(':');
date = line.substring(index + 1,index + 9);
}
if (line.indexOf("END:VCALENDAR") >= 0) {
break;
}
if (evtCount == eventCount) {
break;
}
}
Serial.println("Stopping client");
client.stop();
for ( int i = 0; i < eventCount; ++i ) {
Serial.print("eventCount ");
Serial.print(i+1);
Serial.print(" = ");
Serial.print(events[i][0]);
Serial.print(" : ");
Serial.println(events[i][1]);
}
}
}
void loop() {
// do nothing
delay(10);
}