diff options
Diffstat (limited to 'server-rack.rb')
| -rw-r--r-- | server-rack.rb | 27 |
1 files changed, 26 insertions, 1 deletions
diff --git a/server-rack.rb b/server-rack.rb index 9c768e5..d68d867 100644 --- a/server-rack.rb +++ b/server-rack.rb @@ -1,13 +1,14 @@ #!/usr/bin/env ruby # Usage: # -# $ ruby rack-server.rb +# $ ./script/server require 'digest/sha1' require 'rack' require 'json' class DataStorageServer MAX_BYTES=1024 + # You may initialize any variables you want to use across requests here def initialize @storage = {} @@ -30,6 +31,20 @@ class DataStorageServer end end + # Upload an Object + # + # Request + # PUT /data/{repository} + # + # my data + # + # Response + # + # Status: 201 Created + # {size, oid} + # Blobs can have a max size of 1024 bytes. + # If a blob exceeds this size then the blob is truncated + # and the first 1024 bytes are stored. def put(io) data = io.read(MAX_BYTES) oid = Digest::SHA1.hexdigest(data) @@ -37,6 +52,16 @@ class DataStorageServer ['201', {}, [JSON.generate({ size: data.size, oid: oid })]] end + # Delete an Object + # + # Request + # DELETE /data/{repository}/{oid} + # + # Response + # + # Status: 200 OK + # If the object identifer is unknown + # then a 404 status code is returned. def destroy(path) oid = id_from(path) if @storage.key?(oid) |
