CanMan/Cargo.toml
Jason Tudisco 1b8187a484 Add private protobuf sync API to CAN service
New /sync/* endpoints for peer-to-peer replication:
- POST /sync/hashes - list all asset digests for reconciliation
- POST /sync/pull - pull full assets (metadata + content) by hash
- POST /sync/push - push asset with explicit timestamp for deterministic hashing
- POST /sync/meta - update metadata (tags, description, trash state)

All endpoints use protobuf encoding (prost) and require X-Sync-Key header
matching config.sync_api_key. Sync API is disabled when no key is configured.

Also adds db::get_all_assets() for sync reconciliation (includes trashed).

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-12 11:06:27 -06:00

56 lines
1.2 KiB
TOML

[package]
name = "can-service"
version = "0.1.0"
edition = "2021"
description = "Containerized Asset Network - a self-healing local storage daemon"
[dependencies]
# Web framework
axum = { version = "0.8", features = ["multipart"] }
tokio = { version = "1", features = ["full"] }
tower-http = { version = "0.6", features = ["cors", "trace"] }
tokio-util = { version = "0.7", features = ["io"] }
# Database
rusqlite = { version = "0.32", features = ["bundled"] }
# Serialization
serde = { version = "1", features = ["derive"] }
serde_json = "1"
serde_yaml = "0.9"
# Hashing
sha2 = "0.10"
hex = "0.4"
# Image processing
image = { version = "0.25", default-features = false, features = ["jpeg", "png", "gif", "webp"] }
# File system watching
notify = "7"
# MIME type detection
mime_guess = "2"
mime = "0.3"
# Logging
tracing = "0.1"
tracing-subscriber = { version = "0.3", features = ["env-filter"] }
# Protobuf (sync API)
prost = "0.13"
# Utilities
chrono = { version = "0.4", features = ["serde"] }
anyhow = "1"
thiserror = "2"
# OS attributes (unix only, windows uses custom ADS)
[target.'cfg(unix)'.dependencies]
xattr = "1"
[dev-dependencies]
tempfile = "3"
reqwest = { version = "0.12", features = ["multipart", "json"] }
tokio-test = "0.4"