File: http.cookie.md

package info (click to toggle)
lua-http 0.4-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 1,100 kB
  • sloc: makefile: 60; sh: 16
file content (175 lines) | stat: -rw-r--r-- 8,399 bytes parent folder | download | duplicates (2)
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
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
## http.cookie

A module for working with cookies.

### `bake(name, value, expiry_time, domain, path, secure_only, http_only, same_site)` <!-- --> {#http.cookie.bake}

Returns a string suitable for use in a `Set-Cookie` header with the passed parameters.


### `parse_cookie(cookie)` <!-- --> {#http.cookie.parse_cookie}

Parses the `Cookie` header contents `cookie`.

Returns a table containing `name` and `value` pairs as strings.


### `parse_cookies(req_headers)` <!-- --> {#http.cookie.parse_cookies}

Parses all `Cookie` headers in the [*http.headers*](#http.headers) object `req_headers`.

Returns a table containing `name` and `value` pairs as strings.


### `parse_setcookie(setcookie)` <!-- --> {#http.cookie.parse_setcookie}

Parses the `Set-Cookie` header contents `setcookie`.

Returns `name`, `value` and `params` where:

  - `name` is a string containing the cookie name
  - `value` is a string containing the cookie value
  - `params` is the a table where the keys are cookie attribute names and values are cookie attribute values


### `new_store()` <!-- --> {#http.cookie.new_store}

Creates a new cookie store.

Cookies are unique for a tuple of domain, path and name;
although multiple cookies with the same name may exist in a request due to overlapping paths or domains.


### `store.psl` <!-- --> {#http.cookie.store.psl}

A [lua-psl](https://github.com/daurnimator/lua-psl) object to use for checking against the Public Suffix List.
Set the field to `false` to skip checking the suffix list.

Defaults to the [latest](https://rockdaboot.github.io/libpsl/libpsl-Public-Suffix-List-functions.html#psl-latest) PSL on the system. If lua-psl is not installed then it will be `nil`.


### `store.time()` <!-- --> {#http.cookie.store.time}

A function used by the `store` to get the current time for expiries and such.

Defaults to a function based on [`os.time`](https://www.lua.org/manual/5.3/manual.html#pdf-os.time).


### `store.max_cookie_length` <!-- --> {#http.cookie.store.max_cookie_length}

The maximum length (in bytes) of cookies in the store; this value is also used as default maximum cookie length for `:lookup()`.
Decreasing this value will only prevent new cookies from being added, it will not remove old cookies.

Defaults to infinity (no maximum size).


### `store.max_cookies` <!-- --> {#http.cookie.store.max_cookies}

The maximum number of cookies allowed in the `store`.
Decreasing this value will only prevent new cookies from being added, it will not remove old cookies.

Defaults to infinity (any number of cookies is allowed).


### `store.max_cookies_per_domain` <!-- --> {#http.cookie.store.max_cookies_per_domain}

The maximum number of cookies allowed in the `store` per domain.
Decreasing this value will only prevent new cookies from being added, it will not remove old cookies.

Defaults to infinity (any number of cookies is allowed).


### `store:store(req_domain, req_path, req_is_http, req_is_secure, req_site_for_cookies, name, value, params)` <!-- --> {#http.cookie.store:store}

Attempts to add a cookie to the `store`.

  - `req_domain` is the domain that the cookie was obtained from
  - `req_path` is the path that the cookie was obtained from
  - `req_is_http` is a boolean flag indicating if the cookie was obtained from a "non-HTTP" API
  - `req_is_secure` is a boolean flag indicating if the cookie was obtained from a "secure" protocol
  - `req_site_for_cookies` is a string containing the host that should be considered as the "site for cookies" (See [RFC 6265bis-02 Section 5.2](https://tools.ietf.org/html/draft-ietf-httpbis-rfc6265bis-02#section-5.2)), can be `nil` if unknown.
  - `name` is a string containing the cookie name
  - `value` is a string containing the cookie value
  - `params` is the a table where the keys are cookie attribute names and values are cookie attribute values

Returns a boolean indicating if a cookie was stored.


### `store:store_from_request(req_headers, resp_headers, req_host, req_site_for_cookies)` <!-- --> {#http.cookie.store:store_from_request}

Attempt to store any cookies found in the response headers.

  - `req_headers` is the [*http.headers*](#http.headers) object for the outgoing request
  - `resp_headers` is the [*http.headers*](#http.headers) object received in response
  - `req_host` is the host that your query was directed at (only used if `req_headers` is missing a `Host` header)
  - `req_site_for_cookies` is a string containing the host that should be considered as the "site for cookies" (See [RFC 6265bis-02 Section 5.2](https://tools.ietf.org/html/draft-ietf-httpbis-rfc6265bis-02#section-5.2)), can be `nil` if unknown.


### `store:get(domain, path, name)` <!-- --> {#http.cookie.store:get}

Returns the cookie value for the cookie stored for the passed `domain`, `path` and `name`.


### `store:remove(domain, path, name)` <!-- --> {#http.cookie.store:remove}

Deletes the cookie stored for the passed `domain`, `path` and `name`.

If `name` is `nil` or not passed then all cookies for the `domain` and `path` are removed.

If `path` is `nil` or not passed (in addition to `name`) then all cookies for the `domain` are removed.


### `store:lookup(domain, path, is_http, is_secure, is_safe_method, site_for_cookies, is_top_level, max_cookie_length)` <!-- --> {#http.cookie.store:lookup}

Finds cookies visible to suitable for passing to an entity.

  - `domain` is the domain that will be sent the cookie
  - `path` is the path that will be sent the cookie
  - `is_http` is a boolean flag indicating if the destination is a "non-HTTP" API
  - `is_secure` is a boolean flag indicating if the destination will be communicated with over a "secure" protocol
  - `is_safe_method` is a boolean flag indicating if the cookie will be sent via a safe HTTP method (See also [http.util.is_safe_method](#http.util.is_safe_method))
  - `site_for_cookies` is a string containing the host that should be considered as the "site for cookies" (See [RFC 6265bis-02 Section 5.2](https://tools.ietf.org/html/draft-ietf-httpbis-rfc6265bis-02#section-5.2)), can be `nil` if unknown.
  - `is_top_level` is a boolean flag indicating if this request is a "top level" request (See [RFC 6265bis-02 Section 5.2](https://tools.ietf.org/html/draft-ietf-httpbis-rfc6265bis-02#section-5.2))
  - `max_cookie_length` is the maximum cookie length to allow (See also [`store.max_cookie_length`](#http.cookie.store.max_cookie_length))

Returns a string suitable for use in a `Cookie` header.


### `store:lookup_for_request(headers, host, site_for_cookies, is_top_level, max_cookie_length)` <!-- --> {#http.cookie.store:lookup_for_request}

Finds cookies suitable for adding to a request.

  - `headers` is the [*http.headers*](#http.headers) object for the outgoing request
  - `host` is the host that your query was directed at (only used if `headers` is missing a `Host` header)
  - `site_for_cookies` is a string containing the host that should be considered as the "site for cookies" (See [RFC 6265bis-02 Section 5.2](https://tools.ietf.org/html/draft-ietf-httpbis-rfc6265bis-02#section-5.2)), can be `nil` if unknown.
  - `is_top_level` is a boolean flag indicating if this request is a "top level" request (See [RFC 6265bis-02 Section 5.2](https://tools.ietf.org/html/draft-ietf-httpbis-rfc6265bis-02#section-5.2))
  - `max_cookie_length` is the maximum cookie length to allow (See also [`store.max_cookie_length`](#http.cookie.store.max_cookie_length))

Returns a string suitable for use in a `Cookie` header.


### `store:clean_due()` <!-- --> {#http.cookie.store:clean_due}

Returns the number of seconds until the next cookie in the `store` expires.


### `store:clean()` <!-- --> {#http.cookie.store:clean}

Remove all expired cookies from the `store`.


### `store:load_from_file(file)` <!-- --> {#http.cookie.store:load_from_file}

Loads cookie data from the file object `file` into `store`.
The file should be in the Netscape Cookiejar format.
Invalid lines in the file are ignored.

Returns `true` on success or passes along `nil, err, errno` if a `:read` call fails.


### `store:save_to_file(file)` <!-- --> {#http.cookie.store:save_to_file}

Writes the cookie data from `store` into the file object `file` in the Netscape Cookiejar format.
`file` is not `seek`-ed or truncated before writing.

Returns `true` on success or passes along `nil, err, errno` if a `:write` call fails.