1<?php 2 3namespace Sabre\DAV; 4 5/** 6 * This interface represents a file in the directory tree 7 * 8 * A file is a bit of a broad definition. In general it implies that on 9 * this specific node a PUT or GET method may be performed, to either update, 10 * or retrieve the contents of the file. 11 * 12 * @copyright Copyright (C) fruux GmbH (https://fruux.com/) 13 * @author Evert Pot (http://evertpot.com/) 14 * @license http://sabre.io/license/ Modified BSD License 15 */ 16interface IFile extends INode { 17 18 /** 19 * Replaces the contents of the file. 20 * 21 * The data argument is a readable stream resource. 22 * 23 * After a successful put operation, you may choose to return an ETag. The 24 * etag must always be surrounded by double-quotes. These quotes must 25 * appear in the actual string you're returning. 26 * 27 * Clients may use the ETag from a PUT request to later on make sure that 28 * when they update the file, the contents haven't changed in the mean 29 * time. 30 * 31 * If you don't plan to store the file byte-by-byte, and you return a 32 * different object on a subsequent GET you are strongly recommended to not 33 * return an ETag, and just return null. 34 * 35 * @param resource|string $data 36 * @return string|null 37 */ 38 function put($data); 39 40 /** 41 * Returns the data 42 * 43 * This method may either return a string or a readable stream resource 44 * 45 * @return mixed 46 */ 47 function get(); 48 49 /** 50 * Returns the mime-type for a file 51 * 52 * If null is returned, we'll assume application/octet-stream 53 * 54 * @return string|null 55 */ 56 function getContentType(); 57 58 /** 59 * Returns the ETag for a file 60 * 61 * An ETag is a unique identifier representing the current version of the file. If the file changes, the ETag MUST change. 62 * 63 * Return null if the ETag can not effectively be determined. 64 * 65 * The ETag must be surrounded by double-quotes, so something like this 66 * would make a valid ETag: 67 * 68 * return '"someetag"'; 69 * 70 * @return string|null 71 */ 72 function getETag(); 73 74 /** 75 * Returns the size of the node, in bytes 76 * 77 * @return int 78 */ 79 function getSize(); 80 81} 82