Hi!
Which is the best way ("the best code") to distinguish between HTTP requests once we have stored them into a buffer?
My code (HTTPRequest is the buffer):
if (strstr(HTTPRequest, "GET / ") || strstr(HTTPRequest, "GET /home.html")) {
client.println(F("HTTP/1.1 200 OK"));
client.println(F("Content-Type: text/html"));
client.println(F("Cache-Control: max-age=86400"));
client.println(F("Connnection: close"));
client.println();
file = SD.open("home.htm");
if (!file) {
Serial.println(F("No es podrà enviar l'arxiu home.htm al client."));
}
} else if (strstr(HTTPRequest, "GET /actual.html")) {
client.println(F("HTTP/1.1 200 OK"));
client.println(F("Content-Type: text/html"));
client.println(F("Cache-Control: max-age=86400"));
client.println(F("Connnection: close"));
client.println();
file = SD.open("actual.htm");
if (!file) {
Serial.println(F("No es podrà enviar l'arxiu actual.htm al client."));
}
} else if (strstr(HTTPRequest, "GET /historic.html")) {
client.println(F("HTTP/1.1 200 OK"));
client.println(F("Content-Type: text/html"));
client.println(F("Cache-Control: max-age=86400"));
client.println(F("Connnection: close"));
client.println();
file = SD.open("historic.htm");
if (!file) {
Serial.println(F("No es podrà enviar l'arxiu historic.htm al client."));
}
} else if (strstr(HTTPRequest, "GET /registre.html")) {
client.println(F("HTTP/1.1 200 OK"));
client.println(F("Content-Type: text/html"));
client.println(F("Cache-Control: max-age=86400"));
client.println(F("Connnection: close"));
client.println();
file = SD.open("registre.htm");
if (!file) {
Serial.println(F("No es podrà enviar l'arxiu registre.htm al client."));
}
} else if (strstr(HTTPRequest, "GET /canvasjs.js")) {
client.println(F("HTTP/1.1 200 OK"));
client.println(F("Content-Type: text/js"));
client.println(F("Cache-Control: max-age=86400"));
client.println(F("Connnection: close"));
client.println();
file = SD.open("canvasjs.js");
if (!file) {
Serial.println(F("No es podrà enviar l'arxiu canvasjs.js al client."));
}
} else if (strstr(HTTPRequest, "GET /favicon.ico")) {
file = SD.open("favicon.ico");
if (file) {
client.println(F("HTTP/1.1 200 OK"));
client.println(F("Cache-Control: max-age=86400"));
client.println();
} else {
Serial.println(F("No es podrà enviar l'arxiu favicon.ico al client."));
}
} else if (strstr(HTTPRequest, "GET /logouib.png")) {
file = SD.open("logouib.png");
if (file) { // Si s'ha pogut obrir l'arxiu 'logouib.png'.
client.println(F("HTTP/1.1 200 OK"));
client.println(F("Cache-Control: max-age=86400"));
client.println();
} else {
Serial.println(F("No es podrà enviar l'arxiu logouib.png al client."));
}
} else if (strstr(HTTPRequest, "GET /curls.png")) {
file = SD.open("curls.png");
if (file) {
client.println(F("HTTP/1.1 200 OK"));
client.println(F("Cache-Control: max-age=86400"));
client.println();
} else {
Serial.println(F("No es podrà enviar l'arxiu curls.png al client."));
}
} else if (strstr(HTTPRequest, "ajaxInformationONDevices")) {
client.println(F("HTTP/1.1 200 OK"));
client.println(F("Content-Type: text/xml"));
client.println(F("Connection: keep-alive"));
client.println();
responseAjaxONDev();
}
I don't like this solution because I have to make an else if statement for each HTTP request. Is there any way to implement it with regexp or something like and obtain a better code?
TY so much!