commit b4bf8d0478de47d220361c5325e086ea8244ebf8
parent c5cbe982ef79b7bd8f8f4b1954bc0a9a75ff885f
Author: Erik Agsjö <erik.agsjo@gmail.com>
Date: Thu, 2 Dec 2021 09:03:31 +0100
More util functions
Diffstat:
2 files changed, 28 insertions(+), 0 deletions(-)
diff --git a/naett.h b/naett.h
@@ -22,6 +22,7 @@ typedef struct naettReq naettReq;
typedef struct naettRes naettRes;
typedef int (*naettReadFunc)(void* dest, int bufferSize, void* userData);
typedef int (*naettWriteFunc)(const void* source, int bytes, void* userData);
+typedef int (*naettHeaderLister)(const char* name, const char* value, void* userData);
// Option to `naettRequest`
typedef struct naettOption naettOption;
@@ -102,6 +103,17 @@ const void* naettGetBody(naettRes* response, int* outSize);
const char* naettGetHeader(naettRes* response, const char* name);
/**
+ * @brief Enumerates all response headers as long as the `lister`
+ * returns true.
+ */
+void naettListHeaders(naettRes* response, naettHeaderLister lister, void* userData);
+
+/**
+ * @brief Returns the request that initiated this response
+ */
+naettReq* naettGetRequest(naettRes* response);
+
+/**
* @brief Closes a response object.
*/
void naettClose(naettRes* response);
diff --git a/src/naett_core.c b/src/naett_core.c
@@ -287,6 +287,22 @@ const char* naettGetHeader(naettRes* response, const char* name) {
return NULL;
}
+void naettListHeaders(naettRes* response, naettHeaderLister lister, void* userData) {
+ InternalResponse* res = (InternalResponse*)response;
+ KVLink* node = res->headers;
+ while (node) {
+ if (!lister(node->key, node->value, userData)) {
+ return;
+ }
+ node = node->next;
+ }
+}
+
+naettReq* naettGetRequest(naettRes* response) {
+ InternalResponse* res = (InternalResponse*)response;
+ return (naettReq*) res->request;
+}
+
int naettComplete(const naettRes* response) {
InternalResponse* res = (InternalResponse*)response;
return res->complete;