Fork of the espurna firmware for `mhsw` switches
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

68 lines
1.5 KiB

// -----------------------------------------------------------------------------
// Parse char string as URL
//
// Adapted from HTTPClient::beginInternal()
// https://github.com/esp8266/Arduino/blob/master/libraries/ESP8266HTTPClient/src/ESP8266HTTPClient.cpp
//
// -----------------------------------------------------------------------------
#pragma once
struct URL {
String value;
String protocol;
String host;
String path;
uint16_t port;
URL(const char* url) { init(url); }
URL(const String& url) { init(url); }
void init(String url);
};
void URL::init(String url) {
this->value = url;
// cut the protocol part
int index = url.indexOf("://");
if (index > 0) {
this->protocol = url.substring(0, index);
url.remove(0, (index + 3));
}
if (this->protocol == "http") {
this->port = 80;
} else if (this->protocol == "https") {
this->port = 443;
}
// cut the host part
String _host;
index = url.indexOf('/');
if (index >= 0) {
_host = url.substring(0, index);
} else {
_host = url;
}
// store the remaining part as path
if (index >= 0) {
url.remove(0, index);
this->path = url;
} else {
this->path = "/";
}
// separate host from port, when present
index = _host.indexOf(':');
if (index >= 0) {
this->port = _host.substring(index + 1).toInt();
this->host = _host.substring(0, index);
} else {
this->host = _host;
}
}