Files
@ c7d4d7011789
Branch filter:
Location: libtransport.git/backends/twitter/libtwitcurl/.svn/text-base/urlencode.cpp.svn-base - annotation
c7d4d7011789
908 B
text/plain
Merge branch 'master' of https://github.com/hanzz/libtransport
6983e999e085 6983e999e085 6983e999e085 6983e999e085 6983e999e085 6983e999e085 6983e999e085 6983e999e085 6983e999e085 6983e999e085 6983e999e085 6983e999e085 6983e999e085 6983e999e085 6983e999e085 6983e999e085 6983e999e085 6983e999e085 6983e999e085 6983e999e085 6983e999e085 6983e999e085 6983e999e085 6983e999e085 6983e999e085 6983e999e085 6983e999e085 6983e999e085 6983e999e085 6983e999e085 6983e999e085 6983e999e085 6983e999e085 6983e999e085 6983e999e085 6983e999e085 6983e999e085 6983e999e085 6983e999e085 6983e999e085 | #include "urlencode.h"
std::string char2hex( char dec )
{
char dig1 = (dec&0xF0)>>4;
char dig2 = (dec&0x0F);
if ( 0<= dig1 && dig1<= 9) dig1+=48; //0,48 in ascii
if (10<= dig1 && dig1<=15) dig1+=65-10; //A,65 in ascii
if ( 0<= dig2 && dig2<= 9) dig2+=48;
if (10<= dig2 && dig2<=15) dig2+=65-10;
std::string r;
r.append( &dig1, 1);
r.append( &dig2, 1);
return r;
}
std::string urlencode( const std::string &c )
{
std::string escaped;
int max = c.length();
for(int i=0; i<max; i++)
{
if ( (48 <= c[i] && c[i] <= 57) ||//0-9
(65 <= c[i] && c[i] <= 90) ||//ABC...XYZ
(97 <= c[i] && c[i] <= 122) || //abc...xyz
(c[i]=='~' || c[i]=='-' || c[i]=='_' || c[i]=='.')
)
{
escaped.append( &c[i], 1);
}
else
{
escaped.append("%");
escaped.append( char2hex(c[i]) );//converts char 255 to string "FF"
}
}
return escaped;
}
|