summaryrefslogtreecommitdiff
path: root/libsoup/cookies/soup-cookie.h
blob: c5b5bd8fbf450669dd35bf6bde651d36979de6d3 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
/* 
 * Copyright 2007, 2008 Red Hat, Inc.
 */

#pragma once

#include "soup-types.h"

G_BEGIN_DECLS

/**
 * SoupSameSitePolicy:
 * @SOUP_SAME_SITE_POLICY_NONE: The cookie is exposed with both cross-site and same-site requests
 * @SOUP_SAME_SITE_POLICY_LAX: The cookie is withheld on cross-site requests but exposed on cross-site navigations
 * @SOUP_SAME_SITE_POLICY_STRICT: The cookie is only exposed for same-site requests
 *
 * Represents the same-site policies of a cookie.
 *
 * Since: 2.70
 */
typedef enum {
	SOUP_SAME_SITE_POLICY_NONE,
	SOUP_SAME_SITE_POLICY_LAX,
	SOUP_SAME_SITE_POLICY_STRICT,
} SoupSameSitePolicy;

typedef struct _SoupCookie SoupCookie;

SOUP_AVAILABLE_IN_2_24
GType soup_cookie_get_type (void);
#define SOUP_TYPE_COOKIE (soup_cookie_get_type())

#define SOUP_COOKIE_MAX_AGE_ONE_HOUR (60 * 60)
#define SOUP_COOKIE_MAX_AGE_ONE_DAY  (SOUP_COOKIE_MAX_AGE_ONE_HOUR * 24)
#define SOUP_COOKIE_MAX_AGE_ONE_WEEK (SOUP_COOKIE_MAX_AGE_ONE_DAY * 7)
#define SOUP_COOKIE_MAX_AGE_ONE_YEAR (SOUP_COOKIE_MAX_AGE_ONE_DAY * 365.2422)

SOUP_AVAILABLE_IN_2_24
SoupCookie *soup_cookie_new                     (const char  *name,
						 const char  *value,
						 const char  *domain,
						 const char  *path,
						 int          max_age);
SOUP_AVAILABLE_IN_2_24
SoupCookie *soup_cookie_parse                   (const char  *header,
						 GUri        *origin);
SOUP_AVAILABLE_IN_2_24
SoupCookie *soup_cookie_copy                    (SoupCookie  *cookie);

SOUP_AVAILABLE_IN_2_32
const char *soup_cookie_get_name                (SoupCookie  *cookie);
SOUP_AVAILABLE_IN_2_24
void        soup_cookie_set_name                (SoupCookie  *cookie,
						 const char  *name);
SOUP_AVAILABLE_IN_2_32
const char *soup_cookie_get_value               (SoupCookie  *cookie);
SOUP_AVAILABLE_IN_2_24
void        soup_cookie_set_value               (SoupCookie  *cookie,
						 const char  *value);
SOUP_AVAILABLE_IN_2_32
const char *soup_cookie_get_domain              (SoupCookie  *cookie);
SOUP_AVAILABLE_IN_2_24
void        soup_cookie_set_domain              (SoupCookie  *cookie,
						 const char  *domain);
SOUP_AVAILABLE_IN_2_32
const char *soup_cookie_get_path                (SoupCookie  *cookie);
SOUP_AVAILABLE_IN_2_24
void        soup_cookie_set_path                (SoupCookie  *cookie,
						 const char  *path);
SOUP_AVAILABLE_IN_2_24
void        soup_cookie_set_max_age             (SoupCookie  *cookie,
						 int          max_age);
SOUP_AVAILABLE_IN_2_32
GDateTime   *soup_cookie_get_expires            (SoupCookie  *cookie);
SOUP_AVAILABLE_IN_2_24
void        soup_cookie_set_expires             (SoupCookie  *cookie,
						 GDateTime    *expires);
SOUP_AVAILABLE_IN_2_32
gboolean    soup_cookie_get_secure              (SoupCookie  *cookie);
SOUP_AVAILABLE_IN_2_24
void        soup_cookie_set_secure              (SoupCookie  *cookie,
						 gboolean     secure);
SOUP_AVAILABLE_IN_2_32
gboolean    soup_cookie_get_http_only           (SoupCookie  *cookie);
SOUP_AVAILABLE_IN_2_24
void        soup_cookie_set_http_only           (SoupCookie  *cookie,
						 gboolean     http_only);

SOUP_AVAILABLE_IN_2_70
void        soup_cookie_set_same_site_policy    (SoupCookie         *cookie,
                                                 SoupSameSitePolicy  policy);
SOUP_AVAILABLE_IN_2_70
SoupSameSitePolicy soup_cookie_get_same_site_policy (SoupCookie     *cookie);

SOUP_AVAILABLE_IN_2_24
char       *soup_cookie_to_set_cookie_header    (SoupCookie  *cookie);
SOUP_AVAILABLE_IN_2_24
char       *soup_cookie_to_cookie_header        (SoupCookie  *cookie);

SOUP_AVAILABLE_IN_2_24
gboolean    soup_cookie_applies_to_uri          (SoupCookie  *cookie,
						 GUri        *uri);
SOUP_AVAILABLE_IN_2_24
gboolean    soup_cookie_equal                   (SoupCookie  *cookie1,
						 SoupCookie  *cookie2);

SOUP_AVAILABLE_IN_2_24
void        soup_cookie_free                    (SoupCookie  *cookie);

SOUP_AVAILABLE_IN_2_24
GSList     *soup_cookies_from_response          (SoupMessage *msg);
SOUP_AVAILABLE_IN_2_24
GSList     *soup_cookies_from_request           (SoupMessage *msg);

SOUP_AVAILABLE_IN_2_24
void        soup_cookies_to_response            (GSList      *cookies,
						 SoupMessage *msg);
SOUP_AVAILABLE_IN_2_24
void        soup_cookies_to_request             (GSList      *cookies,
						 SoupMessage *msg);

SOUP_AVAILABLE_IN_2_24
void        soup_cookies_free                   (GSList      *cookies);

SOUP_AVAILABLE_IN_2_24
char       *soup_cookies_to_cookie_header       (GSList      *cookies);

SOUP_AVAILABLE_IN_2_30
gboolean    soup_cookie_domain_matches          (SoupCookie  *cookie,
						 const char  *host);

G_DEFINE_AUTOPTR_CLEANUP_FUNC(SoupCookie, soup_cookie_free)

G_END_DECLS