65 lines
2.3 KiB
Python
65 lines
2.3 KiB
Python
from enum import Enum
|
|
|
|
|
|
class WellKnownFolderNames(str, Enum):
|
|
"""Well-known folder names that are created for users by default.
|
|
Instead of using the ID of these folders, you can use the well-known folder names.
|
|
For a list of all well-known folder names, see: https://learn.microsoft.com/en-us/graph/api/resources/mailfolder?view=graph-rest-1.0
|
|
"""
|
|
|
|
DELETED_ITEMS = "deleteditems"
|
|
DRAFTS = "drafts"
|
|
INBOX = "inbox"
|
|
JUNK_EMAIL = "junkemail"
|
|
SENT_ITEMS = "sentitems"
|
|
STARRED = "starred"
|
|
TODO = "tasks"
|
|
|
|
|
|
class ReplyType(str, Enum):
|
|
"""The type of reply to send to an email."""
|
|
|
|
REPLY = "reply"
|
|
REPLY_ALL = "reply_all"
|
|
|
|
|
|
class EmailFilterProperty(str, Enum):
|
|
"""The property to filter the emails by."""
|
|
|
|
# Basic properties
|
|
SUBJECT = "subject"
|
|
CONVERSATION_ID = "conversationId"
|
|
RECEIVED_DATE_TIME = "receivedDateTime"
|
|
SENDER = "sender/emailAddress/address"
|
|
|
|
|
|
class FilterOperator(str, Enum):
|
|
"""The operator to use for the filter.
|
|
|
|
For a full list of possible operators, see: https://learn.microsoft.com/en-us/graph/filter-query-parameter?tabs=http#operators-and-functions-supported-in-filter-expressions
|
|
"""
|
|
|
|
# Equality operators
|
|
EQUAL = "eq" # example: $filter=conversationId eq 'hello'
|
|
NOT_EQUAL = "ne" # example: $filter=subject ne 'hello'
|
|
|
|
# Relational operators
|
|
GREATER_THAN = "gt" # example: $filter=receivedDateTime gt 2024-01-01
|
|
GREATER_THAN_OR_EQUAL_TO = "ge" # example: $filter=receivedDateTime ge 2024-01-01
|
|
LESS_THAN = "lt" # example: $filter=receivedDateTime lt 2024-01-01
|
|
LESS_THAN_OR_EQUAL_TO = "le" # example: $filter=receivedDateTime le 2024-01-01
|
|
|
|
# Functions
|
|
STARTS_WITH = "startsWith" # example: $filter=startsWith(subject, 'hello')
|
|
ENDS_WITH = "endsWith" # example: $filter=endsWith(subject, 'hello')
|
|
CONTAINS = "contains" # example: $filter=contains(subject, 'hello')
|
|
|
|
def is_operator(self) -> bool:
|
|
"""Check if the operator is a comparison operator."""
|
|
operators = [self.EQUAL, self.NOT_EQUAL]
|
|
return self in operators
|
|
|
|
def is_function(self) -> bool:
|
|
"""Check if the operator is a function."""
|
|
functions = [self.STARTS_WITH, self.ENDS_WITH, self.CONTAINS]
|
|
return self in functions
|