81 lines
1.7 KiB
Python
81 lines
1.7 KiB
Python
import logging
|
|
|
|
import requests
|
|
|
|
from PyQt6 import QtCore
|
|
|
|
|
|
logger = logging.getLogger("gotify-tray")
|
|
|
|
|
|
class AttributeDict(dict):
|
|
def __init__(self, *args, **kwargs):
|
|
super(AttributeDict, self).__init__(*args, **kwargs)
|
|
self.__dict__ = self
|
|
|
|
|
|
class GotifyApplicationModel(AttributeDict):
|
|
description: str
|
|
id: int
|
|
image: str
|
|
internal: bool
|
|
name: str
|
|
token: str
|
|
|
|
|
|
class GotifyPagingModel(AttributeDict):
|
|
limit: int
|
|
next: str | None = None
|
|
since: int
|
|
size: int
|
|
|
|
|
|
class GotifyMessageModel(AttributeDict):
|
|
appid: int
|
|
date: QtCore.QDateTime
|
|
extras: dict | None = None
|
|
id: int
|
|
message: str
|
|
priority: int | None = None
|
|
title: str | None = None
|
|
|
|
def __init__(self, d: dict, *args, **kwargs):
|
|
d.update(
|
|
{"date": QtCore.QDateTime.fromString(d["date"], format=QtCore.Qt.DateFormat.ISODate).toLocalTime()}
|
|
)
|
|
super(GotifyMessageModel, self).__init__(d, *args, **kwargs)
|
|
|
|
|
|
class GotifyPagedMessagesModel(AttributeDict):
|
|
messages: list[GotifyMessageModel]
|
|
paging: GotifyPagingModel
|
|
|
|
|
|
class GotifyHealthModel(AttributeDict):
|
|
database: str
|
|
health: str
|
|
|
|
|
|
class GotifyVersionModel(AttributeDict):
|
|
buildDate: str
|
|
commit: str
|
|
version: str
|
|
|
|
|
|
class GotifyErrorModel(AttributeDict):
|
|
error: str
|
|
errorCode: int
|
|
errorDescription: str
|
|
|
|
def __init__(self, response: requests.Response, *args, **kwargs):
|
|
try:
|
|
j = response.json()
|
|
except ValueError:
|
|
j = {
|
|
"error": "unknown",
|
|
"errorCode": response.status_code,
|
|
"errorDescription": "",
|
|
}
|
|
|
|
super(GotifyErrorModel, self).__init__(j, *args, **kwargs)
|