Облачно съхранение
Облачният дом е едно място в хранилище, което потребителят вече притежава. Всеки доставчик се управлява през един и същ интерфейс за съхранение в coven; разликите между доставчиците са удостоверяването и начинът, по който второ устройство получава достъп.
Доставчици
Връзка към този раздел| Доставчик | Удостоверяване | Достъп за ново устройство |
|---|---|---|
| S3-compatible | Access key + secret | Идентификационни данни, включени в поканата |
| Google Drive | OAuth (PKCE) | Папка, споделена с акаунта на присъединяващия се |
| Dropbox | OAuth (PKCE) | Папка, споделена с акаунта на присъединяващия се |
| OneDrive | OAuth (PKCE) | Папка, споделена с акаунта на присъединяващия се |
| iCloud (CloudKit) | Apple ID, без вход | CloudKit споделяне, прието от присъединяващия се |
S3-compatible покрива AWS, Backblaze B2, Cloudflare R2, Wasabi, MinIO и всичко друго, което говори този API; bucket, регион, крайна точка и префикс на ключовете се настройват, а bucket-ът се проверява преди конфигурацията да се запише, така че правописна грешка да се провали при настройване, не при първото синхронизиране. OAuth доставчиците съществуват само в пълното издание bae; компилациите на baeium ги изключват.
Влизането е поток с код за упълномощаване и PKCE, като публичен клиент. На настолни системи пренасочването пристига на loopback сървър, вързан към локален порт за единичното обратно извикване; на мобилни устройства приложението прихваща пренасочване със собствена схема вместо това. bae иска най-тесния обхват, който доставчикът предлага за задачата; при Google Drive това е достъп само до файлове, които самото приложение създава. Токените се пазят в ключодържателя на операционната система, обновяват се с разрешението за обновяване на доставчика, а отказано обновяване се показва като подкана за повторно свързване, не като тих цикъл от повторни опити.
CloudKit няма отделен поток: платформеният CloudKit драйвер, реализиран в приложението и подаден на ядрото, работи като вписания Apple ID.
Подредбата на дома
Връзка към този разделВътре в дома coven подрежда потоци от changeset-и по устройство, поколения snapshot-и, записи за членство и пространства от имена за blob-ове. bae добавя три пространства от имена за blob-ове: release_files, covers и artist_images.
Начинът, по който обектите получават ключове, зависи от режима на съхранение на дома, фиксиран при създаване:
- Непрозрачен: обектите са шифровани и се съхраняват под ключове, получени от съдържанието, които не разкриват нищо. Това е режимът с доверие в криптографията; вижте Шифроване.
- Прегледен: обектите са открит текст на четими пътища, записани за всеки blob при качване:
release_files/{artist}/{album}/{filename},covers/{album}/{release}/cover.{ext},artist_images/{artist}/artist.{ext}. Bucket-ът служи и като използваемо файлово дърво; размяната е без шифроване и без членство, така че прегледните домове не могат да се споделят с други хора.
Поведение при реални мрежи
Връзка към този разделЧетенията за възпроизвеждане са по диапазони: плейърът стриймва нужните му прозорци от байтове, вместо цели файлове. Качвания над определен размер се разделят на части, когато доставчикът го поддържа. Ограниченията на честотата и временните грешки на доставчика се повтарят с нарастващо отстъпване, като се спазва retry-after, когато е даден; изтеклите OAuth токени се обновяват на място. Изходящата опашка за синхронизиране преживява рестартирания: качване, прекъснато от изход от приложението, продължава, вместо да започва отначало.