# s = some source
# x is of type ((metadata)->unit)*source
# first part is a function used to update
# metadata and second part is the source
# whose metadata are updated
x = insert_metadata(s)
# Get the function
insert = fst(x)
# Redefine s as the new source
s = snd(x)
# The handler
def set_meta(~protocol,~data,~headers,uri) =
# Split uri of the form request?foo=bar&...
# into (request,[("foo","bar"),..])
x = url.split(uri)
# Filter out unusual metadata
meta = metadata.export(snd(x))
# Grab the returned message
ret =
if meta != [] then
insert(meta)
"OK!"
else
"No metadata to add!"
end
# Return response
http_response(
protocol=protocol,
code=200,
headers=[("Content-Type","text/html")],
data="#{ret}"
)
end
# Register handler on port 700
harbor.http.register(port=7000,method="GET","/setmeta",set_meta)