summaryrefslogtreecommitdiffstats
path: root/lib/public/files/cache/icacheentry.php
blob: 00c8e201b9a7cb342b6780d58eb9363028a94240 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
<?php
/**
 * @author Robin Appelman <icewind@owncloud.com>
 *
 * @copyright Copyright (c) 2016, ownCloud, Inc.
 * @license AGPL-3.0
 *
 * This code is free software: you can redistribute it and/or modify
 * it under the terms of the GNU Affero General Public License, version 3,
 * as published by the Free Software Foundation.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
 * GNU Affero General Public License for more details.
 *
 * You should have received a copy of the GNU Affero General Public License, version 3,
 * along with this program.  If not, see <http://www.gnu.org/licenses/>
 *
 */

namespace OCP\Files\Cache;

/**
 * meta data for a file or folder
 *
 * @since 9.0.0
 */
interface ICacheEntry {
	const DIRECTORY_MIMETYPE = 'httpd/unix-directory';

	/**
	 * Get the numeric id of a file
	 *
	 * @return int
	 * @since 9.0.0
	 */
	public function getId();

	/**
	 * Get the numeric id for the storage
	 *
	 * @return int
	 * @since 9.0.0
	 */
	public function getStorageId();

	/**
	 * Get the path of the file relative to the storage root
	 *
	 * @return string
	 * @since 9.0.0
	 */
	public function getPath();

	/**
	 * Get the file name
	 *
	 * @return string
	 * @since 9.0.0
	 */
	public function getName();

	/**
	 * Get the full mimetype
	 *
	 * @return string
	 * @since 9.0.0
	 */
	public function getMimeType();

	/**
	 * Get the first part of the mimetype
	 *
	 * @return string
	 * @since 9.0.0
	 */
	public function getMimePart();

	/**
	 * Get the file size in bytes
	 *
	 * @return int
	 * @since 9.0.0
	 */
	public function getSize();

	/**
	 * Get the last modified date as unix timestamp
	 *
	 * @return int
	 * @since 9.0.0
	 */
	public function getMTime();

	/**
	 * Get the last modified date on the storage as unix timestamp
	 *
	 * Note that when a file is updated we also update the mtime of all parent folders to make it visible to the user which folder has had updates most recently
	 * This can differ from the mtime on the underlying storage which usually only changes when a direct child is added, removed or renamed
	 *
	 * @return int
	 * @since 9.0.0
	 */
	public function getStorageMTime();

	/**
	 * Get the etag for the file
	 *
	 * An etag is used for change detection of files and folders, an etag of a file changes whenever the content of the file changes
	 * Etag for folders change whenever a file in the folder has changed
	 *
	 * @return string
	 * @since 9.0.0
	 */
	public function getEtag();

	/**
	 * Get the permissions for the file stored as bitwise combination of \OCP\PERMISSION_READ, \OCP\PERMISSION_CREATE
	 * \OCP\PERMISSION_UPDATE, \OCP\PERMISSION_DELETE and \OCP\PERMISSION_SHARE
	 *
	 * @return int
	 * @since 9.0.0
	 */
	public function getPermissions();

	/**
	 * Check if the file is encrypted
	 *
	 * @return bool
	 * @since 9.0.0
	 */
	public function isEncrypted();
}