changelog shortlog graph tags branches changeset files revisions annotate raw help

Mercurial > core / lisp/lib/net/pkg.lisp

changeset 360: 5b6a2a8ba83e
parent: 0e00dec3de03
child: b1f78dffbcdd
author: Richard Westhaver <ellis@rwest.io>
date: Wed, 22 May 2024 22:46:17 -0400
permissions: -rw-r--r--
description: fix net/req bugs, fetch works now
1 (defpackage :net/core
2  (:use :cl :std :sb-bsd-sockets :sb-thread :sb-concurrency)
3  (:export
4  ;; err
5  :net-error
6  :codec-error
7  :protocol-error
8  ;; obj
9  :transport
10  :codec
11  :protocol
12  :client
13  :server
14  :peer
15  :proxy
16  :tunnel))
17 
18 (defpackage :net/util
19  (:use :cl :obj :dat/proto :std :log :net/core :sb-bsd-sockets)
20  (:export :get-address-by-name))
21 
22 ;; (defpackage :net/sans-io
23 ;; (:use :cl :obj :dat/proto :std :net/core :sb-bsd-sockets)
24 ;; (:export))
25 
26 (defpackage :net/udp
27  (:nicknames :udp)
28  (:use :cl :std :net/core :sb-bsd-sockets)
29  (:export
30  :udp-server
31  :with-udp-client-and-server))
32 
33 (defpackage :net/tcp
34  (:nicknames :tcp)
35  (:use :cl :std :net/core :sb-bsd-sockets)
36  (:export
37  :tcp-server))
38 
39 (defpackage :net/codec/punycode
40  (:nicknames :codec/punycode)
41  (:use :cl)
42  (:export
43  :encode-punycode
44  :decode-punycode
45  :encode-domain
46  :decode-domain))
47 
48 (defpackage :net/codec/dns
49  (:nicknames :codec/dns)
50  (:use :cl :std :net/core :net/codec/punycode)
51  (:export
52  :*record-type-table*
53  :record-type-id
54  :id-record-type
55  :decode-record :decode-response
56  :encode-host :decode-host :encode-header :decode-header
57  :encode-query :decode-query
58  :decode-data))
59 
60 (defpackage :net/codec/tlv
61  (:nicknames :codec/tlv)
62  (:use :cl :std :net/core :dat/proto)
63  (:export
64  :tlv :tlv-type :tlv-length :tlv-value :make-tlv))
65 
66 (defpackage :net/codec/osc
67  (:nicknames :codec/osc)
68  (:use :cl :std :log :net/core)
69  (:export
70  :*default-osc-buffer-size*
71  :make-message
72  :message
73  :make-bundle
74  :bundle
75  :format-osc-data
76  :command
77  ;; :args ;; conflict
78  :timetag
79  :elements
80  :encode-message
81  :encode-bundle
82  :decode-message
83  :decode-bundle
84  :make-osc-tree
85  :dp-register
86  :dp-remove
87  :dp-match
88  :dispatch
89  :get-current-timetag ; osc-time
90  :timetag+
91  :get-unix-time
92  :unix-time->timetag
93  :timetag->unix-time
94  :print-as-double))
95 
96 ;; sb-thread::make-condition
97 ;; (defpackage :net/proto/crew
98 ;; (:nicknames :net/crew)
99 ;; (:use :cl :sb-bsd-sockets :std :net/core :obj/id)
100 ;; (:import-from #:sb-thread
101 ;; #:condition-notify
102 ;; #:condition-wait
103 ;; ;; #:make-condition-variable
104 ;; #:make-mutex ;; make-lock
105 ;; #:make-thread
106 ;; #:with-mutex)
107 ;; (:import-from :sb-concurrency
108 ;; :make-gate)
109 ;; (:import-from #:swank-client
110 ;; #:slime-close
111 ;; #:slime-connect
112 ;; #:slime-eval
113 ;; #:slime-eval-async
114 ;; #:slime-migrate-evals
115 ;; #:slime-network-error
116 ;; #:slime-pending-evals-p
117 ;; #:swank-connection
118 ;; #:with-slime-connection)
119 ;; (:export
120 ;; :crew-connection-info
121 ;; :make-worker-pool
122 ;; :crew-worker :crew-worker-pool
123 ;; :*crew-worker-pools-lock*
124 ;; :*crew-worker-pools*
125 ;; :connect-worker
126 ;; :disconnect-worker
127 ;; :parallel-mapcar :parallel-reduce
128 ;; :eval-form-all-workers
129 ;; :eval-form-repeatedly
130 ;; :eval-repeatedly-async-state
131 ;; :worker-count
132 ;; :reconnect-worker))
133 
134 (defpackage :net/proto/dns
135  (:nicknames :net/dns)
136  (:use :cl :sb-bsd-sockets :std :net/core :net/udp :codec/dns)
137  (:export
138  :dns-port
139  :*cloudflare-servers*
140  :*dnswatch-servers*
141  :*google-servers*
142  :*opendns-servers*
143  :*quad9-servers*
144  :*dns-servers*
145  :query
146  :query-data
147  :resolve
148  :hostname
149  :response-code
150  :dns-servers-exhausted
151  :response-code-name
152  :with-dns-error-handling))
153 
154 (defpackage :net/proto/ssh
155  (:use :cl :std :net/core :sb-bsd-sockets)
156  (:export))
157 
158 (defpackage :net/proto/http
159  (:nicknames :http)
160  (:use :cl :std :net/core :sb-bsd-sockets :parse/bytes :io/xsubseq :io/smart-buffer)
161  (:export
162  :make-parser
163  :http-request
164  :http-response
165  :make-http-request
166  :make-http-response
167  :http-request-p
168  :http-response-p
169  :make-callbacks
170  :http-version
171  :http-major-version
172  :http-minor-version
173  :http-method
174  :http-resource
175  :http-status
176  :http-status-text
177  :http-content-length
178  :http-chunked-p
179  :http-upgrade-p
180  :http-headers
181  ;; multipart parser
182  :make-multipart-parser
183  ;; Low-level parser API
184  :http
185  :http-p
186  :make-http
187  :parse-request
188  :parse-response
189  :http-multipart-parse
190  :ll-multipart-parser
191  :make-ll-multipart-parser
192  ;; Error
193  :http-error
194  :callback-error
195  :cb-message-begin
196  :cb-url
197  :cb-first-line
198  :cb-header-field
199  :cb-header-value
200  :cb-headers-complete
201  :cb-body
202  :cb-message-complete
203  :cb-status
204 
205  :parsing-error
206  :invalid-eof-state
207  :header-overflow
208  :closed-connection
209  :invalid-version
210  :invalid-status
211  :invalid-method
212  :invalid-url
213  :invalid-host
214  :invalid-port
215  :invalid-path
216  :invalid-query-string
217  :invalid-fragment
218  :lf-expected
219  :invalid-header-token
220  :invalid-content-length
221  :invalid-chunk-size
222  :invalid-constant
223  :invalid-internal-state
224  :strict-error
225  :paused-error
226  :unknown-error
227 
228  :multipart-parsing-error
229  :invalid-multipart-body
230  :invalid-boundary
231 
232  :header-value-parsing-error
233  :invalid-header-value
234  :invalid-parameter-key
235  :invalid-parameter-value))
236 
237 (defpackage net/cookie
238  (:use :cl :parse/bytes)
239  (:import-from :obj/time
240  :today
241  :timestamp-century
242  :timestamp-to-universal
243  :universal-to-timestamp
244  :format-timestring
245  :encode-timestamp
246  :*abbreviated-subzone-name->timezone-list*
247  :reread-timezone-repository
248  :timezone-subzones
249  :subzone-abbrev
250  :subzone-offset
251  :+gmt-zone+)
252  (:export :parse-set-cookie-header
253  :write-cookie-header
254  :write-set-cookie-header
255  :cookie
256  :make-cookie
257  :cookie=
258  :cookie-equal
259  :cookie-name
260  :cookie-value
261  :cookie-expires
262  :cookie-path
263  :cookie-domain
264  :cookie-same-site
265  :cookie-max-age
266  :cookie-partitioned
267  :cookie-secure-p
268  :cookie-httponly-p
269  :cookie-origin-host
270  :cookie-jar
271  :make-cookie-jar
272  :cookie-jar-cookies
273  :cookie-jar-host-cookies
274  :merge-cookies))
275 
276 (defpackage :net/req
277  (:nicknames :req)
278  (:shadowing-import-from :std/type :octet :octet-vector)
279  (:shadow :get :delete)
280  (:use :cl :std :obj/uri :net/proto/http :babel :net/cookie :fast-io :dat/base64 :cl+ssl :sb-gray)
281  (:shadowing-import-from :babel :octets-to-string)
282  (:export
283  :request
284  :get
285  :post
286  :head
287  :put
288  :patch
289  :delete
290  :fetch
291  :*default-connect-timeout*
292  :*default-read-timeout*
293  :*default-proxy*
294  :*verbose*
295  :*not-verify-ssl*
296  :*connection-pool*
297  :*use-connection-pool*
298  :make-connection-pool
299  :clear-connection-pool
300  ;; Restarts
301  :retry-request
302  :ignore-and-continue))
303 
304 (uiop:define-package :net/fetch
305  (:nicknames :fetch)
306  (:use :cl :std :obj/uri)
307  (:export :fetch :download))
308 
309 (uiop:define-package :net
310  (:use-reexport
311  :net/core
312  :net/tcp
313  :net/udp
314  ;; :net/sans-io
315  :net/codec/dns
316  :net/codec/osc
317  :net/codec/tlv
318  :net/proto/dns
319  ;; :net/proto/crew
320  :net/proto/ssh
321  :net/proto/http))