Added base64 encoding for data
This commit is contained in:
parent
dd09aa8fed
commit
120c8ca6d6
47
RCB.cpp
47
RCB.cpp
|
@ -1,6 +1,7 @@
|
|||
#include <curl/curl.h>
|
||||
#include <unistd.h>
|
||||
|
||||
#include <array>
|
||||
#include <fstream>
|
||||
#include <iostream>
|
||||
#include <regex>
|
||||
|
@ -24,15 +25,61 @@ size_t writeCallback(void *contents, size_t size, size_t nmemb, std::string *s)
|
|||
return newLength;
|
||||
}
|
||||
|
||||
std::string encodeTriplet(std::uint8_t iByte1, std::uint8_t iByte2, std::uint8_t iByte3)
|
||||
{
|
||||
std::array<char, 64> encodeTable{'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V',
|
||||
'W', 'X', 'Y', 'Z', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r',
|
||||
's', 't', 'u', 'v', 'w', 'x', 'y', 'z', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '+', '/'};
|
||||
std::string sEncodedTriplet = "";
|
||||
std::uint32_t combinedTriplet = (iByte1 << 16) | (iByte2 << 8) | iByte3;
|
||||
sEncodedTriplet += encodeTable[combinedTriplet >> 18];
|
||||
sEncodedTriplet += encodeTable[combinedTriplet >> 12 & 0x3F];
|
||||
sEncodedTriplet += encodeTable[combinedTriplet >> 6 & 0x3F];
|
||||
sEncodedTriplet += encodeTable[combinedTriplet & 0x3F];
|
||||
return sEncodedTriplet;
|
||||
}
|
||||
|
||||
std::string b64Encode(std::string sWriteData)
|
||||
{
|
||||
std::string sEncodedData = "";
|
||||
std::string sEncodedBuffer;
|
||||
|
||||
while (sWriteData.length() > 0)
|
||||
{
|
||||
if (sWriteData.length() >= 3)
|
||||
{
|
||||
sEncodedData += encodeTriplet(sWriteData[0], sWriteData[1], sWriteData[2]);
|
||||
sWriteData.erase(0, 3);
|
||||
}
|
||||
else if (sWriteData.length() == 2)
|
||||
{
|
||||
sEncodedBuffer = encodeTriplet(sWriteData[0], sWriteData[1], '0');
|
||||
sEncodedBuffer.replace(3, 1, "$");
|
||||
sEncodedData += sEncodedBuffer;
|
||||
sWriteData.erase();
|
||||
}
|
||||
else if (sWriteData.length() == 1)
|
||||
{
|
||||
sEncodedBuffer = encodeTriplet(sWriteData[0], '0', '0');
|
||||
sEncodedBuffer.replace(2, 2, "$$");
|
||||
sEncodedData += sEncodedBuffer;
|
||||
sWriteData.erase();
|
||||
}
|
||||
}
|
||||
return sEncodedData;
|
||||
}
|
||||
|
||||
std::string sendData(std::string sParam1, std::string sValue1, std::string sParam2 = "", std::string sValue2 = "")
|
||||
{
|
||||
CURL *curl;
|
||||
CURLcode res;
|
||||
std::string sReadData;
|
||||
sValue1 = b64Encode(sValue1);
|
||||
std::string sWriteData = sParam1 + "=" + sValue1;
|
||||
|
||||
if (sParam2 != "")
|
||||
{
|
||||
sValue2 = b64Encode(sValue2);
|
||||
sWriteData = sWriteData + "&" + sParam2 + "=" + sValue2;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue