Я сделялъ
Предисловие
Новый пост от этого шитпостера. Зачем? Почему? Я не знаю. А кто знает?
Послепредисловие
Надо лить воду. Поговорить, например, о змеях. Лично я не люблю змей.
Что еще можно сказать? Как-то опять же... не знаю? Слишком тупой. Слова в предложения формируются довольно-таки сложно.
Почтипослесловие
Если кто-то дочитал до сюда -- мне вас жаль. Здесь было еще два абзаца нытья, но... ну его нахуй.
Короче, как и сказано в заголовке поста: я сделялъ:
Да, это библиотека для работы с API основы через dotnet (5.0+). Кроссплатформенность, десериализация всех (почти) JSON на объекты, хуё-моё, всякое такое. Билды доступны на NuGet. Подробнее в README по ссылке выше написано.
Как небольшой примерчик работы с API в репе находится прога OsnovaImageDownloader -- скачивает все изображения в посте (готовые билды выбрасываются в релизы гитхаба через Appveyor CD). Пользоваться так: `./OsnovaImageDownloader -e entryId -o "outPath" -w dtf`, где:
- -e/--entry-id -- номер поста для загрузки;
- -o/--output -- полный путь к директории для загрузки пикч;
- -w/--website-kind -- дополнительный параметр, тип сайта для скачивания постов, dtf по умолчанию, а так доступны еще tjournal и vc.
Теоретически с помощью библиотеки можно ебануть консольный клиент для очобы, но я с этим запариваться не хочу (по крайней мере в обозримом будущем).
Роадмапа и проблемы на данный момент aka Чего ждать?/Чем я могу помочь?
Чего в библиотеке пока нет? Вообще, все про фичи будет в issues и milestones проекта (если у вас какие-то предложения - милости прошу или сюда в комменты, или опять же на GitHub; лучше туда).
Ближайший релиз -- 1.0.0-rc.1. Главные задачи к этому релизу:
- Дописать все POST-методы (сейчас реализованы все GET-методы, указанные в официальной документации, кроме getPaymentsCheck, getSubsiteSubscribe и getSubsiteUnsubscribe -- оно уже не работает? POST-методов пока маловато);
- Протестить и допилить кастомные JsonConverter'ы (в частности Write'еры, с десериализацией все более-менее в порядке);
- Поменять названия методов/классов, переместить что-то туда, где ему место, архитектуру пофиксить короче. Пока все делаю 1 в 1 со спецификацией API, но она дерьмо ебаное (как и само апи, но щито поделать. Незначительные коррективы я вносил, вроде переименования getEntryCommentsLevelsGet в GetEntryCommentsLevels, но их мало и не все в окончательном виде);
К полноценному релизу версии 1.0.0 планируется:
- Сделать некоторые "расширения" (Osnova.Net.Extensions? Или дополнить существующие классы? Еще не решил), недоступные через API (как редактор статей, например);
- Дописать все xml-доки и красивенько все оформить на github pages через docfx (опыт есть, просто пока не приоритетно);
- Дополнительные свистоперделки для README и организации репы в целом в виде всяких codecov-баджей, issue/pr-темплейтов и т.д;
- Исправить все Warning'и от netanalyzer'ов (анализ после компиляции в командной строке/подсветка дрисни в Visual Studio);
- Доделать дополнительные классы, вроде TelegramData, TwitterData (обсуждение: это нужно вообще, или стоит оставить object'ом? Если оно было десериализовано нормально, то и обратно в JSON ложится вполне себе хорошо);
- Протестить аутентификацию через соцсети и QR-код. Простагма пытался мне помочь с получением кода, но я слишком тупой и не понял, так что с этими двумя пунктиками НУЖНА ПОМОЩЬ!;
- ПОСТ ДОПОЛНЯЕТСЯ НЕ РЕДАКЦИЕЙ
К релизу 1.1.0 планируется:
- Доделать работу с WebSocket (пока реализован только посредственный клиент, код которого на 90% спизжен со stackoverflow);
- Сделать тесты с моками (сейчас они РЕАЛЬНО отправляют запросы к API. Я знаю. Я знаю...);
С чем нужна помощь? Помимо того, что указано выше - отзывы! Но в идеале pull request'ы с реализованными фичами, хе-хе. Я как-нибудь напишу CONTRIBUTING, чтобы было понятно, как дополнять библиотеку, там все очень просто.
Но если кто-то что-то будет делать, гонять данные и тому подобное и будут возникать проблемы или охуительные идеи -- пишите в issues. Плюс, я не уверен, что нашел ВСЕ виды блоков, да и доступа к редакторским у меня нет. Какие-то отыскал, но наверняка не все. А документация нихера не помогает (пост НЕНАВИСТИ будет... когда-нибудь).
Да и не со всеми моментами я смог полностью разобраться.
И все же послесловие
Мне стыдно за мой говнокод, чего скрывать. Но все равно захотелось поделиться - мало ли кому пригодится. Пусть и говнокод...
Сам я хотел сделать только загрузчик картинок под свои нужды, потом мне захотелось написать свою реализацию постилки сейбы (just for fun), но без внешних зависимостей и по возможности через API, ну а затем уже родилась и идея библиотеки. Сегодня последний день моего двухнедельного отпуска, за время которого я и наебенил этого кода, поэтому я старался как можно быстрее сделать хотя бы все GET-методы. Возможно дальше разработка пойдет немного медленнее...
Ну и в конце-концов -- это мое GNUсное дело.
Отдельное спасибо
- Prostagma? за помощь с QR, небольшую консультацию по WebSocket'ам и загрузке файлов через API;
- Farid за тестирование некоторых методов этого адского API и предоставление мне JSON'ов для экономии времени;
- Saber-nyan за вдохновение -- если бы не его постилка, я бы не решился!