добавлен приём пакетов Health Auto Export

- POST /api/v1/ingest: токен, лимит тела, gzip, durable-запись тела в сырой
  архив, учёт доставки в SQLite
- код ответа отражает доставку, а не разбор: битый JSON — 400, непонятое
  содержимое — 200, данные уже сохранены и доразберутся позже
- сохраняется полный набор заголовков запроса с вычисткой секретов по имени
  и по совпадению значения с токеном
This commit is contained in:
av
2026-08-01 12:37:17 +03:00
parent 5e2385ba6e
commit 41f2f05f2f
20 changed files with 1903 additions and 0 deletions
+35
View File
@@ -0,0 +1,35 @@
// Package ident — единая точка генерации и разбора идентификаторов (ULID).
//
// ULID сортируется по времени создания, компактен в логах и URL (без дефисов)
// и глобально уникален across сущностей: поиск по голому id находит все
// упоминания. Канонический вид — нижний регистр.
package ident
import (
"errors"
"fmt"
"strings"
"github.com/oklog/ulid/v2"
)
// ErrInvalid — синтаксически некорректный идентификатор. Такой id трактуем
// как несуществующую сущность, без похода в БД.
var ErrInvalid = errors.New("некорректный идентификатор")
// NewID возвращает новый ULID в нижнем регистре.
func NewID() string {
return strings.ToLower(ulid.Make().String())
}
// Parse валидирует внешний идентификатор и приводит его к каноническому виду.
// Вызывается на входных границах (HTTP, CLI) до запроса к БД: сравнение строк
// в SQLite побайтовое, а base32 ULID при декодировании нечувствителен к
// регистру.
func Parse(s string) (string, error) {
id, err := ulid.ParseStrict(strings.ToUpper(strings.TrimSpace(s)))
if err != nil {
return "", fmt.Errorf("%w: %q", ErrInvalid, s)
}
return strings.ToLower(id.String()), nil
}