libfetch 0.0.0
A lightweight asynchronous HTTP/1.1 client library implementing a subset of the WHATWG Fetch API.
Loading...
Searching...
No Matches
cookie.h
Go to the documentation of this file.
1
10#ifndef COOKIE_H
11#define COOKIE_H
12
13#include <stdbool.h>
14#include <stddef.h>
15#include <stdint.h>
16#include <time.h>
17
25typedef struct cookie cookie_t;
26
28typedef struct cookie_jar cookie_jar_t;
29
32
53
72
91
134
158
178
192
214
232
254
276
291
297
308
314
320size_t cookie_jar_count(const cookie_jar_t *jar);
321
333size_t cookie_jar_count_for_domain(const cookie_jar_t *jar, const char *domain);
334
361cookie_t *cookie_new(const char *name, const char *value, const char *domain,
362 const char *path);
363
387cookie_parse_result_t cookie_parse_set_cookie(const char *header_value,
388 const char *request_url,
389 cookie_t **cookie);
390
401cookie_parse_set_cookie_headers(const char **header_values, size_t count,
402 const char *request_url, cookie_t ***cookies,
403 size_t *cookie_count);
404
411
417
436void cookie_set_expires(cookie_t *cookie, time_t expires);
437
451void cookie_set_max_age(cookie_t *cookie, int64_t max_age_seconds);
452
458void cookie_set_secure(cookie_t *cookie, bool secure);
459
465void cookie_set_http_only(cookie_t *cookie, bool http_only);
466
477
484
498bool cookie_is_secure(const cookie_t *cookie);
499
506
513
526bool cookie_is_expired(const cookie_t *cookie, time_t current_time);
527
534
541
548
556
582
591bool cookie_jar_remove(cookie_jar_t *jar, const char *name, const char *domain,
592 const char *path);
593
605size_t cookie_jar_remove_domain(cookie_jar_t *jar, const char *domain);
606
615
624
654 const char *url,
655 bool include_http_only);
656
666cookie_match_t *cookie_jar_get_cookies(cookie_jar_t *jar, const char *domain,
667 const char *path, bool secure_only,
668 bool include_http_only);
669
674void cookie_match_free(cookie_match_t *matches);
675
691char *cookie_match_to_header(const cookie_match_t *matches);
692
715
723 const char *domain);
724
731
738
744
766bool cookie_jar_load_binary(cookie_jar_t *jar, const char *filename);
767
774bool cookie_jar_save_binary(const cookie_jar_t *jar, const char *filename);
775
784 size_t *buffer_size);
785
793bool cookie_jar_load_binary_buffer(cookie_jar_t *jar, const char *buffer,
794 size_t buffer_size);
795
817bool cookie_domain_matches(const char *cookie_domain,
818 const char *request_domain);
819
836bool cookie_path_matches(const char *cookie_path, const char *request_path);
837
843char *cookie_canonicalize_domain(const char *domain);
844
856char *cookie_default_path(const char *url);
857
865bool cookie_is_public_suffix(const char *domain);
866
882bool cookie_is_valid_name(const char *name);
883
891bool cookie_is_valid_value(const char *value);
892
906char *cookie_url_decode(const char *encoded);
907
913char *cookie_url_encode(const char *decoded);
914
928const char *cookie_samesite_to_string(cookie_samesite_t samesite);
929
936
942const char *cookie_priority_to_string(cookie_priority_t priority);
943
950
965
975#define COOKIE_MAX_NAME_LENGTH 256
976
978#define COOKIE_MAX_VALUE_LENGTH 4096
979
981#define COOKIE_MAX_DOMAIN_LENGTH 253
982
984#define COOKIE_MAX_PATH_LENGTH 1024
985
987#define COOKIE_DEFAULT_MAX_COOKIES 3000
988
990#define COOKIE_DEFAULT_MAX_PER_DOMAIN 50
991
993#define COOKIE_DEFAULT_MAX_AGE_SECONDS (365 * 24 * 60 * 60)
994
1008#define COOKIE_IS_VALID_FOR_HTTP(cookie) \
1009 ((cookie) != NULL && !cookie_is_expired((cookie), time(NULL)))
1010
1019#define COOKIE_IS_VALID_FOR_HTTPS(cookie) \
1020 (COOKIE_IS_VALID_FOR_HTTP(cookie) && (!cookie_is_secure(cookie) || true))
1021
1024#endif /* COOKIE_H */
Domain bucket for cookie storage.
Definition cookie.h:172
size_t count
Definition cookie.h:175
char * domain
Definition cookie.h:173
cookie_t * cookies
Definition cookie.h:174
struct cookie_domain_bucket * next
Definition cookie.h:176
Cookie iterator implementation.
Definition cookie.h:246
const char * domain_filter
Definition cookie.h:251
cookie_jar_t * jar
Definition cookie.h:247
bool include_http_only
Definition cookie.h:252
cookie_domain_bucket_t * current_bucket
Definition cookie.h:249
cookie_t * current_cookie
Definition cookie.h:250
size_t bucket_index
Definition cookie.h:248
Cookie jar configuration.
Definition cookie.h:148
size_t max_cookies_per_domain
Definition cookie.h:150
const char * persistent_file
Definition cookie.h:156
time_t max_age_seconds
Definition cookie.h:155
bool accept_persistent_cookies
Definition cookie.h:153
bool accept_third_party
Definition cookie.h:154
bool accept_session_cookies
Definition cookie.h:152
size_t max_cookie_size
Definition cookie.h:151
size_t max_cookies_total
Definition cookie.h:149
Cookie jar implementation.
Definition cookie.h:184
cookie_domain_bucket_t ** domain_buckets
Definition cookie.h:186
bool dirty
Definition cookie.h:189
time_t last_cleanup
Definition cookie.h:190
cookie_jar_config_t config
Definition cookie.h:185
size_t bucket_count
Definition cookie.h:187
size_t total_cookies
Definition cookie.h:188
Cookie match result.
Definition cookie.h:228
cookie_t * cookie
Definition cookie.h:229
struct cookie_match * next
Definition cookie.h:230
HTTP cookie structure.
Definition cookie.h:105
char * path
Path attribute.
Definition cookie.h:113
char * domain
Domain attribute.
Definition cookie.h:111
struct cookie * prev
Previous cookie in linked list.
Definition cookie.h:132
time_t last_access_time
When cookie was last accessed.
Definition cookie.h:120
cookie_priority_t priority
Priority level.
Definition cookie.h:127
time_t creation_time
When cookie was created.
Definition cookie.h:118
time_t expires
Expiration time (0 for session cookies)
Definition cookie.h:116
char * name
Cookie name.
Definition cookie.h:107
cookie_flags_t flags
Cookie attribute flags.
Definition cookie.h:123
struct cookie * next
Next cookie in linked list.
Definition cookie.h:130
char * value
Cookie value.
Definition cookie.h:109
cookie_samesite_t samesite
SameSite attribute.
Definition cookie.h:125