namespace OC\Connector\Sabre;
+use Sabre\DAV\IFile;
use \Sabre\DAV\PropFind;
use \Sabre\DAV\PropPatch;
use \Sabre\HTTP\RequestInterface;
*/
private $tree;
+ /**
+ * @param \Sabre\DAV\Tree $tree
+ */
public function __construct(\Sabre\DAV\Tree $tree) {
$this->tree = $tree;
}
$this->server->on('propPatch', array($this, 'handleUpdateProperties'));
$this->server->on('afterBind', array($this, 'sendFileIdHeader'));
$this->server->on('afterWriteContent', array($this, 'sendFileIdHeader'));
+ $this->server->on('afterMethod:GET', [$this,'httpGet']);
+ }
+
+ /**
+ * Plugin that adds a 'Content-Disposition: attachment' header to all files
+ * delivered by SabreDAV.
+ * @param RequestInterface $request
+ * @param ResponseInterface $response
+ */
+ function httpGet(RequestInterface $request, ResponseInterface $response) {
+ // Only handle valid files
+ $node = $this->tree->getNodeForPath($request->getPath(), 0);
+ if (!($node instanceof IFile)) return;
+
+ $response->addHeader('Content-Disposition', 'attachment');
}
/**