Фикс MoveFiles: fileops/move отдаёт envelope с массивом операций;
раньше putJSONObject разворачивал его и fileopsError падал на response missing "response" — теперь как MoveDavItems
(putJSON + fileopsError). Сигнатура не изменена.
Публичные сигнатуры files*.go сохранены.
Тесты
Unit (go test ./... зелёный): TestFileEntryToEntry, TestFileEntryToEntryNil, TestFileEntryToEntrySizeFormats, TestDavFileToEntry, TestDavFolderToEntry, TestEntriesFromFolderMap, TestEntriesFromFolderMapNil, TestKindString, TestClientFileStoreSelection — PASS.
Integration (go test -tags=integration, живой OO): TestIntegrationFileStores (subtests rest, dav) — PASS. Общий набор:
create folder / upload / list / stat / download / move / copy / rename / delete;
папки убираются. Учтена асинхронность fileops (опросс результата).
Проверка
go build ./... && go vet ./... && go test ./... — зелёные.
## F1 — каноническая модель + FileStore/Searcher; адаптеры REST и WebDAV
Closes #35.
### Что сделано
- `file_core.go` — `Kind` (`File`/`Folder`), `Entry`, `FileStore`,
`SearchQuery`, `SearchHit`, `Searcher`; доступ `c.FileStore(backend)` /
`c.Files()` (фасад — F4 #38).
- `file_rest.go` — `restStore` поверх `files.go`
(`ListFolder`/`GetFile`/`CreateFolder`/`UploadToFolder`/`DownloadFile`/
`MoveFiles`/`RenameFile`/`DeleteFiles`; `Copy` — через `CopyDavItems`, т.к. в
`files.go` копирования нет).
- `file_dav.go` — `davStore` поверх `files_webdav.go`
(`ListDavFolder`/`CreateDavFolder`/`UploadDavFile`/`DownloadDavFile`/
`MoveDavItems`/`CopyDavItems`/`RenameDavFile`/`RenameDavFolder`/`DeleteDavItems`).
Иды классифицируются (`Stat`) на папки/файлы для fileops.
- Конверсии (чистые): `FileEntryToEntry`, `DavFileToEntry`, `DavFolderToEntry`.
- Все вызовы — через `DoRetry` (`retryStoreOp`).
- Фикс `MoveFiles`: `fileops/move` отдаёт envelope с массивом операций;
раньше `putJSONObject` разворачивал его и `fileopsError` падал на
`response missing "response"` — теперь как `MoveDavItems`
(`putJSON` + `fileopsError`). Сигнатура не изменена.
- Публичные сигнатуры `files*.go` сохранены.
### Тесты
Unit (`go test ./...` зелёный):
`TestFileEntryToEntry`, `TestFileEntryToEntryNil`,
`TestFileEntryToEntrySizeFormats`, `TestDavFileToEntry`,
`TestDavFolderToEntry`, `TestEntriesFromFolderMap`,
`TestEntriesFromFolderMapNil`, `TestKindString`,
`TestClientFileStoreSelection` — PASS.
Integration (`go test -tags=integration`, живой OO):
`TestIntegrationFileStores` (subtests `rest`, `dav`) — PASS. Общий набор:
create folder / upload / list / stat / download / move / copy / rename / delete;
папки убираются. Учтена асинхронность fileops (опросс результата).
### Проверка
`go build ./... && go vet ./... && go test ./...` — зелёные.
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
F1 — каноническая модель + FileStore/Searcher; адаптеры REST и WebDAV
Closes #35.
Что сделано
file_core.go—Kind(File/Folder),Entry,FileStore,SearchQuery,SearchHit,Searcher; доступc.FileStore(backend)/c.Files()(фасад — F4 #38).file_rest.go—restStoreповерхfiles.go(
ListFolder/GetFile/CreateFolder/UploadToFolder/DownloadFile/MoveFiles/RenameFile/DeleteFiles;Copy— черезCopyDavItems, т.к. вfiles.goкопирования нет).file_dav.go—davStoreповерхfiles_webdav.go(
ListDavFolder/CreateDavFolder/UploadDavFile/DownloadDavFile/MoveDavItems/CopyDavItems/RenameDavFile/RenameDavFolder/DeleteDavItems).Иды классифицируются (
Stat) на папки/файлы для fileops.FileEntryToEntry,DavFileToEntry,DavFolderToEntry.DoRetry(retryStoreOp).MoveFiles:fileops/moveотдаёт envelope с массивом операций;раньше
putJSONObjectразворачивал его иfileopsErrorпадал наresponse missing "response"— теперь какMoveDavItems(
putJSON+fileopsError). Сигнатура не изменена.files*.goсохранены.Тесты
Unit (
go test ./...зелёный):TestFileEntryToEntry,TestFileEntryToEntryNil,TestFileEntryToEntrySizeFormats,TestDavFileToEntry,TestDavFolderToEntry,TestEntriesFromFolderMap,TestEntriesFromFolderMapNil,TestKindString,TestClientFileStoreSelection— PASS.Integration (
go test -tags=integration, живой OO):TestIntegrationFileStores(subtestsrest,dav) — PASS. Общий набор:create folder / upload / list / stat / download / move / copy / rename / delete;
папки убираются. Учтена асинхронность fileops (опросс результата).
Проверка
go build ./... && go vet ./... && go test ./...— зелёные.