XlsxProxy - загрузка табличных данных с ЯндексДиск, GoogleDocs или своего сервера

В свете последних новостей (тут и тут) про будущие блокировки иностранных облачных сервисов для всех пользователей в РФ было решено подготовиться к прозрачной миграции таблиц с GoogleDocs на ЯндексДиск или свой сервер.
Требуется поддержка таблиц с несколькими страницами, чтобы была возможность в режиме реального времени редактировать их локализатору или гейм-дизайнеру и результаты были доступны в приложении через несколько секунд.
В качестве формата хранения был выбран xlsx - переносим между хостингами, умеет в формулы, поддерживается опенсорсными редакторами, включая онлайн-реализации.
Но напрямую с xlsx-документами на клиенте работать неудобно, слишком “жирные” библиотеки придется таскать с собой. Так появился xlsxproxy - сервер, проксирующий запросы к xlsx-документам, лежащим по указанным url-адресам, разбирающий их на отдельные страницы и отдающий только нужную в формате csv.
Особенности сервера:
- Написан на
golang, потребляет пару десятков мегабайт памяти, хорошо себя ведет под нагрузкой. - Умеет собираться/работать в
docker, образ занимает меньше 10Мб. - Есть поддержка аутентификации для нескольких пользователей.
- Есть поддержка
ssl-ключи дляhttps-шифрации трафика - будет полезным для тех, кто не хочет настраивать фронт-прокси на базе какого-нибудьnginxдля этого. - Есть поддержка кеширования для уменьшения нагрузки на внешние сервисы и снижения риска быть забаненными за многократное скачивание за короткий период (банят на короткий срок, но все-равно неприятно).
Сервер поддерживает xlsx-документы, доступные по прямым ссылкам (CDN, свой файловый хостинг, например, Seafile + OnlyOffice DocumentServer):
1 | curl -L "http://my.proxy.site/direct?url=<url-encoded-ссылка>&page=<url=encoded-имя-страницы>" |
Так же есть поддержка xlsx-документов на ЯндексДиск, доступные по ссылкам из веб-интерфейса окна “Поделиться” (https://disk.yandex.ru/i/aABbCcDdEeFfGg):
1 | curl -L "http://my.proxy.site/yandex?url=<url-encoded-ссылка>&page=<url=encoded-имя-страницы>" |
Для облегчения миграции была добавлена поддержка таблиц-документов и для GoogleDocs, доступные по ссылке из адресной строки браузера (https://docs.google.com/spreadsheets/d/111222__AaaBbb/edit?gid=1548517124):
1 | curl -L "http://my.proxy.site/google?url=<url-encoded-ссылка>&page=<url=encoded-имя-страницы>" |
Пакет Leopotam.GoogleDocs.Unity был расширен новым функционалом для облегчения работы с xlsxproxy-сервером.
Поддержка скачивания с прямой ссылки:
1 | // Адрес xlsxproxy-сервера, включая порт и префикс апи. |
Поддержка скачивания с YandexDisk:
1 | string xlsxProxy = "http://my.proxy.site"; |
Поддержка скачивания с GoogleDocs:
1 | string xlsxProxy = "http://my.proxy.site"; |
Так же поддерживается http basic аутентификация:
1 | string xlsxProxy = "http://my.proxy.site"; |