summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--server-rack.rb27
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)