| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|\
| |
| | |
Update GCSService#url
|
| |
| |
| |
| |
| | |
Update google-cloud-storage dependency to 1.3
Refactor arguments to Google::Cloud::Storage::File#signed_url
|
|/
|
| |
This reverts commit 6d3962461fb8d35fc9538d685fee96267663acf2.
|
|
|
|
|
|
|
| |
* Use simple core API for duck-type compat with other clients
* initialize: accept an existing client
* initialize: accept arbitrary client args instead of a fixed, required set
* download: use native get_object streaming, no need to implement range requests
* exists?: use head_object (which returns immediately) rather than waiting for existence
|
| |
|
| |
|
| |
|
|\
| |
| | |
Symbolize all keys inside configuration nested hash
|
| |
| |
| |
| |
| | |
Since configuration is a nested hash we need to symbolize all keys
of the hash. Othervise fetcing will fail on start
|
|/ |
|
|
|
|
|
|
|
|
|
| |
* Service.build takes the literal YAML config hash for the service and a
reference to the Configurator that's doing the building.
* Services that compose additional services can use the Configurator to
look them up and build them by name. See MirrorService for an example.
References #23
|
|
|
|
|
|
|
| |
First arg is config for the service we're instantiating.
Second arg is service configurations so we can look up and configure
other services by name.
|
|
|
|
|
|
|
|
| |
* Move service configuration from the Engine to Service
* Delegate configuration mechanics to internal Service::Configurator
* Delegate service building to the concrete Service classes, allowing
them to configure composed services.
* Implement for the Mirror service.
|
|
|
|
|
|
|
|
|
|
|
|
| |
Pass separate primary service and list of mirrors rather than treating
the first of the services list as the primary. Nice fit for keyword args,
and something we've long wanted in the equivalent Basecamp file repository.
Upload returns the results of the underlying service uploads rather than
the io.rewind result. Rewind before uploading rather than afterward, and
demonstrate that behavior with a test.
Test that more than one mirror works.
|
|\
| |
| | |
Disk service: use binary IO throughout, not UTF-8
|
| | |
|
|/
|
|
| |
don't respect Content-Disposition filename
|
| |
|
| |
|
|
|
|
|
|
|
| |
* S3 fails fast if the Content-MD5 header on an upload request is an
invalid checksum. Send a valid but incorrect checksum.
* Rescue the service-specific exception and raise the generic one.
|
|\ |
|
| | |
|
| | |
|
|/ |
|
|
|
|
|
|
|
| |
Unless this was intentional, being consistent with:
https://github.com/rails/activestorage/blob/master/lib/active_storage/service/s3_service.rb#L8
Just showin' a lil' <3 while perusing the repo @dhh
|
| |
|
| |
|
|
|
|
|
| |
Then we can add integrity checks on uploads to prevent errors in
transport.
|
| |
|
|
|
|
| |
need to synchronize chunk sizes anyway
|
| |
|
| |
|
|
|
|
| |
The mirror service exists for the purpose of migration, where all blobs exist in the primary subservice and a subset of blobs exist in the secondary subservice. Since the primary subservice is the source of truth until a migration is completed, operations like existence checks need not be performed against the secondary subservices.
|
|
|