2023-10-19 17:49:54 +02:00
|
|
|
;; tinmop: a multiprotocol client
|
2023-10-19 17:51:11 +02:00
|
|
|
;; Copyright © cage
|
2020-06-19 11:40:20 +02:00
|
|
|
|
|
|
|
;; This program is free software: you can redistribute it and/or modify
|
|
|
|
;; it under the terms of the GNU General Public License as published by
|
|
|
|
;; the Free Software Foundation, either version 3 of the License, or
|
|
|
|
;; (at your option) any later version.
|
|
|
|
|
|
|
|
;; This program is distributed in the hope that it will be useful,
|
|
|
|
;; but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
|
|
;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
|
|
;; GNU General Public License for more details.
|
|
|
|
|
|
|
|
;; You should have received a copy of the GNU General Public License
|
|
|
|
;; along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
|
|
|
2020-06-22 13:58:04 +02:00
|
|
|
(defpackage :gemini-constants
|
|
|
|
(:use
|
|
|
|
:cl
|
|
|
|
:alexandria)
|
|
|
|
(:export
|
|
|
|
:+gemini-scheme+
|
2023-07-07 14:45:05 +02:00
|
|
|
:+titan-scheme+
|
2020-06-22 13:58:04 +02:00
|
|
|
:+gemini-default-port+))
|
|
|
|
|
2020-06-19 11:40:20 +02:00
|
|
|
(defpackage :gemini-parser
|
|
|
|
(:use
|
|
|
|
:cl
|
|
|
|
:alexandria
|
|
|
|
:cl-ppcre
|
|
|
|
:esrap
|
|
|
|
:config
|
|
|
|
:constants
|
|
|
|
:text-utils
|
2022-02-17 21:35:25 +01:00
|
|
|
:iri-parser
|
2020-06-19 11:40:20 +02:00
|
|
|
:misc
|
2020-06-22 13:58:04 +02:00
|
|
|
:alexandria
|
|
|
|
:gemini-constants)
|
2020-06-19 11:40:20 +02:00
|
|
|
(:shadowing-import-from :misc :random-elt :shuffle)
|
|
|
|
(:export
|
2020-06-22 13:58:04 +02:00
|
|
|
:+gemini-scheme+
|
2023-07-07 14:45:05 +02:00
|
|
|
:+titan-scheme+
|
2021-04-01 17:08:42 +02:00
|
|
|
:+preformatted-prefix+
|
2021-05-16 14:18:19 +02:00
|
|
|
:+max-header-level+
|
2022-10-14 14:10:52 +02:00
|
|
|
:*raw-mode-data*
|
2021-05-16 15:20:17 +02:00
|
|
|
:*pre-group-id*
|
|
|
|
:*pre-alt-text*
|
|
|
|
:*header-group-id*
|
2021-11-05 11:13:05 +01:00
|
|
|
:*source-line-id*
|
2021-01-09 16:27:40 +01:00
|
|
|
:geminize-h1
|
|
|
|
:geminize-h2
|
|
|
|
:geminize-h3
|
|
|
|
:geminize-list
|
|
|
|
:geminize-quote
|
|
|
|
:geminize-link
|
2021-04-01 17:08:42 +02:00
|
|
|
:geminize-preformatted
|
2021-10-10 12:38:37 +02:00
|
|
|
:render-gemini-link
|
2020-06-19 11:40:20 +02:00
|
|
|
:gemini-link
|
|
|
|
:target
|
|
|
|
:name
|
2021-10-10 12:38:37 +02:00
|
|
|
:make-gemini-link
|
2021-07-16 11:32:36 +02:00
|
|
|
:path-last-dir
|
2020-06-19 11:40:20 +02:00
|
|
|
:gemini-response
|
|
|
|
:status-code
|
|
|
|
:meta
|
|
|
|
:parse-gemini-file
|
2020-06-22 13:58:04 +02:00
|
|
|
:absolutize-link
|
2020-12-17 13:56:07 +01:00
|
|
|
:make-gemini-iri
|
2020-06-19 11:40:20 +02:00
|
|
|
:sexp->links
|
2020-07-08 18:34:48 +02:00
|
|
|
:gemini-page-theme
|
|
|
|
:link-prefix-gemini
|
|
|
|
:link-prefix-other
|
2022-07-13 17:08:37 +02:00
|
|
|
:link-prefix-http
|
2020-07-08 18:34:48 +02:00
|
|
|
:h1-prefix
|
|
|
|
:h2-prefix
|
|
|
|
:h3-prefix
|
|
|
|
:quote-prefix
|
|
|
|
:bullet-prefix
|
2021-11-06 11:26:20 +01:00
|
|
|
:source-line
|
2021-11-06 11:21:15 +01:00
|
|
|
:source-line-id
|
|
|
|
:artificialp
|
|
|
|
:artificial
|
2021-04-13 17:01:55 +02:00
|
|
|
:with-lines
|
2021-09-03 14:09:16 +02:00
|
|
|
:with-pre-group-id
|
|
|
|
:pre-group-id
|
2021-04-05 12:01:30 +02:00
|
|
|
:pre-start
|
|
|
|
:value
|
2021-04-08 16:32:34 +02:00
|
|
|
:pre-line
|
|
|
|
:group-id
|
|
|
|
:lines
|
|
|
|
:alt-text
|
2021-04-05 14:47:57 +02:00
|
|
|
:pre-end
|
|
|
|
:quoted-lines
|
|
|
|
:lines
|
2021-04-10 13:52:56 +02:00
|
|
|
:vertical-space
|
2021-04-13 17:01:55 +02:00
|
|
|
:header-line
|
|
|
|
:level
|
2021-04-13 17:29:25 +02:00
|
|
|
:unordered-list-line
|
|
|
|
:link-line
|
2021-07-17 12:13:04 +02:00
|
|
|
:link-text
|
2021-09-04 14:17:25 +02:00
|
|
|
:simple-line
|
|
|
|
:text-line
|
2022-12-30 15:03:59 +01:00
|
|
|
:add-metadata-to-parsed-gemini-lines
|
2021-04-05 12:01:30 +02:00
|
|
|
:sexp->text-rows
|
2020-06-28 12:36:59 +02:00
|
|
|
:parse-gemini-response-header
|
2021-08-16 14:22:47 +02:00
|
|
|
:gemini-iri-p
|
2021-11-05 11:13:05 +01:00
|
|
|
:gemini-first-h1
|
|
|
|
:with-initialized-parser))
|
2020-06-19 11:40:20 +02:00
|
|
|
|
|
|
|
(defpackage :gemini-client
|
|
|
|
(:use
|
|
|
|
:cl
|
|
|
|
:alexandria
|
|
|
|
:cl-ppcre
|
|
|
|
:esrap
|
|
|
|
:config
|
|
|
|
:constants
|
|
|
|
:text-utils
|
|
|
|
:misc
|
|
|
|
:alexandria
|
2020-06-22 13:58:04 +02:00
|
|
|
:gemini-constants
|
2020-06-19 11:40:20 +02:00
|
|
|
:gemini-parser)
|
|
|
|
(:shadowing-import-from :misc :random-elt :shuffle)
|
|
|
|
(:export
|
2020-06-22 13:58:04 +02:00
|
|
|
:+gemini-default-port+
|
2020-07-26 12:04:46 +02:00
|
|
|
:response-status-code
|
|
|
|
:code
|
|
|
|
:description
|
|
|
|
:find-code-description
|
|
|
|
:find-code-class
|
2022-12-28 13:57:15 +01:00
|
|
|
:+input+
|
|
|
|
:+sensitive-input+
|
|
|
|
:+success+
|
|
|
|
:+redirect-temporary+
|
|
|
|
:+redirect-permanent+
|
|
|
|
:+temporary-failure+
|
|
|
|
:+server-unavailable+
|
|
|
|
:+cgi-error+
|
|
|
|
:+proxy-error+
|
|
|
|
:+slow-down+
|
|
|
|
:+permanent-failure+
|
|
|
|
:+not-found+
|
|
|
|
:+gone+
|
|
|
|
:+proxy-request-refused+
|
|
|
|
:+bad-request+
|
|
|
|
:+client-certificate-required+
|
|
|
|
:+certificate-not-authorised+
|
|
|
|
:+certificate-not-valid+
|
2020-07-26 13:29:24 +02:00
|
|
|
:mime-gemini-p
|
2021-04-01 17:08:42 +02:00
|
|
|
:mime-text-stream
|
2023-02-25 11:41:01 +01:00
|
|
|
:header-success-p
|
|
|
|
:header-redirect-p
|
|
|
|
:header-temporary-failure-p
|
|
|
|
:header-permanent-failure-p
|
|
|
|
:header-certificate-failure-p
|
|
|
|
:header-certificate-requested-p
|
2023-03-12 12:35:01 +01:00
|
|
|
:header-input-request-p
|
2023-02-25 11:41:01 +01:00
|
|
|
:header-input-p
|
|
|
|
:header-sensitive-input-p
|
2020-06-19 11:40:20 +02:00
|
|
|
:gemini-protocol-error
|
|
|
|
:error-code
|
|
|
|
:error-description
|
2020-06-23 11:47:21 +02:00
|
|
|
:gemini-tofu-error
|
2021-01-28 15:35:26 +01:00
|
|
|
:*gemini-page-theme*
|
2020-07-26 12:04:46 +02:00
|
|
|
:make-gemini-file-response
|
2020-06-23 11:47:21 +02:00
|
|
|
:host
|
2020-10-11 18:22:07 +02:00
|
|
|
:response-certificate-requested-p
|
2020-06-22 13:58:04 +02:00
|
|
|
:response-input-p
|
|
|
|
:response-sensitive-input-p
|
|
|
|
:response-redirect-p
|
2021-01-08 18:21:43 +01:00
|
|
|
:response-success-p
|
2021-03-27 09:19:13 +01:00
|
|
|
:absolute-gemini-url-p
|
2023-07-07 14:45:05 +02:00
|
|
|
:absolute-titan-url-p
|
|
|
|
:absolute-gemini-or-titan-url-p
|
2020-07-08 18:34:48 +02:00
|
|
|
:init-default-gemini-theme
|
2020-07-15 12:40:30 +02:00
|
|
|
:gemini-file-response
|
|
|
|
:status-code
|
|
|
|
:status-code-message
|
|
|
|
:meta
|
|
|
|
:parsed-file
|
2020-07-26 12:04:46 +02:00
|
|
|
:url-header
|
2020-07-15 12:40:30 +02:00
|
|
|
:source-url
|
|
|
|
:source
|
|
|
|
:links
|
2020-07-26 12:04:46 +02:00
|
|
|
:text-rendering-theme
|
2020-07-15 12:40:30 +02:00
|
|
|
:gemini-file-response-p
|
2021-02-06 15:49:09 +01:00
|
|
|
:displace-iri
|
2020-07-26 12:04:46 +02:00
|
|
|
:close-ssl-socket
|
2020-10-11 18:22:07 +02:00
|
|
|
:make-client-certificate
|
2021-02-06 15:49:09 +01:00
|
|
|
:debug-gemini
|
2022-01-09 14:47:22 +01:00
|
|
|
:open-tls-socket
|
2021-01-23 16:25:37 +01:00
|
|
|
:request
|
2023-08-04 13:58:57 +02:00
|
|
|
:make-titan-parameters
|
|
|
|
:parse-titan-parameters
|
2023-07-07 14:45:05 +02:00
|
|
|
:titan-request
|
2021-01-23 16:25:37 +01:00
|
|
|
:gemini-file-stream-p
|
2021-04-01 17:08:42 +02:00
|
|
|
:text-file-stream-p
|
2021-02-06 15:49:09 +01:00
|
|
|
:request-dispatch
|
|
|
|
:with-request-dispatch-table
|
2021-01-23 16:25:37 +01:00
|
|
|
:fetch-cached-certificate
|
2021-01-28 15:35:26 +01:00
|
|
|
:build-redirect-iri
|
2021-06-18 17:48:56 +02:00
|
|
|
:slurp-gemini-url))
|
2021-01-08 18:21:43 +01:00
|
|
|
|
2024-02-10 14:36:01 +01:00
|
|
|
(defpackage :gemini-dummy-server
|
|
|
|
(:use
|
|
|
|
:cl
|
|
|
|
:text-utils
|
|
|
|
:misc
|
|
|
|
:gemini-constants
|
|
|
|
:gemini-client)
|
|
|
|
(:local-nicknames (:a :alexandria))
|
|
|
|
(:export
|
|
|
|
:start))
|
|
|
|
|
2021-01-08 18:21:43 +01:00
|
|
|
(defpackage :gemini-subscription
|
|
|
|
(:use
|
|
|
|
:cl
|
|
|
|
:alexandria
|
|
|
|
:cl-ppcre
|
|
|
|
:config
|
|
|
|
:constants
|
|
|
|
:text-utils
|
|
|
|
:misc
|
|
|
|
:alexandria
|
|
|
|
:gemini-constants
|
|
|
|
:gemini-parser
|
|
|
|
:gemini-client)
|
|
|
|
(:shadowing-import-from :misc :random-elt :shuffle)
|
|
|
|
(:export
|
2021-01-09 11:01:10 +01:00
|
|
|
:subscribe
|
2023-06-18 14:48:40 +02:00
|
|
|
:refresh-subscription-low-level
|
2021-01-09 11:01:10 +01:00
|
|
|
:refresh))
|