75 Commits

Author SHA1 Message Date
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
Garret Alfert
995ba52886 Log user's storage size in Redis 2016-06-13 13:18:10 +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
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
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
1c0bd18915 Delete obsolete method 2016-03-04 20:34:48 +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
d8fc27c8dd Merge pull request #73 from 5apps/features/redis_migration
Migration script for copying metadata to Redis
2016-03-02 23:47:42 +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
Greg Karékinian
e7a35636fd Turn Redis parameters into symbols 2016-03-01 15:02:56 +01:00
Greg Karékinian
0e10f3b6ff Change the way to load the Redis config to allow clusters 2016-02-02 22:20:38 +00: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
9ba85446ef Use parentheses to fix syntax warnings 2016-02-01 15:00:39 +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