diff options
author | Nguyễn Gia Phong <cnx@loang.net> | 2025-06-16 15:28:30 +0900 |
---|---|---|
committer | Nguyễn Gia Phong <cnx@loang.net> | 2025-06-16 15:28:30 +0900 |
commit | 58ad9b49dfc393c41f86fda4632da1c934b062f4 (patch) | |
tree | 31c61cb6e48f2c207649ea866eac2cd31149ea7e /src | |
parent | c3d356c8b80659468a0a7429636a128c156509ae (diff) | |
download | scadere-58ad9b49dfc393c41f86fda4632da1c934b062f4.tar.gz |
Add option for feed title
Diffstat (limited to 'src')
-rw-r--r-- | src/scadere/listen.py | 15 |
1 files changed, 10 insertions, 5 deletions
diff --git a/src/scadere/listen.py b/src/scadere/listen.py index 2888524..28e30d7 100644 --- a/src/scadere/listen.py +++ b/src/scadere/listen.py @@ -244,7 +244,7 @@ async def write_xml(writer, http_version, application, func, *args): await writer.drain() -async def handle(certs, base_url, reader, writer): +async def handle(certs, base_url, reader, writer, title=None): """Handle HTTP request.""" try: try: @@ -278,6 +278,8 @@ async def handle(certs, base_url, reader, writer): assert len(lookup) == len(summaries) url_parts = urlsplit(urljoin(base_url, url.strip().decode())) domains = tuple(parse_qs(url_parts.query).get('domain', [])) + if title is None: + title = certs.name except Exception: # pragma: no cover await describe_status(writer, HTTPStatus.INTERNAL_SERVER_ERROR, http_version) @@ -285,7 +287,7 @@ async def handle(certs, base_url, reader, writer): if url_parts.path == urlsplit(base_url).path: # Atom feed await write_xml(writer, http_version, 'atom', unparsed_feed, - base_url, certs.name, mtime, summaries, domains) + base_url, title, mtime, summaries, domains) elif url_parts.path in lookup: # accessible Atom entry's link/ID await write_xml(writer, http_version, 'xhtml', unparsed_page, lookup.get(url_parts.path)) @@ -298,9 +300,10 @@ async def handle(certs, base_url, reader, writer): await writer.wait_closed() -async def listen(certs, base_url, host, port): # pragma: no cover +async def listen(certs, title, base_url, host, port): # pragma: no cover """Serve HTTP server for TLS certificate expirations' Atom feed.""" - server = await start_server(partial(handle, certs, base_url), host, port) + server = await start_server(partial(handle, certs, base_url, title=title), + host, port) async with server: print('Serving on', end=' ') print(*(socket.getsockname() for socket in server.sockets), sep=', ') @@ -338,13 +341,15 @@ def main(prog='scadere-listen', arguments=argv[1:]): formatter_class=GNUHelpFormatter) parser.add_argument('-v', '--version', action='version', version=f'%(prog)s {__version__}') + parser.add_argument('-t', '--title', help='title of Atom feeds') parser.add_argument('certs', metavar='PATH', type=Path) parser.add_argument('base_url', metavar='URL', type=with_trailing_slash) parser.add_argument('netloc', metavar='[HOST][:PORT]', nargs='?', type=NetLoc(None), default=('localhost', None)) args = parser.parse_args(arguments) - run(listen(args.certs, args.base_url, *args.netloc)) # pragma: no cover + run(listen(args.certs, args.title, + args.base_url, *args.netloc)) # pragma: no cover if __name__ == '__main__': # pragma: no cover |