1
0
Fork 0
Commit Graph

122 Commits

Author SHA1 Message Date
cage fa10de925e - [gemini] ensured we have not to wait a stream is completed before opening a new one. 2021-06-17 19:41:03 +02:00
cage b5b1611a7e - fixed spacing. 2021-06-17 15:23:24 +02:00
cage 63f214c8b3 - [gemini] ensured cached text file are opened with tinmop or user defined programs. 2021-05-18 19:50:50 +02:00
cage 3b30cbd091 - [gemini] refresh TOC when rendering a cached gemini file. 2021-05-18 19:38:49 +02:00
cage 76a11da2fc - [gemini] fixed regression opening gemini link is possible again;
- prevented hiding of notifications by the gemini TOC window.
2021-05-16 16:19:14 +02:00
cage 6ecc3fc5a0 - [gemini] ensured TOC is rendered only for rendering stream. 2021-05-16 15:38:26 +02:00
cage 8423ca7d38 - [gemini] fixed parser, made many parser state variables from
function local to thread local;
- fixed 'line-oriented-widget:append-new-rows';  uses slots  instead of
  accessors  as, for  example, message  window skips  invisible lines
  when specialzed (on message-window) method 'rows' is called.
2021-05-16 15:23:55 +02:00
cage 4a6e2fca3d - added a generated TOC for gemini files. 2021-05-16 15:23:55 +02:00
cage 29c09553d1 -[gemini] removed loop when going back in history.
when follownig  a redirect  both the original  (the redirect)  and the
actual URI was saved in the history.   So if an user, after followed a
redirect, tried to go back would reach the same redirect, this generated
a loop.
2021-04-28 20:56:37 +02:00
cage 540dea6825 - [gemini] ensured tail call when downloading a non-text file. 2021-04-10 19:15:06 +02:00
cage 6786d48f6d - rewritten rendering of text in message window
i got rid of slot support-text in message-window, so that class does
  not maintain a state.

- changed behaivour of split-line
  (split-line (format nil "~2%")) ; => ("" "")

  That is an emtpy line is returned as empty string and not skipped
  Thanks to people from IRC and cl-ppcre maintainer for help!

- [breaking changes] changed 'hooks:*before-prepare-for-rendering-message*
  with 'hooks:*before-rendering-message-text*.
2021-04-10 13:52:56 +02:00
cage ca2ace2551 - discouraged use of slot 'rows' for 'row-oriented-widget', used API instead. 2021-04-08 15:13:31 +02:00
cage 9572f2a917 - changed 'source-text' to 'support-text'. 2021-04-05 17:33:16 +02:00
cage f1c8ec0ec1 - fixed crash when 'contains-clsr' is called
This function called cl-ppcre:create-scanner  but if the argument to
  this function can not be interpreted  as a valid regex (e.g "["), an
  error is signalled.

  This error is now captured and the string passed to 'create-scanner'
  is used as a mere sequence not a regular expression.

- [gemini] fixed bug that prevented a page to be reloaded;
- [gemini] use cache, if possible, when opening a gemini url.
2021-04-03 11:14:58 +02:00
cage 61c39b6c62 - moved to an internal wrapping of 'mkstemp' to allow extensions in filename;
- [gemini] rendering all stream with MIME type "text/*" with this program.
2021-04-01 17:08:42 +02:00
cage 9dd77c549d - [gemini] allowed going back in history also when exploring a local filesystem. 2021-03-27 10:59:10 +01:00
cage 16c131e952 - used 'load-gemini-url', when possible, to avoid duplication. 2021-03-27 09:33:55 +01:00
cage db34a2f958 - [gemini] added feature: loading local gemini files from command line (switch: '-o'). 2021-03-27 09:19:13 +01:00
cage 0c2398c184 - fixed hex digit parsing from iri parser;
- added more debugging messages;

- fixed formatting.
2021-03-15 19:28:07 +01:00
cage b73f982408 - reverted method of rendering of text in message window to a
line-based one.

The old method that packed text got from gemini stream in single event
was ugly and blocked the UI.

This version  revert to a line  by line rendering but  it is optimized
and does not gets slow with the size of the text the window holds.
2021-03-09 11:32:09 +01:00
cage 8230056152 - [gemini] made fetching of favicon opt-in
by default tinmop  will not fetch favicon.txt  anymore, this feature
  must be enabled by user using a configuration directive.
2021-02-21 12:23:01 +01:00
cage ae82420cfe - [gemini] in gemini-client:request-dispatch signal a condition
('not-implemented-error') instead  of doing nothing when  a response
  in not handled (i.e. no function for that response type exists).
2021-02-09 19:32:48 +01:00
cage 4f4a3f4476 - [gemini] ensured 'gemini-viewer:request' respects the 'enqueue'
argument when making recursive call to itself.
2021-02-07 13:50:52 +01:00
cage dc9e23e3c0 - [gemini] rewritten gemini-viewer:request using gemini-client:request-dispatch machinery;
hopefully this should made the function easier to read (by human) and extend.
2021-02-07 13:50:52 +01:00
cage 08c803bfba - replaced local function 'fetch-cached-certificate' with a global one. 2021-02-07 13:50:52 +01:00
cage e32358c6d5 - replaced local function with a global one. 2021-02-07 13:50:52 +01:00
cage 6a1ea415f7 - [gemini]
- added some messages to debug protocol;
  - asking  for query  event  got minimum  priority  to prevent  being
    hidden  by informational  messages on  the command  line (e.g  the
    message that  inform the  user that  the client  is going  back in
    history);
  - always stream contents that are repsonses to a query;
  - added      gemini-client:request-dispatch       and      rewritten
    gemini-client:slurp-gemini-url based on the former.
2021-02-07 13:50:40 +01:00
cage 1c6defddf1 - fixed indentation of 'gemini-viewer:request'. 2021-02-02 20:58:23 +01:00
cage d0a9b6583a - [gemini] encoded the input string before making the request. 2021-02-02 20:57:30 +01:00
cage 17401274b5 - [gemini] added support for favicon.txt
the       implementation       more       or       less       follow
  gemini://mozz.us/files/rfc_gemini_favicon.gmi but it does render the
  first  character  of   the  file  instead  of   checking  for  emoji
  characters.
2021-01-28 15:35:26 +01:00
cage ecec01f285 - [gemini] made slurp-gemini-url works with redirect;
- [gemini] made some refactoring for building redirect IRIs.
2021-01-23 16:25:37 +01:00
cage 848ed6a043 - [gemini] fixed test for checking valid cached value for
certificate/key pair.

  The function  to find a  cached certificate/key  or create a  new pair
  retuns a multiple value.

  I was using multiple-value-list  for getting the pairs certificate/key
  from   said  functions.    Then  i   was  checking   the  results   of
  'multiple-value-list' for null values to get the non correct pair, but
  that expression never return nil (was returning '(nil) instead).

  This was breaking the client autentication.
2021-01-17 19:13:33 +01:00
cage edd1aba2fe -[gemini] added urls to history if document is loaded from cached content too. 2021-01-03 11:28:54 +01:00
cage 94a8e29f84 - [gemini] added a command to refresh a page;
- refactoring some code to add the above command.
2020-12-29 12:36:22 +01:00
cage 9fd958d12b - fixed IRI and URI parser;
- taken into account fragment of IRI;
- added more IRI and URI test;
- passes all the client tests.
2020-12-25 18:23:32 +01:00
cage c9d9559f1a - changed 'uri' to 'iri' where does makes sense to me. 2020-12-17 13:56:07 +01:00
cage bafa0c596b - [gemini] fixed bugs that prevented the same IRI to be opened multiple-time. 2020-12-17 13:12:16 +01:00
cage 2138021412 - [gemini] switched from URI to IRI;
- fixed wrong slot symbol.
2020-12-14 13:58:28 +01:00
cage 62394d319a - removed 'uri-' prefix from 'uri' slots names. 2020-12-13 15:29:04 +01:00
cage 1c1c94a56a - [gemini] prevent overwriting of TOFU warning by other messages. 2020-11-01 18:01:32 +01:00
cage 664e8212ce - replaced quri with an internal parser;
- [gemini] the client passes the torture test again;

- fixed event test.
2020-10-25 19:58:05 +01:00
cage 1ef820062a - removed debug code. 2020-10-24 14:23:13 +02:00
cage 9adf79a65b - [gemini] fixed a regression, display again source of a gemini file. 2020-10-24 14:22:09 +02:00
cage a8b5524fcb - [gemini] use named parameter in recursive requests. 2020-10-24 14:05:27 +02:00
cage 269a08718c - [gemini] implemented a draft of a client authentication (via TLS certificates). 2020-10-23 20:57:17 +02:00
cage 497efa6a92 - [gemini] starting using certificates;
- removed hardcoded 'xdg-open' binary name.
2020-10-11 18:22:07 +02:00
cage 911c80dc25 - [gemini] remove a bottleneck when download of a gemini page is completed;
Instead  of process  multiple event  with  a single  line to  render
  compact all the lines in a single event and, then, process it.
2020-10-06 19:15:23 +02:00
cage 02ce8fd187 - [gemini] remove all pending rendering events when quitting. 2020-09-30 18:24:58 +02:00
cage d08f4a67d1 - [gemini] fixed command: back in history. 2020-09-12 14:35:54 +02:00
cage 0cfdb8844e - [gemini] ensure just a single gemini file is in rendering state at
the same time;
- [gemini] add  a newline to  data before  parsing a gemini  file only
  when needed (thre is no one at the end);
- commented and improved some regular expressions for coloring.
2020-09-12 10:23:26 +02:00
cage f6744dad4a - [gemini] clear the streams window before redrawing when refreshing the window's contents. 2020-09-11 15:40:25 +02:00
cage c5118d46a6 - changed GPL comment headers. 2020-09-06 11:32:08 +02:00
cage 75d81ec708 - chats can be fetched, via UI, and printed on window. 2020-09-05 17:02:00 +02:00
cage f7d025ea2a - [gemini] added a window to manage all the gemini streams opened. 2020-08-30 15:38:05 +02:00
cage 1c3a3d9bff - [gemini] starting download thread in ':rendering' status. 2020-08-29 11:13:29 +02:00
cage 4941c21d94 - [gemini] added slot 'status-stream'.
This will allow to enqueue multiple documents download.
2020-08-29 10:53:52 +02:00
cage 0bb4406be7 - [gemini] wrapped non gemini files download's thread.
Also added a few of useful slotslike temporary file path and number of
  bytes downloaded so far.
2020-08-28 17:20:44 +02:00
cage 8ae83a2323 - added 'gemini-stream' class.
Starting  wrapping  streaming  of   gemini's  data  using  hi  level
  structures  (this way  we can  associate a  for aecha  stream), this
  could be useful to let the user start or stop the stream or open the
  data downloaded so far.
2020-08-27 17:51:40 +02:00
cage 7c7d02498a - [gemini] allowed secret input. 2020-08-18 19:14:33 +02:00
cage bc171fb14a - [gemini] added the possibility to abort current page download. 2020-07-26 16:34:05 +02:00
cage 1eeed9538e - [gemini] download of non gemini documents happens in a concurrent
way (in a different thread)
- [gemini] prevent links to be appended even when user is opening a new document;
- [gemini] added a notification when download of a gemini document has terminated.
2020-07-26 13:29:24 +02:00
cage 254cd94720 - [gemini] the parser has been modified to renders (in a separate
thread) the contents of a gemini  file parsed so far without waiting
  for the whole document to be read from the socket.

  This  feature should  prevent blocking  the client  when the  server
  never close the socket (i.e. for streamed contents).
2020-07-26 12:07:26 +02:00
cage 98d6021f7a - fixed information string. 2020-07-15 12:41:27 +02:00
cage fb0fd48865 - [gemini] added the option to view gemini page's source. 2020-07-15 12:40:30 +02:00
cage 49214475ab - [gemini]
- using quri instead of puri library because the first has a better handling
    of UTF-8;
  - using binary stream instead of ASCII.
2020-07-04 11:15:55 +02:00
cage 1f3ed228a3 - [gemini viewer] fixed history navigation. 2020-06-29 12:29:11 +02:00
cage ab4b871ef5 - [gemini browser] added a 'go-back' command. 2020-06-28 17:39:21 +02:00
cage 62d3356e78 - made the program asks for redirects following only when the event
queue is empty;
- added 'gemini-request-event';
- minor refactoring.
2020-06-27 22:50:46 +02:00
cage a69bc4f6cb - used 'notify' instead of error message. 2020-06-23 13:13:59 +02:00
cage a683c2aecd - changed function name: 'temporary-filename' to 'temporary-file'. 2020-06-23 13:12:35 +02:00
cage cf7a19dd04 - allowed the user to bypas TOFU exception;
- fixed TOFU check.
2020-06-23 11:47:21 +02:00
cage 9461c0ea70 - gemini client works (but missing client authorization using certificates). 2020-06-22 14:03:06 +02:00