Commit Graph

233 Commits

Author SHA1 Message Date
Solderpunk 854369afad Add a 'user' command, analogous to 'root' but jumps to a pubnix user's capsule if the URL starts with ~username. 2023-11-26 12:36:49 +01:00
Solderpunk 0e9953882c Don't treat filename collisions as fatal. 2023-11-26 12:17:42 +01:00
Solderpunk e96d373eec Fix bug with default response to Y/N prompts. 2023-11-26 12:12:19 +01:00
Solderpunk 0e91b4f894 Rename the gus command to search, and the old search to filter. Add option to set search endpoint. 2023-11-25 16:16:54 +01:00
Solderpunk 0268cd426b Further splitting up and renaming of files.
Now that everything lives in src/av98/ as per the latest Python
fashion, it's a problem to have a file named  So split
it out into (which just implements the argument parsing)
and  The old has become
so that tab completion for is quick and easy.
2023-11-25 16:12:46 +01:00
Solderpunk 4b759aec70 Add --output command line option for use with --download. 2023-11-25 13:08:36 +01:00
Solderpunk 48c8fd9543 Get on board with modern Python packaging conventions.
Remember when we used to make fun of Java people for sticking
everything in a `src/` directory?
2023-11-22 11:20:05 +01:00
Solderpunk 188cacca1f Restore coloured debug output, like we had before the logging module was adopted. 2023-11-19 16:49:07 +01:00
Solderpunk b46b15905b Prepare to cut 1.1.0. 2023-11-19 16:26:48 +01:00
Solderpunk 3abf44d18c Make the new --download option play nicely with --tls_cert and --tls_key. 2023-11-19 16:23:36 +01:00
Solderpunk 203ffaea90 Replace VF-1's flight-themed sign off with AV-98 policing-themed sign off. 2023-11-19 15:25:29 +01:00
Solderpunk cbbc410976 Add curl/wget style --download option. 2023-11-19 15:24:26 +01:00
Solderpunk 305f7f9f2c Make do_quit() silent, move the farewell message to main(). 2023-11-19 14:40:26 +01:00
Solderpunk 4df88896a8 Ensure we drive a useable filename for saving items whose URL does not provide one. 2023-11-19 14:38:55 +01:00
Solderpunk c8c12cab86 Don't trigger a traceback in debug mode for 4x or 5x status codes. 2023-11-19 14:35:13 +01:00
Solderpunk a0eedac532 Include temporary buffer file name in debug output. 2023-11-19 14:34:29 +01:00
Solderpunk a459e49fa0 Extract titles from gemtext and use them as if that's missing. 2023-11-19 14:27:47 +01:00
Solderpunk 0a9846b342 Correctly report downloaded file size in debug messages.
Previously, the return value of fp.write() was used, however for
text files this counts the number of characters written, not the
number of bytes, and for non-ASCII content these differ.
2023-11-19 12:29:48 +01:00
Solderpunk 9970f21e47 Move a little more clutter from into 2023-11-19 10:41:08 +01:00
Solderpunk 73ce79310d Reuse a consistent function for getting Y/N type user input. 2023-11-19 10:20:54 +01:00
Solderpunk 03b90fcd5e Put config dir discovery/creation in own method, store computed filename of bookmarks. 2023-11-18 19:28:15 +01:00
Solderpunk 62972c0228 Restore cert prompt functionality. 2023-11-18 19:27:42 +01:00
Solderpunk 0393ae3ea3 Correctly track domains which a client cert has been sent to. 2023-11-18 17:15:17 +01:00
Solderpunk 2a70985176 General tidy-up of entire file.
Most a matter of rearranging the order of methods to flow
sensibly, as well writing or updating docstrings, getting rid of
old unused return values, and fixing a few very minor defects.
2023-11-18 15:59:36 +01:00
Solderpunk 247f01e3e7 Update bookmarks to reflect permanent redirects upon exiting. 2023-11-18 14:23:56 +01:00
Solderpunk de7e5dc254 Factor out client certificate management into its own class/file. 2023-11-18 14:22:32 +01:00
Solderpunk 607223c25a Get real persnickety about nice option/blackbox alignment. 2023-11-17 20:08:48 +01:00
Solderpunk a9b34278a8 Don't hardcode black box spacing values. 2023-11-17 19:59:12 +01:00
Solderpunk 4f354ab291 Nicely align setting names and values. 2023-11-17 19:56:47 +01:00
Solderpunk bd7c5c2110 Log network errors a little more carefully. 2023-11-17 19:44:06 +01:00
Solderpunk 71f8a3dc86 Gracefully handle requests for file:// URLs which point at a directory. 2023-11-16 19:18:30 +01:00
Solderpunk 0ce09f37a6 Gracefully handle requests for file:// URLs where the file does not exist. 2023-11-16 19:14:22 +01:00
Solderpunk 681b11b8a4 Include local file and cached resource handling inside nice try/except error printing. 2023-11-16 19:13:20 +01:00
Solderpunk 91ff51a0ef Fix subtle breakage on some certs, when ssl_dnsname_match throws a non-CertificateError exception. 2023-11-15 19:47:17 +01:00
Solderpunk 50c43c75b4 Provider progress animation when downloading files > 100 KiB. 2023-11-15 19:46:01 +01:00
Solderpunk f78b6ff780 Move handling of permanent redirects inside of _fetch_over_network(). 2023-11-15 19:45:36 +01:00
Solderpunk 9e2cce7ce0 Print full tracebacks from exceptions when debugging is enabled. 2023-11-15 19:38:45 +01:00
Solderpunk 23b0597b6d Update email address and copyright years. 2023-11-15 19:38:13 +01:00
Solderpunk 67729fb711 Count redirects in black box recorder. 2023-11-15 18:40:48 +01:00
Solderpunk 480f2cc15f Rejig how do_bookmark() handles an argument to simplify go_to_gi(). 2023-11-15 18:29:52 +01:00
Solderpunk d2fe381c3e Change Cache to use a TemporaryDirectory for its storage to
ensure and simplify thorough cleanups upon shutdown.

Thanks to Ghost for making me aware of this possibility!
2023-11-15 18:21:11 +01:00
Solderpunk 048b04bed2 Extensively refactor the way temporary files are used.
Instead of littering /tmp with one file per download plus one per
rendered gemtext file, just reuse the same two files over and
over.  If enabled, caching creates separate copies.

Pretty sure this solves Issue #35, but I'll test and close that
after also improving the use of cache files...
2023-11-15 18:06:33 +01:00
Solderpunk 713616d556 Refactor of networking logic.
1. Move client certificate handling stuff inside of _send_request().
2. Change _fetch_over_network() to not be recursive, by just looping
   through calls to _send_request().  This facilitates moving the
   redirect-tracking state inside _fetch_over_network(), instead of
   keeping it in GeminiClient.
3. Also allow _fetch_over_network() to save response to a provided
   filename, and use this to implement do_save(), rather than
   _go_to_gi().  This avoids the need for awkward gymnastics with
   the internal state.
2023-11-14 19:40:40 +01:00
Solderpunk 01da844141 Pull response parsing inside of _send_request(). 2023-11-14 08:56:39 +01:00
Solderpunk 7f1aa5cbf3 Remove unused imports. 2023-11-14 00:38:00 +01:00
Solderpunk 33e66b439b Test for saveability against a fetched GI, not a tempfile. 2023-11-14 00:36:43 +01:00
Solderpunk d689cbd04f Fix _get_active_tmpfile to handle local file GIs. 2023-11-14 00:35:47 +01:00
Solderpunk 3aedd549e5 Remove unecessary duplication of handling code between _handle_gemtext() and _go_to_gi(). 2023-11-14 00:33:48 +01:00
Solderpunk e4a44679dc Fix saving of local files. 2023-11-14 00:29:59 +01:00
Solderpunk 588d599cb4 Add actual support for reading local files, use it for bookmarks. 2023-11-14 00:15:32 +01:00