2020-05-14 17:03:09 +02:00
|
|
|
class FileStorage::Request
|
|
|
|
|
|
|
|
JSONIPC.request Download, 30 do
|
|
|
|
property mid : String # autogenerated
|
|
|
|
property filedigest : String? # SHA256 digest of the file, used as ID
|
|
|
|
property name : String?
|
|
|
|
property tags : Array(String)?
|
|
|
|
def initialize(@filedigest = nil, @name = nil, @tags = nil)
|
|
|
|
@mid = UUID.random.to_s
|
|
|
|
end
|
|
|
|
|
|
|
|
def handle(filestoraged : FileStorage::Service, event : IPC::Event::Events)
|
2020-05-16 01:40:09 +02:00
|
|
|
user = filestoraged.get_logged_user event
|
2020-05-14 17:03:09 +02:00
|
|
|
|
2020-06-07 01:23:31 +02:00
|
|
|
return Errors::Authorization.new @mid if user.nil?
|
2020-05-14 17:03:09 +02:00
|
|
|
|
|
|
|
# FIXME: Maybe this should be moved to FileStorage::Service
|
2020-07-18 16:35:35 +02:00
|
|
|
fd = event.fd
|
2020-05-14 17:03:09 +02:00
|
|
|
|
|
|
|
user_data = filestoraged.get_user_data user.uid
|
|
|
|
|
2020-05-16 01:40:09 +02:00
|
|
|
filestoraged.storage.download self, user_data
|
2020-05-14 17:03:09 +02:00
|
|
|
rescue e
|
2020-06-07 00:52:02 +02:00
|
|
|
return Errors::GenericError.new @mid, e.to_s
|
2020-05-14 17:03:09 +02:00
|
|
|
end
|
|
|
|
end
|
|
|
|
FileStorage.requests << Download
|
|
|
|
end
|
|
|
|
|
|
|
|
class FileStorage::Response
|
|
|
|
JSONIPC.request Download, 30 do
|
2020-06-06 20:43:14 +02:00
|
|
|
property mid : String
|
|
|
|
property nb_chunks : Int32
|
|
|
|
def initialize(@mid, @nb_chunks)
|
2020-05-14 17:03:09 +02:00
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|