189 Commits

Author SHA1 Message Date
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
Greg Karékinian
b68c5d8409 Merge pull request #94 from 5apps/feature/86-respond_with_201_on_create
Respond with status 201 when creating new objects
2016-08-08 14:47:07 +02:00
Garret Alfert
7a8694fd55 Respond with status 201 when creating new objects
closes #86
2016-08-05 17:43:47 +02:00
Garret Alfert
5891cb9cf0 Make sure to delete existing metadata on DELETE
fixes #80
2016-08-05 17:17:59 +02:00
Greg Karékinian
74063a3f66 Reload swift token from file every 30 minutes
We have seen requests fail because of an expired token that was loaded
from file less than an hour ago
2016-07-23 11:30:55 +02:00
Greg Karékinian
ad0ea12059 Return 401 when getting an empty bearer token
For example:

Authorization: Bearer

The cause of the empty bearer also needs to be investigated
2016-07-20 17:27:44 +02:00