Рубрики
Без рубрики

Легкий и единый способ отправить уведомления

Пока я работал над определенным проектом (удивительный Flexget), мне нужно было создать класс уверенности … Теги с Python, Showdev, уведомлениями.

Пока я работал над определенным проектом (удивительный Flexget ) Мне нужно было создать класс плагинов Notifier, которые позволят пользователям отправлять Push-уведомления к своему уведомлению поставщика выбора. Это быстро стало очевидно, что это не было небольшого предприятия, так как оно означало дайвинг в API каждого провайдера и пытаясь реализовать его.

По пути вы столкнулись с запутанными документами, отсутствующими документами, нерегулярными шаблонами реагирования, различных форматов ответа, различных правил взаимодействия и т. Д. Некоторые провайдеры поставляют свои собственные SDK, но это означает, что добавляют больше зависимостей в уже зависимость богатого проекта, не говоря уже о том, что не все эти зависимости были ухожены, либо даже поддерживаются вообще. Должен быть лучшим способом правильно?

Ну, оказалось не было, или, по крайней мере, я не мог найти один, поэтому я решил создать уверенность , общий способ взаимодействия со многими поставщиками уведомлений.

Создавая единый интерфейс, я смог предоставить простому способу взаимодействия с любым реализованным поставщиком уведомлений, независимо от вопросов, которые я упоминал ранее.

Как это сделано

Поставщики уведомлений API (и любые другие API для этого) имеют две вещи, которые они делятся. Они принимают аргументы, некоторые из которых требуются и вернут ответ.

Для общего реализации первой части я решил представлять каждую API провайдера через схему JSON, которая очень популярна, а не на Python. Например, SimplePush Коррелирующая схема JSON API для уведомления выглядит так:

{
    "type": "object",
    "properties": {
        "key": {
            "type": "string",
            "title": "your user key"
        },
        "message": {
            "type": "string",
            "title": "your message"
        },
        "title": {
            "type": "string",
            "title": "message title"
        },
        "event": {
            "type": "string",
            "title": "Event ID"
        }
    },
    "additionalProperties": false,
    "required": [
        "key",
        "message"
    ]
}

Очевидно, что другие схемы поставщика уведомлений могут и выглядеть намного сложнее, чем этот, но точка ясна. Очень возможно представлять схему API, как так.

Следующая часть отправляет уведомление и универсальное обращение с ответом и/или ошибками. Это делается почти исключительно через HTTP-запросы, что, конечно, означает использование Запросы ) модуль.

Это одна из частей, которые требуют самых тщательных исследований, поскольку каждый поставщик выбирает другой способ реализации их API. Некоторые провайдеры хотят Получить Запрос, большинство предпочитают Пост Запрос, некоторые используют тип контента, кодируемый URL-кодировкой, один предпочитает корпус JSON, некоторые хотят, чтобы авторизация переносилась через заголовки, некоторые через параметры URL и т. Д.

Как только запросы отправляются, ответ проанализируется на объект внутреннего ответа и возвращен пользователю. И вот это, самый простой способ отправить уведомления!

Исходный код: https://github.com/liiight/notifiers

Оригинал: “https://dev.to/liiight/an-easy-and-unified-way-to-send-notifications-1eaj”