justus/flysystem-onedrive
A Flysystem adapter for Microsoft OneDrive, letting you read, write, and manage files through the Microsoft Graph API using the familiar Flysystem interface in your Laravel or PHP applications.
Architecture fit
Storage facade is a thin wrapper over Flysystem, the adapter plugs in without touching application code: register a custom driver with Storage::extend('onedrive', ...) and the disk becomes usable via Storage::disk('onedrive'), exactly like local or s3.config/filesystems.php, and secret management.Integration feasibility
Files.ReadWrite.All application-level or Files.ReadWrite delegated), and tenant admin consent.@odata.nextLink; paths are case-insensitive, length-capped, and reject reserved characters (* : < > ? / \ | # %).Technical risk
copy/move atomicity, exception mapping — is unlikely to be fully honoured. Silent partial successes (an upload that 90% completes) are the dangerous class of bug. The undocumented adapter change in this release means our existing behavioural test suite must be re-run, not assumed.Key questions
Retry-After values honoured?url(), temporaryUrl(), visibility, and mimeType — or throw NotSupportedException? Which of these does our feature actually need?OneDriveAdapter.php in v2.0.8 (PR #24)? Is it a bug fix, a Graph payload change, or a behaviour change we depend on — and is it covered by any test?Stack fit
.env in production), drive ID, and a root prefix for environment/tenant isolation.Migration path
onedrive as an additional disk and route one narrowly scoped feature to it first.Compatibility
temporaryUrl, object versioning, lifecycle rules, checksums) is partial at best. Document unsupported operations in the internal adapter wrapper and fail loudly rather than silently.Sequencing
Maintenance
Support
Scaling
Failure modes
401 from an expired/rotated secret → total disk outage; mitigated by rotation runbook and secret-expiry alerting.429/503 throttling → cascading job failures if retries are naive; require exponential backoff and dead-letter queues.507/quota exhaustion → writes fail silently in some code paths if exceptions are swallowed; enforce fail-fast.423 file-locked (user has the document open in Office) → transient write failures unique to this backend; needs retry-with-jitter and user-facing messaging.OneDriveAdapter.php can silently alter request payloads or error handling. Detect via version pinning plus a regression suite that exercises Graph error codes and large-file paths against a real tenant.Ramp-up
How can I help you explore Laravel packages today?