Привет всем!
Интегрирую возможность файловой шары через Synology в сторонней системе.
Знаю что имеется API, описание всех доступных методов которого есть: */webapi/query.cgi?api=SYNO.API.Info&version=1&method=query&query=ALL
Авторизоваться в нем удалось. Загружать и шарить файлы и папки тоже, однако для удобной работы с файлами,
необходимо наладить предпросмотр документов. Знаю что имеется Synology Office, который без труда это делает, но делает он это только в интерфейсе своего приложения.
Мне же нужно таль пользователю прямую ссылку на файл с предпросмотром - при этом чтоб сам пользователь оставался в своей домашней системе и даже не знал о существовании Synology.
Техническая поддержка о моем вопросе про методы SYNO.Office. и SYNO.SynologyDrive. отписались что хоть эти методы и перечислены в списке доступных, но фактичекски они еще не доступны для использования, и когда-нибудь таковыми все же станут.
Однако, мне удалось выловить "фидлером" запросы которые делает интерфейс при осуществление предросмотра файла и формировании специальной ссылки на это, которая доступна даже не авторизованному пользователю.
Ссылка вида: /?launchApp=SYNO.SDS.Office.Doc.Application#id=198276_DIOAFHO72131T0D7H6LNR2HG18.s
ynoffice.doc - где DIOAFHO72131T0D7H6LNR2HG18 каждый раз уникален для одного и того же файла при формировании запроса на пердпросмотр.
Процесс получения этого идентификатора состоит из нескольких запросов (как минимум двух):
1.POST https://test-nas.srvhub.ru:5323/webapi/entry.cgi HTTP/1.1
.
.
.
password=""&files=[{"format":"ds","path":"/CrmDocs/test/file.xlsx","to_parent_folder":"/volumes/volume1/CrmDocs/test/file.xlsx","viewonly":true}]&api=SYNO.Office.Import&method=start&version=1
Response:
50
{"data":{"task_id":"ivanov_ii/office_Import5E2942E81918E759"},"success":true}
0
2.
POST https://test-nas.srvhub.ru:5323/webapi/entry.cgi HTTP/1.1
.
.
.
stop_when_error=false&mode="parallel"&compound=[{"api":"SYNO.Office.Import","method":"status","version":1,"task_id":"ivanov_ii/office_Import5E29396FF3B366CE"}]&api=SYNO.Entry.Request&method=request&version=1
Response:
3bd
{"data":{"has_fail":false,"result":[{"api":"SYNO.Office.Import","data":{"auto_remove":false,"data":{"current":3,"file_info":[{"ctime":1579762408,"editors":[],"encrypt":false,"id":"198276_GVOGJG803L7E3ARETQRDRSP9P8.synoffice.sh","link_id":"","mtime":1579762408,"ntype":"sheet","object_id":"198276_GVOGJG803L7E3ARETQRDRSP9P8.synoffice.sh","title":"Почты руководителей","ver":"5f6c23b8dbd80d5a677f545d728fcf162b1d3d1d"}],"finish_time":1579762408,"object_id":["198276_GVOGJG803L7E3ARETQRDRSP9P8.synoffice.sh"],"pid":12587},"finish":true,"info":{"api":"SYNO.Office.Import","group":"","method":"start","param":{"files":[{"format":"ds","path":"/CrmDocs/test/file.xlsx","to_parent_folder":"/volumes/volume1/CrmDocs/test/file.xlsx","viewonly":true}],"password":""},"prefix":"office_Import","version":1},"success":true},"method":"status","success":true,"version":1}]},"success":true}
0
В результате последнего мы получаем: 198276_GVOGJG803L7E3ARETQRDRSP9P8.synoffice.sh - тот самый уникальный ID по которому становится доступна страница предпросмотра. Остается только добавить его в конец URL и вуаля.
Значит SYNO.Office. - методы все же функционируют и используются системой. Однако воспроизвести эти самые запросы ручками у меня не получилось, вернее сервер отвечает 114 ошибкой на подобный запрос с использованием _sid.
Собственно это вся история на данный момент.
А вопрос следующий: удавалось ли кому-нибудь и главное как, реализовать получение ссылки на предпросмотр документа из расшареной папки средствами API, для выдачи ссылки на такую страницу не авторизованному в Synology пользователю?
Спасибо за внимание. Обещаю отписаться о своих изысканиях, здесь если таковые окажутся успешными.