-
Notifications
You must be signed in to change notification settings - Fork 0
3. Домашнє завдання №3
Абстрактний тип даних GUser ADT повинен діставати головну інформацію для подальшого аналізу і статистичного відображення її нашим веб-додатком. Ця інформація містить у собі кількість листів за останній місяць по категоріям("Promotions", "Social", "Updates" і тд.), також вона містить кількість листів надіслано окремо кожним відправником, який належить до одної з категорій. Також GUser ADT надає функціонал відписки від надсилання повідомленьі видалення їх за конкретним відпраником. GUser ADT дістає інформацію про кількість прочитаних та непрочитаних листів за останній місяць.
- Контейнером для збереження інформації виступає Dictionary.
- Інформаційна структура повинна виглядати наступним чином:
{
sender: {
unsubscribe_url,
msg_ids: [
msg_id,
...
],
},
...
}
- get_subscription_info(category) - абстрактний тип даних проходиться по всім повідомлення користувача, при цьому дістаючи ID повідомлення та усю інформацію про відправника у форматі Raw Info, пізніше, за добутою інформацією, формується структура даних, показана вище.
- get_sender(msg_raw) - дістає ім'я відправника.
- unsubscribe(sender) - відписатися від відправника за гіперпосиланням, автоматично переходячи на нього.
- delete_messages(sender) - видалити всі повідомлення від конкретного користувача, що робиться завдяки ID цих повідомлень.
- get_inbox_info(category) - забезпечує надання інформації по кількості листів надісланих окремо кожним відправником, який належить до цієї категорії.
- get_categories_info() - забезпечує надання інформації по кількості листів за останній місяць по категоріям("Promotions", "Social", "Personal" і тд.)
- get_unread_info - забезпечує надання інформації по кількості прочитаних та непрочитаних листів за останній місяць.
- Посилання на приклад використання GUser ADT: https://github.com/Vozak16/Gmail-Manager/blob/master/adt_usage_examples/example_usage_guser_adt.py
Структуру даних словник було вибрано, тому що і в Unsubscribe ADT і в Gmail Manager ADT використовується пошук повідомлень за поштами відправників або повідомлень за категоріями. Оскільки пошук у словнику - це швидка операція O(1), то саме цей тип найкраще підходив для цієї задачі. Спочатку розглядався список, але після аналізу ефективності різних методів GUser , було вирішено змінити реалізацію на користь словника.
Діаграми класу GUser для наступної реалізації абстрактних типів даних Unsubscribe ADT і Gmail Manager ADT