48 Commits

Author SHA1 Message Date
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
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
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
Garret Alfert
995ba52886 Log user's storage size in Redis 2016-06-13 13:18:10 +02:00
Garret Alfert
c1d60586ec Improve some spec wordings 2016-06-03 01:08:52 +02:00
Garret Alfert
28b6a7f22d Merge branch 'master' into feature/update_to_recent_rs_spec
# Conflicts:
#	spec/swift/app_spec.rb
2016-06-02 22:21:16 +02:00
Garret Alfert
a349db5243 Spec for directory listing of non-existing directories 2016-06-02 18:57:40 +02:00
Garret Alfert
576e4a9afb Specs for response headers on GET requests 2016-06-02 18:57:37 +02:00
Garret Alfert
16e51038b1 Send ETag of deleted item in header 2016-06-02 18:56:45 +02:00
Garret Alfert
ed8061b594 Use content type "application/ld+json" for directory listings 2016-06-02 18:54:47 +02:00
Garret Alfert
c897959029 Send "Precondition Failed" message body with 412 responses 2016-06-02 18:49:44 +02:00
Garret Alfert
cc91b5c4cd Send "Not Found" message body with 404 responses (refs #42) 2016-06-02 13:19:06 +02:00
Garret Alfert
83d8f29a04 Send "Conflict" message body with 409 responses (closes #409) 2016-06-02 13:18:59 +02:00
Garret Alfert
9a9a9c79e5 Send "Unauthorized" message body with 401 responses (refs #42) 2016-06-02 13:18:51 +02:00
Garret Alfert
df87deaf0b Don't fail when order of array is different 2016-03-04 22:48:50 +01:00
Garret Alfert
648f86e0f3 Fix typo in specs 2016-03-04 22:40:04 +01:00
Garret Alfert
1d39445ba9 Fix deleting metadata for empty subdirectories 2016-03-04 22:17:33 +01:00
Garret Alfert
5378826c6a Also use content checksum for ETag calculation
Timestamp is not enough, as it might be the same
for two consequent PUTs.
2016-03-04 22:17:25 +01:00
Garret Alfert
3590b7dedc Determine correct metadata key for objects in root dir 2016-03-04 20:47:41 +01:00
Garret Alfert
43ff83d26b Don't allow PUTS with Content-Range header 2016-03-04 19:33:00 +01:00
Garret Alfert
fd3293025d ETags are quoted, doh 2016-03-04 19:32:36 +01:00
Garret Alfert
d08bc45489 Don't use or create any directory objects in Swift 2016-03-04 15:33:28 +01:00
Garret Alfert
9b7b224f79 Use more explicit key name for items 2016-03-02 18:06:42 +01:00
Garret Alfert
c2fd9bc6d0 Change Redis metadata key prefix to rs:m 2016-03-02 18:04:38 +01:00
Garret Alfert
88f2dceb27 Use single letters for Redis metadata keys
Saves 16 characters per document object and 10
characters per directory object
2016-03-02 15:00:33 +01:00
Garret Alfert
650da91a1d Shorten Redis metadata keys
Use rsm:<username>:<dir>:i instead of
rs_meta:<username>:<dir>:items
2016-03-02 14:43:28 +01:00
Garret Alfert
067f4a1553 Use shorter Redis key for dir backend config
rsc:db:username instead of rs_config:dir_backend:username
2016-03-02 14:33:48 +01:00
Garret Alfert
ff25b40385 Save last modified timestamp for objects as well 2016-03-02 14:05:53 +01:00
Garret Alfert
c730333143 Don't try to do put or delete requests to root dir in order to update etag 2016-02-02 18:07:12 +01:00
Garret Alfert
7084a50d1b Make dir_empty? method use Redis metadata 2016-01-29 16:45:17 +01:00
Garret Alfert
573dadf365 Respond with 503 when directory backend is locked 2016-01-29 16:18:49 +01:00
Garret Alfert
a4673e9661 Use directory backend config from redis instead of config file 2016-01-29 16:18:09 +01:00
Garret Alfert
16dcc56fba No need to stub has_name_collision? anymore 2016-01-29 15:16:24 +01:00
Garret Alfert
4ca67c7ea9 Do collision detection via Redis metadata 2016-01-28 19:15:50 +01:00
Garret Alfert
15196ca4b9 Check IF_NONE_MATCH header for directory listings 2016-01-23 14:29:37 -05:00
Garret Alfert
bec9f7a6cc Set ETag header for directory listings 2016-01-23 14:29:18 -05:00
Garret Alfert
c676c1a6a8 Add metadata entry for root directory 2016-01-23 14:28:14 -05:00
Garret Alfert
599865cf3f Generate directory listing from Redis metadata 2016-01-23 13:26:38 -05:00
Garret Alfert
f73c286ce9 Purge all keys from redis before every test run 2016-01-23 12:34:08 -05:00
Garret Alfert
25c170021e Delete metadata from Redis when deleting objects 2016-01-22 16:04:28 -05:00
Garret Alfert
972378e67f Don't care for order of array when comparing 2016-01-22 14:46:41 -05:00
Garret Alfert
189d04af25 Save list of directory items in redis 2016-01-20 17:27:00 -05:00
Garret Alfert
cd2c0865e8 Save directory metadata in redis (WIP) 2016-01-20 15:53:22 -05:00
Garret Alfert
990ea9cf28 Save object metadata in redis 2016-01-20 15:33:35 -05:00