class FileStorage::Request JSONIPC.request Upload, 20 do property mid : String # autogenerated property file : FileInfo def initialize(@file : FileInfo) @mid = UUID.random.to_s end def handle(filestoraged : FileStorage::Service, event : IPC::Event::Events) user = filestoraged.get_logged_user event return Errors::Authorization.new @mid if user.nil? # FIXME: Maybe this should be moved to FileStorage::Service fd = event.connection.fd user_data = filestoraged.get_user_data user.uid filestoraged.storage.upload self, user_data rescue e return Errors::GenericError.new @mid, e.to_s end end FileStorage.requests << Upload end class FileStorage::Response JSONIPC.request Upload, 20 do property mid : String property path : String def initialize(@mid, @path) end end FileStorage.responses << Upload # JSONIPC.request Responses, 100 do # property mid : String # property responses : Array(Response | Errors) # a response for each request # property response : String # property reason : String? # # def initialize(@mid, @response, @responses, @reason = nil) # end # end end