public function upload(array $input)
    {
        $file                     = $this->resolveTempFileName($input['file']);
        $input['file']->directory = $file['directory'];
        $input['file']->filename  = $file['filename'];
        Validator::resolver(function($translator, $data, $rules, $messages) {
            return new CustomModule($translator, $data, $rules, $messages);
        });

        $validation = $this->validator->on('upload')->with($input, [], [
            'source' => trans('antares/foundation::response.modules.validator.invalid-structure')
        ]);


        return ($validation->fails()) ? Response::make($validation->getMessageBag()->first(), 400) :
                Response::json([
                    'html' => $this->manifestDecorator($validation->getManifest()),
                    'path' => $file['subdir'] . DIRECTORY_SEPARATOR . $file['filename']], 200);
    }