Содержание
- Дневник разработки #1. Постановка задачи
- Дневник разработки #2. Выбор инструментария
- Дневник разработки #3. Проектирование БД
- Дневник разработки #4. Уход в сторону
- Дневник разработки #5. Неожиданный финал
Введение
Сильное желание не создавать свой собственный велосипед порой может сильно отсрочить решение поставленной задачи, а так как у меня сроки в целом были ничем не ограничены, я долго гуглил, пока не нагуглил-таки IFTTT.Maker. Потрясающе простой интерфейс для вызова всевозможных событий простым запросом через сеть.
IFTTT работает по принципу: если что-то случилось, сделать то-то. Если ко второй части привесить канал TODOist, то в целом выйдет то самое приложение, которое я хотел написать изначально:
- Maker принимает запрос
- Отправляет данные в TODOist
- TODOist формирует новый элемент в списке задач
- …
- ПРОФЕТ!
Я был очень рад тому, что кто-то проделал кучу работы за меня, и можно пожинать плоды. Мне оставалось лишь написать кастомынй скрипт для PhantomBot, который будет обрабатывать запрос пользователя и отправлять данные в Maker.
Java
Оказалось, что взять и написать что-то на Java очень сложно, не имея никакого опыта работы с этим языком. Не понимамю, почему разработчики не добавят поддержку jQuery… Но я сам всё написал! Единственный мой косяк, который помог исправить Тоха, был в том, что я забыл Content-Type, и Maker не понимал, что за данные я ему шлю, в итоге элемент списка создавался пустым. Код получился весьма специфичным, он использует классы разработчиков бота и больше нигде не годен:
var URL = 'https://maker.ifttt.com/trigger/twitchbot/with/key/MySEcRetKyE'; var JSONObject = Packages.org.json.JSONObject, data = new JSONObject(); data.put("value1", sender); data.put("value2", target); var HttpResponse = Packages.com.gmt2001.HttpResponse; var HttpRequest = Packages.com.gmt2001.HttpRequest; var HashMap = Packages.java.util.HashMap; var header = new Packages.java.util.HashMap(1); header.put('Content-Type', 'application/json; charset=UTF-8'); var response = HttpRequest.getData(HttpRequest.RequestType.POST, URL, data.toString(), header);
В JSON собирается имя пользователя, написавшего в чат что-то вроде:
JackyFox: !go Invoker
И первый аргумент (в данном случае «Invoker»). Дальше много-много переопределений, и потом БАЦ — POST-запрос ушел к серверу.
Заключение
Сейчас допишу возврат средств при ошибке передачи данных, чтобы вручную этого не делать (контроль ошибок к счастью предусмотрен), а потом бац-бац и в продакшн =)