+/**
+ * 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++)
+ {
+ if (!strcmp(key, p))
+ {
+ /* skip key */
+ size_t jump = strlen(p) + 1;
+ p += jump;
+
+ value_len = strlen(p);
+ if (value_len >= len)
+ return -1;
+
+ strcpy(value, p);
+ break;
+ }
+ /* jump to next pair */
+ p += strlen(p) + 1;
+ }
+
+ return value_len;
+}
+
+/**
+ * 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;
+}