weatherstation/firmware/libraries/UrlEncode/src/UrlEncode.h
2022-11-11 11:11:25 +01:00

37 lines
832 B
C

#ifndef _PLAGEOJ_URLENCODE_H
#define _PLAGEOJ_URLENCODE_H
#include <Arduino.h>
/**
* Percent-encodes a string.
* @param msg UTF-8 string to encode.
* @returns Percent-encoded string.
*/
inline String urlEncode(const char *msg)
{
const char *hex = "0123456789ABCDEF";
String encodedMsg = "";
while (*msg != '\0')
{
if (('a' <= *msg && *msg <= 'z') || ('A' <= *msg && *msg <= 'Z') || ('0' <= *msg && *msg <= '9') || *msg == '-' || *msg == '_' || *msg == '.' || *msg == '~')
{
encodedMsg += *msg;
}
else
{
encodedMsg += '%';
encodedMsg += hex[*msg >> 4];
encodedMsg += hex[*msg & 0xf];
}
msg++;
}
return encodedMsg;
}
inline String urlEncode(String msg)
{
return urlEncode(msg.c_str());
}
#endif