+/**
+ * Get key value from tokenized buffer
+ */
+int http_getValue(char *tolenized_buf, size_t tolenized_buf_len, const char *key, char *value, size_t len)
+{
+ if (!tolenized_buf || !key || !value)
+ return -1;
+
+ char *p = tolenized_buf;
+ size_t value_len = 0;
+
+ memset(value, 0, len);
+
+ for (size_t i = 0; i < tolenized_buf_len; i++)
+ {
+ size_t token_len = strlen(p);
+ http_decodeUrl(p, token_len, decoded_str, sizeof(decoded_str));
+
+ if (!strcmp(key, decoded_str))
+ {
+ /* skip key */
+ p += token_len + 1;
+
+ http_decodeUrl(p, strlen(p), decoded_str, sizeof(decoded_str));
+ value_len = strlen(decoded_str);
+
+ if (value_len >= len)
+ return -1;
+
+ strcpy(value, decoded_str);
+ return value_len;
+ }
+ /* jump to next pair */
+ p += token_len + 1;
+ }
+
+ return -1;
+}
+
+/**
+ * tokenize a buffer
+ */
+int http_tokenizeGetRequest(char *raw_buf, size_t raw_len)
+{
+ size_t token = 0;
+
+ for(size_t i = 0; (i < raw_len) && raw_buf; i++)
+ {
+ if (raw_buf[i] == '&')
+ {
+ token++;
+ raw_buf[i] = '\0';
+ }
+
+ if (raw_buf[i] == '=')
+ raw_buf[i] = '\0';
+ }
+
+ return token + 1;
+}