From 6b57fc45a28773177d2bf90bfe7294f40db51682 Mon Sep 17 00:00:00 2001 From: Jordan Bancino Date: Mon, 3 Oct 2022 13:40:29 -0400 Subject: [PATCH] Implement param encoding, clean up warnings in decoding function. --- src/Http.c | 79 ++++++++++------------------------------------ src/include/Http.h | 8 +++-- 2 files changed, 22 insertions(+), 65 deletions(-) diff --git a/src/Http.c b/src/Http.c index af19cea..fb9af75 100644 --- a/src/Http.c +++ b/src/Http.c @@ -373,86 +373,41 @@ HttpUrlDecode(char *str) } HashMap * -HttpParamDecode(char *str) +HttpParamDecode(FILE *in) { - HashMap *decoded; - - if (!str) - { - return NULL; - } - - decoded = HashMapCreate(); - if (!decoded) - { - return NULL; - } - - while (*str) - { - char *key; - char *val; - char *decVal; - - decVal = HttpParamDecode(val); - if (!decVal) - { - /* Memory error */ - } - - free(val); - str++; - } - - return decoded; + /* TODO */ + (void) in; + return NULL; } -char * -HttpParamEncode(HashMap * params) +void +HttpParamEncode(HashMap * params, FILE * out) { char *key; char *val; - size_t len; - size_t size = TELODENDRIA_STRING_CHUNK; - char *encoded; - - if (!params) + if (!params || ! out) { - return NULL; - } - - len = 0; - encoded = malloc(size); - - if (!encoded) - { - return NULL; + return; } while (HashMapIterate(params, &key, (void *) &val)) { - /* Print key */ + char *encKey; + char *encVal; - /* Print = */ + encKey = HttpUrlEncode(key); + encVal = HttpUrlEncode(val); - /* Print encoded value */ - - char *encVal = HttpParamEncode(val); - - if (!encVal) + if (!encKey || !encVal) { /* Memory error */ - free(encoded); - return NULL; + return; } + fprintf(out, "%s=%s&", encKey, encVal); + + free(encKey); free(encVal); - - /* Print & */ } - - /* Overwrite last & */ - - return encoded; } diff --git a/src/include/Http.h b/src/include/Http.h index f093cf1..21f4114 100644 --- a/src/include/Http.h +++ b/src/include/Http.h @@ -24,6 +24,8 @@ #ifndef TELODENDRIA_HTTP_H #define TELODENDRIA_HTTP_H +#include + #include typedef enum HttpRequestMethod @@ -118,9 +120,9 @@ extern char * HttpUrlDecode(char *); extern HashMap * - HttpParamDecode(char *); + HttpParamDecode(FILE *); -extern char * - HttpParamEncode(HashMap *); +extern void + HttpParamEncode(HashMap *, FILE *); #endif