Skip to content

v0.17.0#139

Merged
flrdv merged 130 commits into
indigo-web:masterfrom
flrdv:master
Jun 14, 2025
Merged

v0.17.0#139
flrdv merged 130 commits into
indigo-web:masterfrom
flrdv:master

Conversation

@flrdv
Copy link
Copy Markdown
Member

@flrdv flrdv commented Jun 14, 2025

major internal restructuring.

  • Considerably improved HTTPS and multilistener capabilities
  • Added x-www-form-urlencoded and multipart/form-data support
  • Automatically validating request path when parsing headers, therefore removing any need to escape it before printing
  • Path parameters are now parsed directly, making them a bit more convenient to interact with
  • Renamed Request.Query to Request.Params
  • Renamed (former) Request.Params to Request.Vars
  • Renamed internal/keyvalue to kv, moved it into the project top
  • Extended encryption tokens enum
  • Extended the list of common mime types
  • Improved chunked encoding by adding support (discarding any, hehe) of chunk parameters, which otherwise would lead to error
  • Got rid of indigo-web/utils and indigo-web/iter dependencies

flrdv and others added 30 commits May 8, 2024 13:38
otherwise it always fails, meanwhile the reason is pretty dummy, and is the feature by itself
…t encoding (e.g. urlencoded + and & characters)
…while the actual implementation now provides a primitive functionality only
…reader, which reduced a lot the amount of code needed and overall complexity
flrdv and others added 29 commits June 3, 2025 20:41
this makes things a bit simpler and enables optimization with `io.WriterTo` in serializer when sending attachments
renamed URL to URI as it is more correct. Removed Body.MaxChunkSize as non-relevant. Removed Query and moved its contents into URI. Removed Body.DecodingBufferSize
the Retriever interface is now Fetcher with Fetch() method instead of previous Retrieve(). The reason is that "to fetch" sounds more naturally and better-suited for the usecase.
indigo-web/utils/uf was replaced by flrdv/uf. Other subpackages were interned directly (if were used at all); chunked body parser was completely rewritten. The reason is due to rapid development (as the project is still under the v1.0.0 version) it is sometimes a pain in the ass updating utils, committing, pushing updates, releasing & only then upgrading it in indigo itself. Another reason was a consideration that packages contained there aren't that much essential and generic. Moreover, most part of them isn't relevant anymore (e.g. constraint) or unused (e.g. mapconv)
this produces less visual garbage and less unnecessary files.
even though fetcher was on purpose distinct from transport.Client.Read() method, in tests is it often easier and more adequate solution to simply reuse the dummy circular client.
now the request path is validated by the parser, thereby the path is guaranteed to include no non-printable characters, making it safe-to-print by default.
as kv was moved to project top, it's accessible by the user directly now. Query isn't needed anymore as the parser parses it by itself directly. Path utilities are also not needed anymore, as it existed only because of lack of parser's request path validation. Now it validates.
we cannot detect at the moment, whether the read error was actually a timeout error. Well, it's possible, however errors generated by net package are composed and honestly pretty much idiotic. Other removed errors are simply not used anymore or just duplicate some already existing ones.
…with errors occurred during parsing the protocol version
…nal naming, minor tweaks

now request path is validated, thereby providing guarantees to not contain any non-printable ascii characters. Request parameters are parsed in-place, thereby abolishing the old "lazy" approach, which was only inconvenient and generally smelled. Updated the signature, removing the need to check  the parser against its state.
@flrdv flrdv merged commit b4c8dad into indigo-web:master Jun 14, 2025
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant