last version
[aerie.git] / helpers.cpp
blobce97d0a8dbf837b113224449afe3833b3e1a0d44
1 #include "helpers.h"
4 /**
6 */
7 string urlencode(string s)
9 int length = s.length();
10 string out;
11 char tmp[10];
13 for (int i=0; i<length; i++)
14 if ((s[i]>='a' && s[i]<='z')
15 || (s[i]>='A' && s[i]<='Z')
16 || (s[i]>='0' && s[i]<='9')
17 || s[i]=='-'
18 || s[i]=='_')
19 out += s[i];
20 else
22 sprintf(tmp, "%%%02x", (unsigned char)s[i]);
23 out += tmp;
26 return out;
29 string urldecode(string s)
31 string out;
33 int number = 0;
34 int len = s.length();
35 char tmp[2] = " ";
37 for (int i=0; i<len; i++)
39 switch (s[i])
41 case '%':
42 number = 0;
43 for (int j=1; j<=2; j++)
45 number *= 16;
46 if (s[i+j]>='A' && s[i+j]<='F')
47 number += 10 + s[i+j] - 'A';
48 else if (s[i+j]>='a' && s[i+j]<='f')
49 number += 10 + s[i+j] - 'a';
50 else
51 number += s[i+j] - '0';
53 tmp[0] = number;
54 out += tmp;
55 i+=2;
56 break;
58 default:
59 out += s[i];
63 return out;