libfetch 0.0.0
A lightweight asynchronous HTTP/1.1 client library implementing a subset of the WHATWG Fetch API.
Loading...
Searching...
No Matches
Headers Management

Functions for managing HTTP headers. More...

Functions

fetch_headers_tfetch_headers_new (void)
 Create a new headers container.
 
void fetch_headers_free (fetch_headers_t *headers)
 Free a headers container and all its contents.
 
void fetch_headers_append (fetch_headers_t *headers, const char *name, const char *value)
 Add a header (allows duplicates)
 
void fetch_headers_set (fetch_headers_t *headers, const char *name, const char *value)
 Set a header (replaces existing)
 
void fetch_headers_delete (fetch_headers_t *headers, const char *name)
 Remove all headers with the given name.
 
const char * fetch_headers_get (const fetch_headers_t *headers, const char *name)
 Get the first header value with the given name.
 
bool fetch_headers_has (const fetch_headers_t *headers, const char *name)
 Check if a header exists.
 
fetch_headers_iterator_t fetch_headers_entries (const fetch_headers_t *headers)
 Create an iterator for headers.
 
bool fetch_headers_next (fetch_headers_iterator_t *iter, const char **key, const char **value)
 Get the next header from an iterator.
 

Detailed Description

Functions for managing HTTP headers.

Function Documentation

◆ fetch_headers_append()

void fetch_headers_append ( fetch_headers_t * headers,
const char * name,
const char * value )

Add a header (allows duplicates)

Parameters
headersHeaders container
nameHeader name
valueHeader value
Note
Memory: Makes copies of name and value strings
fetch_headers_append(headers, "Accept", "text/html");
fetch_headers_append(headers, "Accept", "application/json"); // Both values
kept
void fetch_headers_append(fetch_headers_t *headers, const char *name, const char *value)
Add a header (allows duplicates)
Definition fetch.c:8108

◆ fetch_headers_delete()

void fetch_headers_delete ( fetch_headers_t * headers,
const char * name )

Remove all headers with the given name.

Parameters
headersHeaders container
nameHeader name to remove (case-insensitive)

◆ fetch_headers_entries()

fetch_headers_iterator_t fetch_headers_entries ( const fetch_headers_t * headers)

Create an iterator for headers.

Parameters
headersHeaders to iterate
Returns
Iterator object (no cleanup required)

◆ fetch_headers_free()

void fetch_headers_free ( fetch_headers_t * headers)

Free a headers container and all its contents.

Parameters
headersHeaders to free (can be NULL)
Note
Memory: Frees the headers object and all contained strings

◆ fetch_headers_get()

const char * fetch_headers_get ( const fetch_headers_t * headers,
const char * name )

Get the first header value with the given name.

Parameters
headersHeaders container
nameHeader name (case-insensitive)
Returns
Header value (owned by headers, do not free), or NULL if not found
Note
Memory: Returned string is owned by the headers object
const char *content_type = fetch_headers_get(headers, "Content-Type");
if (content_type) {
printf("Content-Type: %s\n", content_type);
// Do NOT free content_type, it's owned by headers
}
const char * fetch_headers_get(const fetch_headers_t *headers, const char *name)
Get the first header value with the given name.
Definition fetch.c:8169

◆ fetch_headers_has()

bool fetch_headers_has ( const fetch_headers_t * headers,
const char * name )

Check if a header exists.

Parameters
headersHeaders container
nameHeader name (case-insensitive)
Returns
true if header exists

◆ fetch_headers_new()

fetch_headers_t * fetch_headers_new ( void )

Create a new headers container.

Returns
New headers object (caller owns, must call fetch_headers_free()), or NULL on memory allocation failure
Note
Memory: Returns owned object that must be freed
if (!headers) {
fprintf(stderr, "Failed to create headers\n");
return -1;
}
fetch_headers_set(headers, "Content-Type", "application/json");
fetch_headers_set(headers, "Authorization", "Bearer token123");
// Use headers with request...
fetch_headers_free(headers); // Required: free the headers
fetch_headers_t * fetch_headers_new(void)
Create a new headers container.
Definition fetch.c:8028
void fetch_headers_free(fetch_headers_t *headers)
Free a headers container and all its contents.
Definition fetch.c:8061
void fetch_headers_set(fetch_headers_t *headers, const char *name, const char *value)
Set a header (replaces existing)
Definition fetch.c:8131
HTTP headers container.
Definition fetch.h:393

◆ fetch_headers_next()

bool fetch_headers_next ( fetch_headers_iterator_t * iter,
const char ** key,
const char ** value )

Get the next header from an iterator.

Parameters
iterIterator object
keyOutput pointer for header name (owned by headers, do not free)
valueOutput pointer for header value (owned by headers, do not free)
Returns
true if a header was returned, false if iteration complete
Note
Memory: Returned strings are owned by the headers object
const char *key, *value;
while (fetch_headers_next(&iter, &key, &value)) {
printf("%s: %s\n", key, value);
// Do NOT free key or value
}
fetch_headers_iterator_t fetch_headers_entries(const fetch_headers_t *headers)
Create an iterator for headers.
Definition fetch.c:8187
bool fetch_headers_next(fetch_headers_iterator_t *iter, const char **key, const char **value)
Get the next header from an iterator.
Definition fetch.c:8192
Iterator for traversing headers.
Definition fetch.h:403

◆ fetch_headers_set()

void fetch_headers_set ( fetch_headers_t * headers,
const char * name,
const char * value )

Set a header (replaces existing)

Parameters
headersHeaders container
nameHeader name (case-insensitive)
valueHeader value
Note
Memory: Makes copies of name and value strings
fetch_headers_set(headers, "User-Agent", "MyApp/1.0");
fetch_headers_set(headers, "user-agent", "MyApp/2.0"); // Replaces previous