method()) { case 'POST': $result = [ 'name' => 'required|unique:storages|max:255', 'source' => 'required|max:255', ]; switch ($this->get('source')) { case 'AmazonS3Source': $result['auth_url'] = 'sometimes|url'; $result['access_key'] = 'sometimes|required'; $result['secret_key'] = 'sometimes|required'; $result['service_region'] = 'sometimes|required'; $result['container_name'] = 'sometimes|required'; break; case 'LocalFilesystemSource': $result['location'] = 'sometimes|required|is_dir|dir_empty|is_writeable'; break; case 'OpenStackSource': $result['auth_url'] = 'sometimes|required'; $result['tenant_name'] = 'sometimes|required'; $result['username'] = 'sometimes|required'; $result['password'] = 'sometimes|required'; $result['service_name'] = 'sometimes|required'; $result['service_region'] = 'sometimes|required'; $result['container_name'] = 'sometimes|required'; $result['cdn_url'] = 'sometimes|url'; break; case 'RackspaceSource': $result['username'] = 'sometimes|required'; $result['password'] = 'sometimes|required'; $result['service_region'] = 'sometimes|required'; $result['container_name'] = 'sometimes|required'; break; case 'BackblazeB2Source': $result['access_key'] = 'sometimes|required'; $result['secret_key'] = 'sometimes|required'; $result['container_name'] = 'sometimes|required'; break; case 'DropboxSource': $result['external_service_id'] = 'sometimes|required'; break; } break; case 'PATCH': case 'PUT': $storageId = intval($this->segment(3)); $storage = Storage::find($storageId); $result = [ 'name' => 'required|max:255|unique:storages,name,' . $storageId ]; switch ($storage->source) { case 'AmazonS3Source': $result['auth_url'] = 'sometimes|url'; $result['access_key'] = 'sometimes|required'; $result['secret_key'] = 'sometimes|required'; $result['service_region'] = 'sometimes|required'; $result['container_name'] = 'sometimes|required'; break; case 'OpenStackSource': $result['auth_url'] = 'sometimes|required'; $result['tenant_name'] = 'sometimes|required'; $result['username'] = 'sometimes|required'; $result['password'] = 'sometimes|required'; $result['service_name'] = 'sometimes|required'; $result['service_region'] = 'sometimes|required'; $result['container_name'] = 'sometimes|required'; $result['cdn_url'] = 'sometimes|url'; break; case 'RackspaceSource': $result['username'] = 'sometimes|required'; $result['password'] = 'sometimes|required'; $result['service_region'] = 'sometimes|required'; $result['container_name'] = 'sometimes|required'; break; case 'BackblazeB2Source': $result['access_key'] = 'sometimes|required'; $result['secret_key'] = 'sometimes|required'; $result['container_name'] = 'sometimes|required'; break; case 'DropboxSource': $result['external_service_id'] = 'sometimes|required'; break; } break; } return $result; } }