Чтобы интегрировать AlterOffice Online в ваше веб-приложение, вам необходимо реализовать Rest-сервис на основе API WOPI. Этот Rest-сервис как правило интегрируется в ваше веб-приложение.
Протокол интерфейса открытой платформы веб-приложений (WOPI) определяет набор операций, которые позволяют клиентам получать доступ и изменять файлы, хранящиеся на сервере. Вы можете ознакомиться с документацией по этому протоколу на сайте WOPI REST API Reference | Microsoft Learn
WOPI-хост
WOPI-хост - это Rest-сервис, основанный на API WOPI. Для реализации WOPI-хоста в вашем сервисе вам необходимо создать три конечных точки.
- CheckFileInfo - GET /wopi/files/{name}. Эта конечная точка возвращает JSON-объект, предоставляющий информацию о файле {name}.
Пример реализации на python Flask:
@app.route('/wopi/files/<name>', methods=['GET'])
def check_file_info(name):
path = f"/home/user1/wopi_flask/{name}"
filename = os.path.basename(path)
size = os.path.getsize(path)
# Получаем информацию о файле
file_info = {
'BaseFileName': filename,
'Size': size,
'UserId': 1,
'UserCanWrite': True,
}
# Возвращаем информацию о файле в формате JSON
return jsonify(file_info)
- GetFile - GET /wopi/files/{name}/contents. Эта конечная точка предоставляет исходные данные файла и вызывается AlterOffice Online для открытия файла.
Пример реализации на python Flask:
@app.route('/wopi/files/<name>/contents', methods=['GET'])
def get_file(name):
with open(f"/home/user1/wopi_flask/{name}", 'r') as file:
content = file.read()
return content
- PutFile - POST /wopi/files/{name}/contents. Эта конечная точка вызывается AlterOffice Online, при сохранении файла.
Пример реализации на python Flask:
@app.route('/wopi/files/<name>/contents', methods=['POST'])
def put_file(name):
content = request.stream.read()
result = {"name": name, "content": content.decode()}
with open(f"/home/user1/wopi_flask/{name}", "w") as f:
f.write(result["content"])
return jsonify(result)
Более подробное описание этих конечных точек приведено в статье: https://support.almi-partner.ru/#knowledge_base/1/locale/ru/answer/152
Интеграция
После создания вышеуказанных конечных точек и запуска вашего сервиса вы можете открыть текстовый файл в редакторе AlterOffice Online. Для этого необходимо составить URL-адрес из двух частей. Первая часть - это urlsrc необходимого формата файла. Urlsrc можно посмотреть открыв конечную точку discovery вашего AlterOffice Online сервера: https://localhost:9980/hosting/discovery. Вторая часть это WOPI-хост с необходимым файлом, ссылка должна быть в закодированном виде (url encode). Финальная ссылка выглядит следующим образом:
https://localhost:9980/{alteroffice-editor}.html?WOPISrc=http%3A%2F%2Fwopi-app%3A5000%2Fwopi%2Ffiles%2F{file}