changelog shortlog graph tags branches changeset files revisions annotate raw help

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

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