37#ifndef XRDHTTPUTILS_HH
38#define XRDHTTPUTILS_HH
126std::string
itos(
long i);
150bool Fromhexdigest(
const std::string & hex, std::vector<uint8_t> & outputBytes);
152void Tobase64(
const unsigned char *input,
int length,
char *out);
154void Tobase64(
const std::vector<uint8_t> & input, std::string & base64Output);
156void base64ToBytes(
const std::string & base64digest, std::vector<uint8_t> & outputBytes);
158void bytesToHex(
const std::vector<uint8_t> & bytes, std::string & hexOutput);
160void base64DecodeHex(
const std::string & base64, std::string & hexOutput);
163char *
quote(
const char *str);
176 size_t strLength = str.length();
178 std::unique_ptr<char[]> buf(
new char[strLength + 1]);
179 std::memcpy(buf.get(), str.c_str(), strLength + 1);
191 return quote(str.c_str());
202 std::string encoded { encodedRaw };
215 std::string decoded { decodedRaw };
227 std::ostringstream output;
228 std::vector<std::string> allKeyValues;
231 for(
auto & kv: allKeyValues) {
232 size_t equal = kv.find(
'=');
233 if(equal != std::string::npos) {
234 std::string key = kv.substr(0, equal);
235 std::string value = kv.substr(equal + 1);
void Tobase64(const unsigned char *input, int length, char *out)
int compareHash(const char *h1, const char *h2)
void bytesToHex(const std::vector< uint8_t > &bytes, std::string &hexOutput)
int mapErrNoToHttp(int err)
void base64ToBytes(const std::string &base64digest, std::vector< uint8_t > &outputBytes)
char * unquote(char *str)
@ HTTP_HTTP_VERSION_NOT_SUPPORTED
@ HTTP_INSUFFICIENT_STORAGE
@ HTTP_PRECONDITION_FAILED
@ HTTP_VARIANT_ALSO_NEGOTIATES
@ HTTP_NON_AUTHORITATIVE_INFORMATION
@ HTTP_EXPECTATION_FAILED
@ HTTP_SERVICE_UNAVAILABLE
@ HTTP_PROXY_AUTHENTICATION_REQUIRED
@ HTTP_UNAVAILABLE_FOR_LEGAL_REASONS
@ HTTP_UNSUPPORTED_MEDIA_TYPE
@ HTTP_PERMANENT_REDIRECT
@ HTTP_TEMPORARY_REDIRECT
@ HTTP_MISDIRECTED_REQUEST
@ HTTP_NETWORK_AUTHENTICATION_REQUIRED
@ HTTP_METHOD_NOT_ALLOWED
@ HTTP_INTERNAL_SERVER_ERROR
@ HTTP_UNPROCESSABLE_ENTITY
@ HTTP_REQUEST_HEADER_FIELDS_TOO_LARGE
@ HTTP_SWITCHING_PROTOCOLS
@ HTTP_PRECONDITION_REQUIRED
@ HTTP_RANGE_NOT_SATISFIABLE
std::string encode_opaque(const std::string &opaque)
int mapXrdErrToHttp(XErrorCode xrdError)
char * quote(const char *str)
bool Fromhexdigest(const std::string &hex, std::vector< uint8_t > &outputBytes)
char * encode_raw(const std::string &str)
char * escapeXML(const char *str)
void calcHashes(char *hash, const char *fn, kXR_int16 req, XrdSecEntity *secent, time_t tim, const char *key)
std::string encode_str(const std::string &str)
std::vector< XrdOucIOVec2 > XrdHttpIOList
char * mystrchrnul(const char *s, int c)
char * decode_raw(const std::string &str)
std::string decode_str(const std::string &str)
std::string httpStatusToString(int status)
void base64DecodeHex(const std::string &base64, std::string &hexOutput)
static void splitString(Container &result, const std::string &input, const std::string &delimiter)
Split a string.