Client-Server Protocol RU

Version 30 (Troex Nevelin, 01.02.2010 02:39)

1 1
h1. Описание протокола клиент-сервер
2 1
3 4 Troex Nevelin
{{>toc}}
4 4 Troex Nevelin
5 6 Troex Nevelin
_Коннектор (connector)_ - обрабатывается на сервере (PHP, Python). _Клиент (client)_ - обрабатывается на стороне пользователя в браузере (JavaScript). Когда пользователь выполняет какое-либо действие с файлами _клиент_ отправляет на сервер (в _коннектор_) запрос и получает ответ. _Коннектор_ получает данные от _клиента_ через GET или через POST (только при загрузке _upload_ и редактировании _edit_). _Коннектор_ всегда возвращает _клиенту_ объект JSON.
6 1
7 2 Troex Nevelin
Обязятельный параметр, всегда ожидаемый коннектором - *cmd* - имя команды, пример: @http://localhost/connector.php?cmd=open@
8 1
9 2 Troex Nevelin
Для любой команды ответ коннектора может содержать следующие параметры:
10 2 Troex Nevelin
* *error* : Строка с сообщением об ошибке
11 2 Troex Nevelin
* *errorData* : Массив с сообщениями о нефатальных ошибках
12 2 Troex Nevelin
* *select* : массив хэшей файлов, которые необходимо выделить после перерисовки контента (upload, mkdir, mkfile и тд)
13 2 Troex Nevelin
* *debug* : массив с отладочной информацией
14 1
15 1
Команды клиентской части не полностью совпадают с командами коннектора:
16 2 Troex Nevelin
* *reload*, *back* - реализуются серверной командой *open*
17 2 Troex Nevelin
* *list*, *icons*, *quicklook*, *copy*, *cut* - работают только на клиенте и не обращаются к коннектору
18 1
19 2 Troex Nevelin
Любая команда, получившая некорректные аргументы, прекращает дальнейшее выполнение и возвращает *error* (сообщение об ошибке); исключение *open* - возвращает сообщение об ошибке и контент корневой директории.
20 4 Troex Nevelin
21 3 Troex Nevelin
*Внимание!* Пути к файлам не передаются в чистом виде, только hash от пути (md5 или любая другая hash-функция).
22 1
23 2 Troex Nevelin
h2. Список команд
24 2 Troex Nevelin
25 2 Troex Nevelin
*open* - открыть директорию или вывести содержимое файла в браузер
26 2 Troex Nevelin
*tmb* - создать превьюшки для картинок, не имеющих их
27 10 Troex Nevelin
*mkdir* - создать директорию
28 2 Troex Nevelin
*mkfile* - создать текстовый файл
29 10 Troex Nevelin
*rename* - переименовать директориб или файл
30 10 Troex Nevelin
*rm* - удалить директорию/файлы
31 2 Troex Nevelin
*upload* - загрузить файлы
32 10 Troex Nevelin
*paste* - скопировать или переместить файлы/директории в указанную директорию
33 10 Troex Nevelin
*duplicate* - сделать копию директории/файла
34 2 Troex Nevelin
*geturl* - вернуть урл файла
35 2 Troex Nevelin
*read* - вернуть содержимое текстового файла
36 2 Troex Nevelin
*edit* - сохранить текст в файл
37 2 Troex Nevelin
*extract* - распаковать архив
38 10 Troex Nevelin
*archive* - сжать директории/файлы в архив
39 10 Troex Nevelin
*resize* - изменить размер изображения
40 10 Troex Nevelin
*ping* - служебная команда. необходима для Safari (загрузка файлов)
41 2 Troex Nevelin
42 7 Troex Nevelin
h2. Инициализация файлового менеджера
43 1
44 7 Troex Nevelin
Аргументы передаваемые клиентом коннектору (клиент -> сервер):
45 6 Troex Nevelin
* *cmd* : open
46 6 Troex Nevelin
* *init* : true
47 1
* *tree* : true
48 6 Troex Nevelin
49 20 Troex Nevelin
Пример: @http://localhost:8001/~troex/cgi/connector.py?cmd=open&init=true&tree=true@
50 7 Troex Nevelin
51 7 Troex Nevelin
Ответ (сервер -> клиент): смотрите описание команды [[Client-Server_Protocol_RU#open|open]], плюс дополнительно ответ включает:
52 12 Troex Nevelin
53 6 Troex Nevelin
* *disabled* : (Array) список отключенных команд
54 22 Troex Nevelin
* *params*: (Object) 
55 22 Troex Nevelin
** *url*: (String) 
56 22 Troex Nevelin
** *dotFiles* : (Boolean) разрешено ли показывать скрытые файлы, начинающиеся с точки
57 22 Troex Nevelin
** *uplMaxSize* : (String) макимальный разрешенный размер загружаемых файлов (например: 128M)
58 22 Troex Nevelin
** *archives* : (Array) Список mime-типов архивов, которые могут быть созданы коннектором
59 22 Troex Nevelin
** *extract* : (Array) Список mime-типов архивов, которые коннектор может распаковать
60 12 Troex Nevelin
61 12 Troex Nevelin
Пример корректного ответа:
62 12 Troex Nevelin
63 17 Troex Nevelin
!elFinder-init.png!
64 1
65 20 Troex Nevelin
JSON:
66 21 Troex Nevelin
<pre><code class="json">
67 12 Troex Nevelin
{
68 15 Troex Nevelin
    "cwd": {
69 19 Troex Nevelin
        "name"  : "Home",
70 19 Troex Nevelin
        "hash"  : "b4473c8c08d1d499ecd7112f3398f125",
71 19 Troex Nevelin
        "rel"   : "Home",
72 19 Troex Nevelin
        "date"  : "30 Jan 2010 14:25",
73 19 Troex Nevelin
        "mime"  : "directory",
74 19 Troex Nevelin
        "size"  : 0,
75 19 Troex Nevelin
        "read"  : true,
76 19 Troex Nevelin
        "write" : true,
77 19 Troex Nevelin
        "rm"    : false
78 15 Troex Nevelin
    },
79 14 Troex Nevelin
    "cdc": [
80 14 Troex Nevelin
    {
81 19 Troex Nevelin
        "name"  : "test",
82 19 Troex Nevelin
        "hash"  : "ac4b61565950a73395c871f9c3fc7362",
83 19 Troex Nevelin
        "date"  : "Today 14:11",
84 19 Troex Nevelin
        "mime"  : "directory",
85 19 Troex Nevelin
        "size"  : 102,
86 19 Troex Nevelin
        "read"  : true,
87 19 Troex Nevelin
        "write" : true,
88 19 Troex Nevelin
        "rm"    : true
89 1
    },
90 17 Troex Nevelin
    {
91 19 Troex Nevelin
        "name"  : "link to README", 
92 19 Troex Nevelin
        "hash"  : "4fc059e61577f0267fbd6c1c5bafb1b4", 
93 19 Troex Nevelin
        "url"   : "http://localhost:8001/~troex/git/elfinder/files/wiki/README.txt", 
94 19 Troex Nevelin
        "date"  : "Today 16:50", 
95 19 Troex Nevelin
        "mime"  : "text/plain", 
96 19 Troex Nevelin
        "size"  : 10, 
97 19 Troex Nevelin
        "read"  : true, 
98 19 Troex Nevelin
        "write" : true, 
99 19 Troex Nevelin
        "rm"    : true, 
100 19 Troex Nevelin
        "link"  : "8d331825ebfbe1ddae14d314bf81a712", 
101 19 Troex Nevelin
        "linkTo": "Home/README.txt", 
102 19 Troex Nevelin
        "parent": "b4473c8c08d1d499ecd7112f3398f125"
103 17 Troex Nevelin
    }, 
104 17 Troex Nevelin
    {
105 19 Troex Nevelin
        "name"  : "logo.png", 
106 19 Troex Nevelin
        "hash"  : "a696323d7fd86513754004ba8bc12967", 
107 19 Troex Nevelin
        "url"   : "http://localhost:8001/~troex/git/elfinder/files/wiki/logo.png", 
108 19 Troex Nevelin
        "date"  : "11 Nov 2009 21:57", 
109 19 Troex Nevelin
        "mime"  : "image/png", 
110 19 Troex Nevelin
        "size"  : 18782, 
111 19 Troex Nevelin
        "read"  : true, 
112 19 Troex Nevelin
        "write" : true, 
113 19 Troex Nevelin
        "rm"    : true
114 17 Troex Nevelin
    }, 
115 14 Troex Nevelin
    {
116 19 Troex Nevelin
        "name"  : "README.txt",
117 19 Troex Nevelin
        "hash"  : "8d331825ebfbe1ddae14d314bf81a712",
118 19 Troex Nevelin
        "url"   : "http://localhost:8001/~troex/git/elfinder/files/wiki/README.txt",
119 19 Troex Nevelin
        "date"  : "Today 14:25",
120 19 Troex Nevelin
        "mime"  : "text/plain",
121 19 Troex Nevelin
        "size"  : 1171,
122 19 Troex Nevelin
        "read"  : true,
123 19 Troex Nevelin
        "write" : true,
124 19 Troex Nevelin
        "rm"    : true
125 14 Troex Nevelin
    }
126 14 Troex Nevelin
    ],
127 14 Troex Nevelin
    "tree": {
128 19 Troex Nevelin
        "name"  : "Home",
129 19 Troex Nevelin
        "hash"  : "b4473c8c08d1d499ecd7112f3398f125",
130 19 Troex Nevelin
        "read"  : true,
131 19 Troex Nevelin
        "write" : true,
132 19 Troex Nevelin
        "dirs"  : [
133 14 Troex Nevelin
        {
134 19 Troex Nevelin
            "name"  : "test",
135 19 Troex Nevelin
            "hash"  : "ac4b61565950a73395c871f9c3fc7362",
136 19 Troex Nevelin
            "read"  : true,
137 19 Troex Nevelin
            "write" : true,
138 19 Troex Nevelin
            "dirs"  : [
139 14 Troex Nevelin
            {
140 19 Troex Nevelin
                "name"  : "test2",
141 19 Troex Nevelin
                "hash"  : "b3615611cf9f8f6a8821ef20eda450b5",
142 19 Troex Nevelin
                "read"  : true,
143 19 Troex Nevelin
                "write" : true,
144 19 Troex Nevelin
                "dirs"  : []
145 14 Troex Nevelin
            }
146 14 Troex Nevelin
            ]
147 14 Troex Nevelin
        }
148 14 Troex Nevelin
        ],
149 14 Troex Nevelin
    },
150 19 Troex Nevelin
    "disabled"  : [],
151 19 Troex Nevelin
    "params"    : {
152 19 Troex Nevelin
        "url"        : "http://localhost:8001/~troex/git/elfinder/files/wiki",
153 19 Troex Nevelin
        "dotFiles"   : true,
154 19 Troex Nevelin
        "uplMaxSize" : "15M",
155 19 Troex Nevelin
        "extract"    : [
156 19 Troex Nevelin
            "application/x-7z-compressed",
157 19 Troex Nevelin
            "application/x-tar",
158 19 Troex Nevelin
            "application/x-gzip",
159 19 Troex Nevelin
            "application/x-bzip2",
160 19 Troex Nevelin
            "application/zip"
161 14 Troex Nevelin
        ],
162 19 Troex Nevelin
        "archives"   : [
163 19 Troex Nevelin
            "application/x-7z-compressed",
164 19 Troex Nevelin
            "application/x-tar",
165 19 Troex Nevelin
            "application/x-gzip",
166 19 Troex Nevelin
            "application/x-bzip2",
167 19 Troex Nevelin
            "application/zip"
168 14 Troex Nevelin
        ]
169 14 Troex Nevelin
    }
170 1
}
171 21 Troex Nevelin
</code></pre>
172 2 Troex Nevelin
173 6 Troex Nevelin
h2. Описание команд
174 1
175 8 Troex Nevelin
h3. open
176 1
177 8 Troex Nevelin
Возвращает содержимое директории или выводит файл в браузер.
178 9 Troex Nevelin
179 1
1. Открытие директории
180 6 Troex Nevelin
181 6 Troex Nevelin
Аргументы:
182 6 Troex Nevelin
* *cmd* : open
183 9 Troex Nevelin
* *target* : hash пути директории
184 1
* *tree* : Не обязательный параметр. Если задан - дополнительно вернуть дерево директорий
185 9 Troex Nevelin
186 27 Troex Nevelin
Ответ должен содержать (Object) _cwd_ и массив (Array) _cdc_, дополнительно может присутствовать (Object) _tree_, пример:
187 23 Troex Nevelin
<pre><code class="json">
188 1
{
189 25 Troex Nevelin
    "cwd" : { // (Object) Current Working Directory - Информация о текущей директории
190 23 Troex Nevelin
        "name"  : "Home",                             // (String)  Имя директории
191 26 Troex Nevelin
        "hash"  : "b4473c8c08d1d499ecd7112f3398f125", // (String)  hash от абсолютного пути файла на сервере
192 23 Troex Nevelin
        "mime"  : "directory",                        // (String)  всегда "directory"
193 23 Troex Nevelin
        "rel"   : "Home",                             // (String)  относительный путь до текущей директории
194 23 Troex Nevelin
        "size"  : 0,                                  // (Number)  размер директории в байтах
195 23 Troex Nevelin
        "date"  : "30 Jan 2010 14:25",                // (String)  время изменения (mtime)
196 23 Troex Nevelin
        "read"  : true,                               // (Boolean) право на чтение
197 23 Troex Nevelin
        "write" : true,                               // (Boolean) право на запись
198 23 Troex Nevelin
        "rm"    : false                               // (Boolean) право на удаление
199 23 Troex Nevelin
    },
200 23 Troex Nevelin
    "cdc" : [ // (Array) (of Objects) Current Directory Content - Информация о содержимом текущей директории
201 1
    {
202 23 Troex Nevelin
        "name"  : "link to README",                   // (String)  Имя директории/файла
203 23 Troex Nevelin
        "hash"  : "4fc059e61577f0267fbd6c1c5bafb1b4", // (String)  hash
204 23 Troex Nevelin
        "url"   : "http://localhost:8001/~troex/git/elfinder/files/wiki/README.txt", // (String) URL
205 23 Troex Nevelin
        "date"  : "Today 16:50",                      // (String)  время изменения (mtime)
206 23 Troex Nevelin
        "mime"  : "text/plain",                       // (String)  MIME тип файла или "directory"
207 23 Troex Nevelin
        "size"  : 10,                                 // (Number)  размер директории в байтах
208 23 Troex Nevelin
        "read"  : true,                               // (Boolean) право на чтение
209 23 Troex Nevelin
        "write" : true,                               // (Boolean) право на запись
210 23 Troex Nevelin
        "rm"    : true,                               // (Boolean) право на удаление
211 23 Troex Nevelin
        "link"  : "8d331825ebfbe1ddae14d314bf81a712", // (String)  только для ссылок, hash файла
212 23 Troex Nevelin
                                                      //           на который ведёт ссылка
213 23 Troex Nevelin
        "linkTo": "Home/README.txt",                  // (String)  только для ссылок, относительный путь
214 23 Troex Nevelin
                                                      //           до файла, на который указывает ссылка
215 23 Troex Nevelin
        "parent": "b4473c8c08d1d499ecd7112f3398f125"  // (String)  только для ссылок, hash директории
216 23 Troex Nevelin
                                                      //           в который находиться файл, на который
217 23 Troex Nevelin
                                                      //           указывает ссылка
218 1
    },
219 23 Troex Nevelin
    {
220 23 Troex Nevelin
        // ...
221 23 Troex Nevelin
    }
222 23 Troex Nevelin
    ],
223 23 Troex Nevelin
    "tree" : { // (Object) Дерево директорий. Не обязательный параметр, только если был передан аргумент "tree"
224 23 Troex Nevelin
	    "name"  : "Home",                             // (String)  Имя директории
225 23 Troex Nevelin
        "hash"  : "b4473c8c08d1d499ecd7112f3398f125", // (String)  hash
226 23 Troex Nevelin
        "read"  : true,                               // (Boolean) право на чтение
227 23 Troex Nevelin
        "write" : true,                               // (Boolean) право на запись
228 23 Troex Nevelin
        "dirs"  : [                                   // (Array) (of Objects) массив дочерних директории
229 23 Troex Nevelin
        {
230 23 Troex Nevelin
            "name"  : "test",
231 23 Troex Nevelin
            "hash"  : "ac4b61565950a73395c871f9c3fc7362",
232 23 Troex Nevelin
            "read"  : true,
233 23 Troex Nevelin
            "write" : true,
234 23 Troex Nevelin
            "dirs"  : [
235 23 Troex Nevelin
            {
236 23 Troex Nevelin
                // ...
237 23 Troex Nevelin
            },
238 23 Troex Nevelin
            {
239 23 Troex Nevelin
                // ...
240 23 Troex Nevelin
            }
241 23 Troex Nevelin
            ]
242 23 Troex Nevelin
        }
243 23 Troex Nevelin
    }
244 8 Troex Nevelin
}
245 23 Troex Nevelin
</code></pre>
246 23 Troex Nevelin
247 27 Troex Nevelin
*Внимание!* Если передан некорректный аргумент *target*, возвращает контент корневой директории (_cdc, cdw_) и сообщение об ошибке (_error_).
248 8 Troex Nevelin
249 1
2. Открытие файла (вывод содержимого в браузер).
250 1
251 1
Аргументы:
252 1
* *cmd* : open
253 8 Troex Nevelin
* *target* : hash пути файла
254 27 Troex Nevelin
* *current* : hash пути к директории, где находится файл
255 1
256 8 Troex Nevelin
Ответ:
257 1
258 27 Troex Nevelin
Файл выводится в браузер с соответствующими заголовками.
259 27 Troex Nevelin
260 1
h3. tmb
261 1
262 27 Troex Nevelin
Фоновая команда. Создает миниатюрки для картинок, не имеющих их. Кол-во создаваемых за раз миниатюрок, указывается в [[Connector_Configuration_RU|конфиге коннектора]] опцией _tmbAtOnce_. По умолчанию - 5.
263 8 Troex Nevelin
264 1
Аргументы:
265 1
* *cmd* : tmb
266 27 Troex Nevelin
* *current* : hash пути к директории, в которой создаем миниатюрки
267 1
268 1
Ответ:
269 29 Troex Nevelin
<pre><code class="json">
270 1
{
271 27 Troex Nevelin
    "current": "b4473c8c08d1d499ecd7112f3398f125", // (String) hash пути к директории, в которой были созданы миниатюрки
272 29 Troex Nevelin
    "images" : {                                   // (Object)
273 29 Troex Nevelin
        "a696323d7fd86513754004ba8bc12967":        // (String) hash пути файла
274 30 Troex Nevelin
            "http://localhost:8001/~troex/git/elfinder/files/.tmb/a696323d7fd86513754004ba8bc12967.png"
275 30 Troex Nevelin
                                                   // (String) URL миниатюрки
276 27 Troex Nevelin
    }, 
277 27 Troex Nevelin
    "tmb": true  // (Boolean) возвращает true если ещё остались картинки для которых не были созданы миниатюрки,
278 27 Troex Nevelin
                 // иначе параметр отсутствует
279 1
}
280 29 Troex Nevelin
</code></pre>
281 8 Troex Nevelin
282 8 Troex Nevelin
h3. mkdir
283 8 Troex Nevelin
284 1
Создать новую папку.
285 1
286 1
Аргументы:
287 1
* *cmd* : mkdir
288 30 Troex Nevelin
* *current* : hash директории, в которой создаем новую директорию
289 30 Troex Nevelin
* *name* : имя новой директории
290 1
291 30 Troex Nevelin
Ответ: [[Client-Server_Protocol_RU#open|open]] с деревом директорий _tree_ и
292 30 Troex Nevelin
* *select* : hash новой директории
293 9 Troex Nevelin
294 9 Troex Nevelin
h3. mkfile
295 9 Troex Nevelin
296 1
Создать новый файл.
297 9 Troex Nevelin
298 9 Troex Nevelin
Аргументы:
299 1
* *cmd* : mkfile
300 30 Troex Nevelin
* *current* : hash директории, в которой создаем файл
301 1
* *name* : имя нового файла
302 1
303 30 Troex Nevelin
Ответ: [[Client-Server_Protocol_RU#open|open]] и
304 30 Troex Nevelin
*select* : hash нового файла
305 9 Troex Nevelin
306 9 Troex Nevelin
h3. rename
307 9 Troex Nevelin
308 30 Troex Nevelin
Переименование директории/файла
309 1
310 9 Troex Nevelin
Аргументы:
311 9 Troex Nevelin
* *cmd* : rename
312 30 Troex Nevelin
* *current* : hash директории, где файл находится
313 30 Troex Nevelin
* *target* : hash директории/файла для переименования
314 30 Troex Nevelin
* *name* : новое имя директории/файла
315 1
316 30 Troex Nevelin
Ответ: [[Client-Server_Protocol_RU#open|open]], если переименовали директорию по open возвращается с деревом директорий
317 30 Troex Nevelin
*select* : hash переименованной директории/файла
318 1
319 1
h3. upload
320 1
321 1
Загрузка файлов
322 1
323 1
Аргументы (передаются методом POST):
324 1
* *cmd* : upload
325 30 Troex Nevelin
* *current* : hash директории, в которую загружаем файлы
326 9 Troex Nevelin
* *files* : массив файлов
327 9 Troex Nevelin
328 1
Ответ:
329 1
330 30 Troex Nevelin
1. Если ни одного файла не удалось загрузить, возвращаем только
331 30 Troex Nevelin
<pre><code class="json">
332 30 Troex Nevelin
{
333 30 Troex Nevelin
    "error" : "Unable to upload files"
334 1
}
335 30 Troex Nevelin
</code></pre>
336 1
337 30 Troex Nevelin
2. Если хотя бы один файл был загружен, ответ [[Client-Server_Protocol_RU#open|open]] и
338 30 Troex Nevelin
<pre><code class="json">
339 30 Troex Nevelin
{
340 30 Troex Nevelin
    // open
341 30 Troex Nevelin
    "select"    : [],                              // (Array)  массив hash'ей путей загруженных файлов
342 30 Troex Nevelin
    "error"     : "Some files was not uploaded",   // (String) если не все файлы были загружены
343 30 Troex Nevelin
    "errorData" : {                                // (Object) инф. о файлах, которые не удалось загрузить
344 30 Troex Nevelin
        "some-file.exe" : "Not allowed file type", // (String) "имя файла": "ошибка"
345 30 Troex Nevelin
        // ...
346 30 Troex Nevelin
    }
347 30 Troex Nevelin
}
348 30 Troex Nevelin
</code></pre>
349 30 Troex Nevelin
350 1
h3. ping
351 9 Troex Nevelin
352 1
Служебная команда. Необходима для исправления бага Safari при загрузке файлов http://www.webmasterworld.com/macintosh_webmaster/3300569.htm
353 9 Troex Nevelin
354 1
Аргументы:
355 9 Troex Nevelin
*cmd* : ping
356 9 Troex Nevelin
357 30 Troex Nevelin
Ответ: отсылает пустую страницу с заголовком @Connection: close@
358 9 Troex Nevelin
359 9 Troex Nevelin
h3. paste
360 9 Troex Nevelin
361 30 Troex Nevelin
Копирует или перемещает директории/файлы
362 9 Troex Nevelin
363 1
Аргументы:
364 1
* *cmd* : paste
365 1
* *src* : hash папки, из которой перемещаем/копируем файлы
366 9 Troex Nevelin
* *dst* : hash папки, в которую перемещаем/копируем файлы
367 1
* *files* : массив hash'ей копируемых папок/файлов
368 9 Troex Nevelin
* *cut* : true, если файлы перемещаем
369 9 Troex Nevelin
370 1
Ответ:
371 9 Troex Nevelin
Если не удалось скопировать/переместить хотя бы один файл
372 1
*error* : сообщение об ошибке
373 9 Troex Nevelin
374 9 Troex Nevelin
Если копирование/перемещение прошло успешно, возвращаем то же, что и [[Client-Server_Protocol_RU#open|open]], плюс
375 9 Troex Nevelin
* *tree* : дерево директорий
376 1
377 1
*Внимание!* Команда должна прекращать копирование при первой же ошибке. Не допускается перезапись файлов/директорий с одинаковыми именами
378 11 Troex Nevelin
379 11 Troex Nevelin
h3. rm
380 11 Troex Nevelin
381 1
Удаление файлов и рекурсивное удаление директорий
382 1
383 1
Аргументы:
384 1
* *cmd* : rm
385 1
* *current* : hash папки, из которой удалем файлы
386 28 Troex Nevelin
* *rm* : массив hash'ей удаляемых папок/файлов
387 1
388 11 Troex Nevelin
Ответ:
389 1
Всегда такой же как у open, плюс
390 1
tree : дерево директорий
391 1
error : "Unable to remove file", //если была ошибка удаления
392 1
errorData : {} //если была ошибка удаления - инф о файлах, который не удалось удалить (аналогично ошибке в upload)
393 11 Troex Nevelin
394 11 Troex Nevelin
h3. duplicate
395 11 Troex Nevelin
396 1
Создает копию папки/файла. Имя копии формируется следующим образом: базовое_имя_файла copy+порядковый номер.расширение(если есть)
397 1
398 1
Аргументы:
399 1
* *cmd* : duplicate
400 1
* *current* : hash папки, в которой создаем дубликат
401 11 Troex Nevelin
* *file* : hash папки/файла, для которого создаем дубликат
402 1
403 1
Ответ:
404 1
tree : дерево директорий, // если создали дубликат для папки
405 1
select : hash пути дубликата
406 11 Troex Nevelin
407 11 Troex Nevelin
h3. read
408 11 Troex Nevelin
409 1
возвращает содержимое текстового файла.
410 1
411 1
Аргументы:
412 1
* *cmd* : edit
413 11 Troex Nevelin
* *current* : hash папки, в которой читаем файл
414 1
* *file* : hash файла
415 1
416 1
Ответ:
417 1
content : содержимое текстового файла
418 11 Troex Nevelin
419 11 Troex Nevelin
h3. edit
420 11 Troex Nevelin
421 11 Troex Nevelin
сохраняет текст в файл
422 1
423 1
Аргументы (передаются методом POST):
424 1
* *cmd* : edit
425 1
* *current* : hash папки, в которой сохраняем файл
426 1
* *file* : hash файла
427 1
* *content* : новое содержимое файла
428 1
429 1
Ответ:
430 1
file : {// объект, аналогичный объекту, описывающему файл в cdc команды open
431 1
  'name'  : Имя файла,
432 1
  'hash'  : hash пути,
433 1
  'mime'  : mime-тип
434 1
  'date'  : отформатированая дата изменения файла, 
435 1
  'size'  : размер,
436 1
  'read'  : права на чтение,
437 11 Troex Nevelin
  'write' : права на запись,
438 11 Troex Nevelin
  'rm'    : права для удаления,
439 1
  'resize' : true (только для картинок, которые можно ресайзить)
440 1
}
441 1
442 11 Troex Nevelin
h3. extract
443 11 Troex Nevelin
444 11 Troex Nevelin
распаковывает архив
445 1
446 1
Аргументы:
447 1
* *cmd* : extract
448 1
* *current* : hash папки, в которой находится файл
449 28 Troex Nevelin
* *target* : hash файла архива
450 1
451 1
Ответ:
452 1
Такой же как у команды open, плюс
453 1
tree : дерево директорий
454 11 Troex Nevelin
455 11 Troex Nevelin
h3. archive
456 11 Troex Nevelin
457 11 Troex Nevelin
упаковывает папки/файлы в архив
458 1
459 1
Аргументы:
460 1
* *cmd* : archive
461 11 Troex Nevelin
* *type* : mime-тип создаваемого архива
462 1
* *current* : hash папки, в которой находятся добавляемые в архив папки/файлы
463 11 Troex Nevelin
* *files* : массив хэшей папок/файлов
464 1
465 1
Ответ:
466 1
Такой же как у команды open, плюс
467 1
* *select* : hash нового архива
468 11 Troex Nevelin
469 11 Troex Nevelin
h3. resize
470 11 Troex Nevelin
471 11 Troex Nevelin
изменяет размер изображения
472 11 Troex Nevelin
473 1
Аргументы:
474 1
* *cmd* : resize
475 1
* *current* : hash папки, в которой находится файл
476 1
* *file* : hash пути картинки
477 1
* *width* : новая ширина картинки
478 1
* *height* : новая высота картинки
479 1
480 1
Ответ:
481 1
Такой же как у команды open