Implement Phase 9: client libraries (Go, Rust, Lisp, Python)
- clients/README.md: canonical API surface and error type reference - clients/testdata/: shared JSON response fixtures - clients/go/: mciasgoclient package; net/http + TLS 1.2+; sync.RWMutex token state; DisallowUnknownFields on all decoders; 25 tests pass - clients/rust/: async mcias-client crate; reqwest+rustls (no OpenSSL); thiserror MciasError enum; Arc<RwLock> token state; 22+1 tests pass; cargo clippy -D warnings clean - clients/lisp/: ASDF mcias-client; dexador HTTP, yason JSON; mcias-error condition hierarchy; Hunchentoot mock-dispatcher; 37 fiveam checks pass on SBCL 2.6.1; yason boolean normalisation in validate-token - clients/python/: mcias_client package (Python 3.11+); httpx sync; py.typed; dataclasses; 32 pytest tests; mypy --strict + ruff clean - test/mock/mockserver.go: in-memory mock server for Go client tests - ARCHITECTURE.md §19: updated per-language notes to match implementation - PROGRESS.md: Phase 9 marked complete - .gitignore: exclude clients/rust/target/, python .venv, .pytest_cache, .fasl files Security: token never logged or exposed in error messages in any library; TLS enforced in all four languages; token stored under lock/mutex/RwLock
This commit is contained in:
Binary file not shown.
@@ -0,0 +1 @@
|
||||
This file has an mtime of when this was started.
|
||||
@@ -0,0 +1 @@
|
||||
b0dbf0375cd578c9
|
||||
@@ -0,0 +1 @@
|
||||
{"rustc":16243257175721966122,"features":"[\"follow-redirect\", \"futures-util\", \"iri-string\", \"tower\"]","declared_features":"[\"add-extension\", \"async-compression\", \"auth\", \"base64\", \"catch-panic\", \"compression-br\", \"compression-deflate\", \"compression-full\", \"compression-gzip\", \"compression-zstd\", \"cors\", \"decompression-br\", \"decompression-deflate\", \"decompression-full\", \"decompression-gzip\", \"decompression-zstd\", \"default\", \"follow-redirect\", \"fs\", \"full\", \"futures-core\", \"futures-util\", \"httpdate\", \"iri-string\", \"limit\", \"map-request-body\", \"map-response-body\", \"metrics\", \"mime\", \"mime_guess\", \"normalize-path\", \"percent-encoding\", \"propagate-header\", \"redirect\", \"request-id\", \"sensitive-headers\", \"set-header\", \"set-status\", \"timeout\", \"tokio\", \"tokio-util\", \"tower\", \"trace\", \"tracing\", \"util\", \"uuid\", \"validate-request\"]","target":17577061573142048237,"profile":5347358027863023418,"path":15508168764128974729,"deps":[[784494742817713399,"tower_service",false,12829417956076871532],[2251399859588827949,"pin_project_lite",false,15221541811940566033],[2620434475832828286,"http",false,9822450932427326627],[3632162862999675140,"tower",false,10066682175421352673],[3870702314125662939,"bytes",false,1322042245192246152],[5898568623609459682,"futures_util",false,17637614804480441737],[7712452662827335977,"tower_layer",false,4910726438236040360],[10678500899971835392,"iri_string",false,1618498501450924508],[14084095096285906100,"http_body",false,17374140038047555153],[16909888598953886583,"bitflags",false,331681428412248877]],"local":[{"CheckDepInfo":{"dep_info":"debug/.fingerprint/tower-http-9ff1c08c7e602266/dep-lib-tower_http","checksum":false}}],"rustflags":[],"config":2069994364910194474,"compile_kind":0}
|
||||
Reference in New Issue
Block a user