feat(dav): oo dav upload (локальный файл) + ensure-path (mkdir -p) (#80) #81

Merged
eSlider merged 1 commits from feat/dav-upload#80 into main 2026-09-25 15:08:36 +01:00
Owner

Что

  • oo dav ensure-path PATH [--under FOLDER_ID] — resolve-or-create вложенных папок Documents, идемпотентно (повторный вызов возвращает тот же id), печатает итоговый folder id. Корень по умолчанию — My documents (разрешается из @root, rootFolderType=5; fallback по заголовку).
  • oo dav upload DEST_FOLDER_ID LOCAL_FILE... [--replace] — загрузка локальных файлов (multipart) в папку. --replace (default true) = upsert по stem|ext через UploadToFolderReplacing; --replace=false = fail по конфликту через AssertNoFileConflict.\n\nНовых HTTP-путей нет — только обёртки над существующим клиентом (FileStore + UploadToFolderReplacing/UploadToFolder). Поведение существующих dav-команд не изменено.

Использование

oo dav ensure-path "Banks/Caixa"          # → id
oo dav ensure-path "Banks/Caixa"          # → тот же id
oo dav upload <id> ./f.xlsx               # upsert
oo dav upload <id> ./f.xlsx --replace=false   # fail при конфликте

Тесты

  • Unit (fake store): cmd/oo/dav_test.go — ensure-path создаёт/переиспользует папки, идемпотентность, отказ на пустой/..; upload replace/no-replace; регистрация команд и флагов.
  • Integration (gated, //go:build integration): cmd/oo/dav_integration_test.go — live ensure-path дважды, upload, replace, no-replace конфликт; скипается без ONLYOFFICE_*.
  • go test -race ./..., go vet ./... — зелёно. gofmt -l по изменённым файлам чисто (pre-existing unformatted cmd/office/* не трогал).

Closes #80

## Что - `oo dav ensure-path PATH [--under FOLDER_ID]` — resolve-or-create вложенных папок Documents, идемпотентно (повторный вызов возвращает тот же id), печатает итоговый folder id. Корень по умолчанию — My documents (разрешается из `@root`, `rootFolderType=5`; fallback по заголовку). - `oo dav upload DEST_FOLDER_ID LOCAL_FILE... [--replace]` — загрузка локальных файлов (multipart) в папку. `--replace` (default true) = upsert по stem|ext через `UploadToFolderReplacing`; `--replace=false` = fail по конфликту через `AssertNoFileConflict`.\n\nНовых HTTP-путей нет — только обёртки над существующим клиентом (`FileStore` + `UploadToFolderReplacing`/`UploadToFolder`). Поведение существующих dav-команд не изменено. ## Использование ```bash oo dav ensure-path "Banks/Caixa" # → id oo dav ensure-path "Banks/Caixa" # → тот же id oo dav upload <id> ./f.xlsx # upsert oo dav upload <id> ./f.xlsx --replace=false # fail при конфликте ``` ## Тесты - Unit (fake store): `cmd/oo/dav_test.go` — ensure-path создаёт/переиспользует папки, идемпотентность, отказ на пустой/`..`; upload replace/no-replace; регистрация команд и флагов. - Integration (gated, `//go:build integration`): `cmd/oo/dav_integration_test.go` — live ensure-path дважды, upload, replace, no-replace конфликт; скипается без `ONLYOFFICE_*`. - `go test -race ./...`, `go vet ./...` — зелёно. `gofmt -l` по изменённым файлам чисто (pre-existing unformatted `cmd/office/*` не трогал). Closes #80
eSlider added 1 commit 2026-09-25 15:08:05 +01:00
feat(dav): oo dav upload (local file) + ensure-path (mkdir -p) in Documents (#80)
Release / GoReleaser (push) Skipped
Tests / Secret scan (gitleaks) (push) Skipped
Tests / Test (Go 1.25) (push) Skipped
Tests / Test (Go stable) (push) Skipped
Tests / Secret scan (gitleaks) (pull_request) Successful in 5s
Tests / Test (Go stable) (pull_request) Successful in 1m9s
Tests / Test (Go 1.25) (pull_request) Successful in 1m11s
55356558a1
eSlider merged commit 534661dec7 into main 2026-09-25 15:08:36 +01:00
eSlider deleted branch feat/dav-upload#80 2026-09-25 15:08:36 +01:00
Sign in to join this conversation.
No Reviewers
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: eSlider/go-onlyoffice#81