194 Commits

Author SHA1 Message Date
f0d6e6c2c4
Add TODO note 2024-03-05 16:59:37 +01:00
8bcf3854c2
Remove obsolete method 2024-03-05 16:58:36 +01:00
771ff97cfe
Improve argument name
It's used in the code for escaping only parts of URLs
2024-03-05 16:57:15 +01:00
bf14785404
Fix invalid PUT signatures for URI-encoded paths
Some checks failed
Tests / test (6, 2.7) (pull_request) Failing after 19s
Tests / test (6, 3.0) (pull_request) Failing after 3s
Tests / test (6, 3.1) (pull_request) Failing after 3s
Tests / test (7, 2.7) (pull_request) Failing after 3s
Tests / test (7, 3.0) (pull_request) Failing after 3s
Tests / test (7, 3.1) (pull_request) Failing after 3s
We encode the URLs ourselves, and the default option for the aws-sigv4
gem breaks that functionality.
2024-03-04 17:17:44 +01:00
209fcca5ea
Make headers argument optional 2023-11-21 15:18:13 +01:00
b7ff3e7d42
Remove debug output, rescue 2023-11-16 10:27:58 +01:00
02820203f0
Switch to AWS V4 signatures 2023-11-15 19:05:21 +01:00
53eb5461fe
Add ENV vars to config file, switch to ERB template 2023-10-26 16:17:49 +02:00
e90ed70002
Remove Webrick method in favor of stdlib 2023-10-26 15:58:04 +02:00
b56eb30180
Remove Swift storage adapter 2022-05-13 13:07:50 +02:00
Greg Karékinian
c2d5fc9e07 Move the Content-Type format validation with the other validations 2020-04-15 14:23:12 +02:00
Greg Karékinian
71d138894e Validate the Content-Type on PUT requests
Return a 415
(https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/415) when the
Content-Type does not look like a valid MIME type (in the type/subtype
format)

Refs #137
2020-04-15 13:49:33 +02:00
Greg Karékinian
1824766a03 Implement Range support for the Swift provider, with specs 2020-01-06 14:03:26 +01:00
Greg Karékinian
8c95e804ca Add support for partial responses
Set the Content-Range response header and return a 206 status if it is a
partial response (a Range was passed)
2020-01-02 18:24:12 +01:00
Greg Karékinian
da7f077300 Pass the Range HTTP header to GET requests if present 2020-01-02 18:23:47 +01:00
Garret Alfert
575f4a87be Set the response headers from Redis metadata on GET 2018-11-26 11:33:21 +01:00
Greg Karékinian
d05cd4a760 Do not do an extra HEAD request after a PUT for Last-Modified
Use the Date header from a PUT request as the Last-Modified time that we
store in Redis
2018-07-18 19:37:05 +02:00
Greg Karékinian
b4ad4c4793 Set the Content-Length on a HEAD requests
We get it as part of the Redis metadata

RFC: https://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.13
2018-05-22 12:44:24 +02:00
Garret Alfert
533c9b6346 Set Content-type header on HEAD requests
Fixes #121
2018-05-22 11:59:55 +02:00
Greg Karékinian
639c3724f0 Refactor the put_request method to have a return value 2018-05-09 16:01:14 +02:00
Greg Karékinian
709f63555d Rewrite to avoid long lines 2018-05-09 15:55:00 +02:00
Greg Karékinian
0ec76c8140 Fix coding style for a hash 2018-05-09 15:26:32 +02:00
Greg Karékinian
f14ef4dc21 Consider that the metadata has changed when the Last-Modified changes
Also adds a spec for it
2018-04-30 16:39:12 +02:00
Greg Karékinian
ca0127d6a6 Rename the S3 provider to just S3 2018-04-30 15:46:18 +02:00
Greg Karékinian
1532a23d29 Reorder the argument in authorization_headers_for
Make content_type and md5 optional (set to nil by default)
2018-04-30 15:30:16 +02:00
Greg Karékinian
97cd5ec837 Move a comment to the relevant line 2018-04-30 15:15:04 +02:00
Greg Karékinian
3b72b8d0bb Pass the headers to the set_response_headers directly, not the response 2018-04-30 15:12:53 +02:00
Greg Karékinian
b00fc5bee2 Reverse the not found logic in the delete_data method to make it clearer 2018-04-30 15:10:55 +02:00
Greg Karékinian
21dad2aba7 Get the metadata from Redis on a HEAD request
No need to hit the storage backend, we can set the response headers from
the data in Redis
2018-04-26 13:17:43 +02:00
Greg Karékinian
7bd45543f6 Set headers from the Redis metadata on a GET that results in a 304
Also add specs to check for the response headers
2018-04-26 13:17:43 +02:00
Greg Karékinian
f083022e6d Get the ETag from Redis on a GET request
This prevents doing a network request when we would return a 304 anyway
2018-04-26 13:17:43 +02:00
Greg Karékinian
86dc45f444 Add support for S3 through the REST API
This is currently using the old S3 authentication
(https://s3.amazonaws.com/doc/s3-developer-guide/RESTAuthentication.html),
in order to support Exoscale Storage

Refs #112
2018-04-26 13:17:43 +02:00
Greg Karékinian
ac6bec48c4 Remove all Riak code and its dependencies
Closes #75
2018-04-16 11:54:32 +02:00
60c508fba9
Add Last-Modified date to document items in listings
Not in RS spec draft yet, see https://github.com/remotestorage/spec/issues/158 for discussion.
2018-03-12 16:32:00 +02:00
Greg Karékinian
3ddcccaee7 Handle the case of a PUT on a non-existing object
The previous code was returning a 500 because the HEAD request failed
2018-01-05 13:11:47 +01:00
Garret Alfert
2fac808343 Split list of ETAGs before removing Weak indicator 2018-01-05 06:55:46 +01:00
Garret Alfert
18670021b1 Handle out of sync metadata in Redis on PUTs
When the IF-MATCH comparison fails, we check the actual metadata on
the Swift server to be sure.
2018-01-05 06:49:42 +01:00
Garret Alfert
24ae9ad893 Allow for weak ETAGs with leading quote
The remoteStorage client currently surrounds all ETAGs with quotes, so
instead of W\"etag" it looks like "W\"etag".
2018-01-03 22:06:03 +01:00
Garret Alfert
8ffd15bb61 Ignore weak ETAG prefix when comparing MATCH headers
Our metadata only contains the actual ETAG value, so we need
to use only that when comparing it.
2018-01-03 21:31:25 +01:00
Greg Karékinian
c1ed996b1d Only send the first 20 characters of the token 2016-10-19 15:05:30 +02:00
Greg Karékinian
be43a7474a Remove line break from the token file when loading it 2016-10-18 18:03:02 +02:00
Garret Alfert
35abddc4ea Remove container migration checks 2016-09-12 11:49:23 +02:00
Garret Alfert
74428408b1 Use new Redis migration hash in Liquor Cabinet itself 2016-09-07 18:13:52 +02:00
Garret Alfert
90a6753d88 Use container path directly, instead of hiding it behind a method 2016-09-06 16:36:43 +02:00
Garret Alfert
e6fa6ca586 User proper container and path based on migration state 2016-09-05 18:27:35 +02:00
Garret Alfert
c79b86bff5 Change Redis key for container migration 2016-09-02 16:41:36 +02:00
Garret Alfert
fdc819d53d Determine which container to use from Redis 2016-09-02 15:15:48 +02:00
Garret Alfert
49ec6effa7 Remove unused method 2016-09-02 15:10:01 +02:00
8ad882d5ab If user container doesn't exist, use shared container 2016-09-01 18:12:52 +02:00
6448642477 Return 503 for PUT/DELETE during user migration 2016-09-01 17:14:42 +02:00