1. Введение
2. Запросы
2.1. Регистрация
2.2. Авторизация
2.3. Работа с файлами
2.4. Работа с окнами
2.5. Управление аккаунтом
2.6. Поиск
Общение с сервером происходит в json формате. Кодировка UTF-8. Данные передаются POST или GET запросом. Все запросы принимаются по адресу:
http://kirlink.com/__ENGINE/lib/Ajax.php
Для идентификации пользователя, требуется передавать серверу логин и сессию (она выдается при авторизации) в массиве cookies.
Пример отправки запроса на создание ссылки:
{"mode":"createLink", "id":"new_0", "x":23, "y":30, "z":3000, "location":101, "full_location":"0_101"}
Получаем в случае успеха:
{"status":"ok", "type":"link", "last_id":"new_0", "id":8420}
В случае ошибки:
{"status":"error", "text":"текст ошибки"}
Идентификатор окна такой-же как и у иконки, которой оно принадлежит.
По всем техническим вопросам и ошибкам, можно писать на admin@kirlink.com
Проверка логина | почтового ящика GET
mode: check
login | email: pupkin | pupkin@gmail.com — проверка логина или почтового ящика, чтобы не были заняты и имена соответствовали правилам
Запрос: {"mode":"check", "login":"pupkin"} Успешно: {"status":"ok", "type":"login", "login":"pupkin"} Ошибка: {"status":"error", "type":"login", "login":"pupkin", "text":"Текст ошибки"}
Регистрация GET
mode: registration
login: pupkin — логин
email: pupkin@gmail.com — почтовый ящик
password: jfs37DOx — пароль
captcha: 386306 — капча
Запрос: {"mode":"registration", "login":"pupkin", "email":"pupkin@gmail.com", "password":"jfs37DOx", "captcha":386306} Успешно: {"status":"ok", "action":"registration, "text":"Сообщение о том что код активации был выслан на email"} Ошибка: {"status":"error", "action":"registration", "type":"password", "text":"Текст ошибки"}
Активация GET
activate: 7gfhdf45p56gsdf0hjf4dfgbsder46j0456vqgh56tyhtryv56 — код активации, ранее высланный на почту
Обращение идет не к http://kirlink.com/__ENGINE/lib/Ajax.php, а на прямую http://kirlink.com/?activate=7gfhdf45p56gsdf0hjf4dfgbsder46j0456vqgh56tyhtryv56
При успехе, записывает в массив cookies значение сессии session и логин login
Войти GET
mode: enter
login: pupkin — логин
password: jfs37DOx — пароль
email: pupkin@gmail.com — почтовый ящик
Запрос: {"mode":"enter", "login":"pupkin", "password":"jfs37DOx"} Успешно: {"status":"ok", "action":"enter", "session":"7gfhdf45p56gsdf0hjf4dfgbsder46j0456vqgh56tyhtryv56", "email":"pupkin@gmail.com"} Ошибка: {"status":"error", "action":"enter", "text":"Текст ошибки"}
Создать файл POST
mode: create
type: link — тип создаваемого файла (link | folder | txt)
id: new_0 — идентификатор, присвоенный файлу клиентом
x: 34 — в процентах от 0 до 100
y: 64 — в процентах от 0 до 100
z: 3045 — глубина иконки, целое число
location: 4938 — идентификатор папки в которой надо создать файл
full_location: 0_4938 — полный путь до папки в которой создается файл
Запрос: {"mode":"create", "type":"link", "id":"new_0", "x":34, "y":64, "z":3045, "location":4938, "full_location":"0_4938"} Успешно: {"status":"ok", "action":"create", "type":"link", "last_id":"new_0", "id":3452} Ошибка: {"status":"error", "action":"create", "type":"link", "text":"Текст ошибки"}
Рабочий стол, имеет идентификатор 0.
В случае успеха, возвращается идентификатор файла присвоенный ему сервером.
Параметр type может принимать следующие значения - link, folder, txt.
Копировать файл POST
mode: copy
type: link — тип копируемого файла (link | folder | txt | html | image | undefined)
id: 3452 — идентификатор копируемого файла
x: 34 — в процентах от 0 до 100
y: 64 — в процентах от 0 до 100
z: 3045 — глубина иконки, целое число
location: 4938 — идентификатор папки в которую копируем файл
full_location: 0_4938 — полный путь до папки в которую копируем файл
Запрос: {"mode":"copy", "type":"link", "id":3452, "x":34, "y":64", "z":3045, "location":4938, "full_location":"0_4938"} Успешно: {"status":"ok", "action":"copy", "type":"link", "last_id":3452, "id":6734} Ошибка: {"status":"error", "action":"copy", "type":"link", "text":"Текст ошибки"}
В случае успеха, возвращается идентификатор файла присвоенный ему сервером.
Параметр type может принимать следующие значения - link, folder, txt, html, image, undefined.
Вырезать файл POST
mode: cut
type: link — тип вырезаемого файла (link | folder | txt | html | image | undefined)
id: 3452 — идентификатор вырезаемого файла
x: 34 — в процентах от 0 до 100
y: 64 — в процентах от 0 до 100
z: 3045 — глубина иконки, целое число
location: 4938 — идентификатор папки в которую копируем файл
full_location: 0_4938 — полный путь до папки в которую копируем файл
Запрос: {"mode":"cut", "type":"link", "id":3452, "x":34, "y":64" "z":3045, "location":4938, "full_location":"0_4938"} Успешно: {"status":"ok", "action":"cut", "type":"link"} Ошибка: {"status":"error", "action":"cut", "type":"link", "text":"Текст ошибки"}
Удалить файл
mode: delete
id: 3624 — идентификатор файла
x: 34 — (необязательно)
y: 64 — (необязательно)
z: 3045 — (необязательно)
location: 4938 — идентификатор удаленной папки (необязательно)
Запрос: {"mode":"delete", "id":3624} Успешно: {"status":"ok", "action":"delete", "id":3624} Ошибка: {"status":"error", "action":"delete", "text":"Текст ошибки"}
Если при удалении вы хотите изменить координаты удаляемого файла, передайте значения x, y, z нового положения иконки. Например такое может произойти, если удалять не через контекстное меню, а перетаскиванием на окно корзины.
Если вы хотите переместить файл в удаленную папку, а не в саму корзину - укажите в параметре location идентификатор удаленной папки.
Восстановить файл
mode: undelete
id: 3624 — идентификатор файла
x: 34 — (необязательно)
y: 64 — (необязательно)
z: 3045 — (необязательно)
location: 4938 — идентификатор папки в которую восстанавливают файл (необязательно)
Запрос: {"mode":"undelete", "id":3624} Успешно: {"status":"ok", "action":"undelete", "id":3624} Ошибка: {"status":"error", "action":"undelete", "text":"Текст ошибки"}
Изменить название и/или адрес ссылки POST
mode: edit
id: 4562 — идентификатор ссылки
title: новое название — новое название файла (необязательно)
url: http://ya.ru/ — новый адрес ссылки (необязательно)
Запрос: {"mode":"edit", "id":4562, "title":"новое название", "url":"http://ya.ru/"} Успешно: {"status":"ok", "action":"edit", "type":"title-url", "id":4562, "favicon":"data:image/png;base64,AAABAAEAE..AAEA"} Ошибка: {"status":"error", "action":"edit", "type":"title-url", "text":"Текст ошибки"}
Возвращаемый type, будет зависить от того, какие изменения мы совершаем:
"type":"url" — адрес ссылки
"type":"title" — название файла
"type":"title-url" — название и адрес ссылки
Адрес ссылки, можно изменить только у ссылки.
Если у ссылки был изменен адрес, то будет возвращен дополнительный параметр "favicon".
Изменить координаты окна или иконки POST
mode: coordinate
type: icon — для какого объекта изменить координаты (icon | window)
id: 4562 — идентификатор объекта
x: 34 — необязательно
y: 54 — необязательно
z: 2346 — необязательно
Запрос: {"mode":"coordinate", "id":4562, "x":34, "y":54, "z":2346} Успешно: {"status":"ok", "action":"coordinate", "type":"icon"} Ошибка: {"status":"error", "action":"coordinate", "type":"icon", "text":"Текст ошибки"}
Получить содержимое папки GET
mode: getContent
id: 3452 — идентификатор папки (-2 - открытые окна, -1 - свернутые папки, 0 - рабочий стол, trash - корзина, стандартные окна)
Запрос: {"mode":"getContent", "id":3452} Успешно: {"status":"ok", "type":"getContent", "content": {"идентификатор №1 (ссылка)": [ "название", "тип", "ссылка", "полный путь", "конечный путь", "x", "y", "фавиконка в формате base64", "доступ: личный доступ - 0, общий доступ - идентификатор файла" ], "идентификатор №2 (папка)": [ "название", "тип", "ссылка", "полный путь", "конечный путь", "x", "y", "фавиконка в формате base64", "доступ: личный доступ - пустое значение, общий доступ - идентификатор файла", "x окна", "y окна", "z окна", "видимость окна: 1 - открыто, 0 - закрыто", "ширина %", "высота %" ] } } Пример успешного запроса: {"status":"ok", "type":"getContent", "content": {3456: [ "Название ссылки", "link", "http://yandex.ru/", "0_4938", 4938, 34, 68, "data:image/png;base64,AAABAAEAE..AAEA", 3456 ], 6347: [ "Название папки", "folder", "/Название папки/", "0_9246", 9246, 47, 72, "", "", 54, 83, 0, 56, 87 ] } } Ошибка: {"status":"error", "type":"getContent", "text":"Текст ошибки"}
Идентификатор папки может принимать значения стандартных окон: winVersion, winRules, winOnload, winAccounts, winAbout, winSettings. Тогда будет возвращен html-содержимое этого окна.
Для получения содержимого корзины, в качестве идентификатора нужно передать значение trash.
В случае успеха возвращается переменная content содержащая массив иконок. Если иконке принадлежит окно (папка, текстовый редактор), то возвращаются дополнительные параметры для окна (расположение, ширина, высота, открытость).
Возвращаемая информация о свернутых окнах, немного отличается Уровень свернутого окна можно определить из значения
Состояние окна GET
mode: winStatus
type: open — состояние окна (open | close | toggle | untoggle)
id: 4562 — идентификатор окна
Запрос: {"mode":"winStatus", "type":"open", "id":4562} Успешно: {"status":"ok", "action":"open", "type":"winStatus"} Ошибка: {"status":"error", "action":"open", "type":"winStatus", "text":"Текст ошибки"}
Состояние окна нужно сохранять на сервер, чтобы при следующем заходе на сайт получить окно в том же виде, каком оно было при последнем заходе.
Размеры окна GET
mode: winResize
id: 4562 — идентификатор окна
w: 45 — ширина (в процентах от экрана)
h: 67 — высота (в процентах от экрана)
Запрос: {"mode":"winResize", "id":4562, "w":45, "h":67} Успешно: {"status":"ok", "action":"resize", "type":"window"} Ошибка: {"status":"error", "action":"resize", "type":"window", "text":"Текст ошибки"}
Восстановить пароль GET
mode: remind
email: pupkin@gmail.com — почтовый ящик на который следует выслать новый пароль
Запрос: {"mode":"remind", "email":"pupkin@gmail.com"} Успешно: {"status":"ok", "action":"remind", "text":"Сообщение о том что новый пароль выслан на email"} Ошибка: {"status":"error", "action":"remind", "text":"Текст ошибки"}
Изменить пароль GET
mode: changePassword
old: jfs37DOx — Старый пароль
new: ls83ks92 — Новый пароль
Запрос: {"mode":"changePassword", "old":"jfs37DOx", "new":"ls83ks92"} Успешно: {"status":"ok", "action":"changePassword", "text":"Сообщение о том что новый пароль выслан на email"} Ошибка: {"status":"error", "action":"changePassword", "text":"Текст ошибки"}
Поиск POST
mode: search
q: что ищем — поисковый запрос
Запрос: {"mode":"search", "q":"что ищем"} Успешно: {"status":"ok", "action":"find", "type":"search", "q":"что ищем", "result": {"3456": [ "Название", "ссылка", "тип" ], "6347": [ "Название ссылки", "http://ya.ru/", "link" ] } } Ошибка: {"status":"error", "action":"find", "type":"search", "text":"Текст ошибки"}
Сменить поисковик POST
mode: changeSearch
title: yandex — может принимать следующие значения - yandex, google, wikipedia
Запрос: {"mode":"search", "title":"yandex"} Успешно: {"status":"ok", "action":"change", "type":"search"} Ошибка: {"status":"error", "action":"change", "type":"search", "text":"Текст ошибки"}