iodine 0.8.2 → 0.8.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG.md +12 -0
- data/ext/iodine/fio-stl.h +6101 -3276
- data/ext/iodine/fio-stl.md +5155 -3213
- data/ext/iodine/iodine.c +1 -0
- data/ext/iodine/iodine.h +9 -4
- data/ext/iodine/iodine_connection.h +20 -1
- data/ext/iodine/iodine_json.h +469 -160
- data/ext/iodine/iodine_params.h +1362 -0
- data/lib/iodine/documentation.rb +121 -0
- data/lib/iodine/version.rb +2 -1
- metadata +3 -2
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 3302d0502e4bdfbd9ec6424ce93452a4d5eb5fe1bbe9c590ef961cf5f64c9f31
|
|
4
|
+
data.tar.gz: be5fbd8b1f1da34e21980e4ee02f413115a7517c3b206f116ced895491b479aa
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: b41b9da11d0e6d590e775d6ad20c092ae74d3c8ebffa8f389464d7296eaf7f959e3eca5ec58126a9e3a35edaf60082ed2815c9f06c2ffec744a07f76883c9c8a
|
|
7
|
+
data.tar.gz: 9571ae2f6a068cfe46a0d53a91cba562116c43a738079ce15f836f582b6e2fea395a65c573f46201c16ec5789d23933929e30392a0854e8dacf75fcd68e37869
|
data/CHANGELOG.md
CHANGED
|
@@ -7,6 +7,18 @@ Please refer to the current gem version to review the relevant changes for your
|
|
|
7
7
|
|
|
8
8
|
## Changes
|
|
9
9
|
|
|
10
|
+
#### 0.8.3 - unreleased
|
|
11
|
+
|
|
12
|
+
[facil.io C STL](https://github.com/facil-io/cstl) updates:
|
|
13
|
+
|
|
14
|
+
**API**: (`http`) the HTTP params helpers now follow the NeoRack `params` extension, including its conflict-resolution rules: `fio_http_query_parse` parses the query string, `fio_http_body_parse` parses URL-encoded, multipart and JSON bodies, and `fio_http_params_parse` parses the query and then the body into a single map. Query and form names use dot / bracket paths (`a.b`, `a[b]`, terminal `[]`), repeated scalars become Arrays in arrival order, maps merge, and scalar/map conflicts nest the scalar under the empty-string key. Multipart file uploads stream in chunks and fields are limited by the new `fio_http_settings_s.max_params` (default `FIO_HTTP_PARAMS_MAX_FIELDS`, 4096).
|
|
15
|
+
|
|
16
|
+
**API**: (`fiobj`) `FIOBJ_T_DATA` objects now carry upload metadata: `fiobj_data_filename`, `fiobj_data_type` and `fiobj_data_headers` (and their setters). `fio_http_params2FIOBJ` returns the request params as a FIOBJ Hash, with file uploads stored as Data objects.
|
|
17
|
+
|
|
18
|
+
**API**: (`json`) the JSON parser callback contract was reworked to support conflict resolution: containers are placed in their parent when opened (`on_map` / `on_array` receive a borrowed `fio_buf_info_s` key and may report a replaced value through `void **old`), `map_push` receives a borrowed key, and the new `is_map` / `is_array` callbacks support `fio_json_parse_update` and the conflict-resolution helpers. `Iodine::JSON` keeps last-wins semantics, matching the FIOBJ parser.
|
|
19
|
+
|
|
20
|
+
**Feature**: (`http`) the NeoRack `params` extension (version 0.0.1) is now implemented: `Iodine::Connection#params` returns a memoized parameter Hash merging the URL query string and the request body (URL-encoded, multipart, and JSON bodies including `application/*+json` media types), with bracket / dot path nesting, Array creation for repeated scalars and `[]`, and conflict resolution. `#query2params` and `#body2params` parse a single source each (query-first precedence). Multipart file uploads are exposed as `Iodine::Base::Upload` objects (an internal class): readable binary streams (`read`, `rewind`, `size`, `save`, `close`, `closed?`) with `filename`, `type`, `name` and `headers` metadata readers and Rack-style `[]` access (`upload[:tempfile]` returns the upload). Uploads close automatically at request end and when garbage collected. Parser resource limits raise a `RangeError` (iodine convention: native Ruby errors only). Iodine extensions now report `params: "0.0.1"`.
|
|
21
|
+
|
|
10
22
|
#### 0.8.2 - 2026-10-22
|
|
11
23
|
|
|
12
24
|
[facil.io C STL](https://github.com/facil-io/cstl) updates:
|