-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathТЗ.txt
43 lines (29 loc) · 3.81 KB
/
ТЗ.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
Напишите [ASP.NET](http://ASP.NET) приложение для эмуляции отправки уведомлений.
Приложение должно предоставлять следующее API:
- Метод для создания и одновременной отправки уведомления, который должен сохранять его в памяти или в персистентном хранилище (на Ваш выбор).
Метод должен возвращать идентификатор уведомления и статус его отправки.
Т.к. это всего лишь тестовое задание, то отправка осуществляется в рамках вызова этого же метода.
Никакие отложенные задачи, retry-политики, очереди и т.д. использовать не нужно.
- Метод для получения статуса отправки уведомления (Доставлено/Не доставлено) по его идентификатору.
На данный момент, уведомления могут быть двух видов:
1. Для iOS-устройств.
2. Для Android-устройств.
Для iOS устройств уведомление представляет из себя:
- PushToken - строка до 50 символов. Уникальный идентификатор девайса, куда будет отправлено уведомление. Поле обязательное.
- Alert - строка до 2000 символов. Само сообщение. Поле обязательное.
- Priority - целое число. По умолчанию должно принимать значение 10.
- IsBackground - булево значение. По умолчанию должно принимать значение true.
Для Android устройств уведомление представляет из себя:
- DeviceToken - строка до 50 символов. Уникальный идентификатор девайса, куда будет отправлено уведомление. Поле обязательное.
- Message - строка до 2000 символов. Само сообщение. Поле обязательное.
- Title - строка до 255 символов. Поле обязательное.
- Condition - строка до 2000 символов. Поле является опциональным.
В зависимости от типа уведомления должен быть выбран определенный NotificationSender (сервис, который фактически отправляет уведомление).
Сам NotificationSender может быть реализован примитивным образом с использованием Task.Delay и Logger (в лог необходимо вывести user-friendly имя текущего NotificationSender и само уведомление).
Ожидаем увидеть в решении:
- Unit-тесты
- Готовность сервисов к расширению (насколько сложно добавить поддержку нового типа уведомления, например, по Email)
Приложение должно запускаться без дополнительной конфигурации или установки дополнительного ПО.
Наш стек: .NET 5 (и выше) + PostgreSQL + Docker.
При сомнениях делайте выбор в пользу самой простой, но соответствующей требованиям реализации.
Принятые решения и допущения опишите в readme.md