From d0005c7d50bec5a0020c6b5e7d57999f4b68c479 Mon Sep 17 00:00:00 2001 From: runz0rd Date: Sat, 28 Oct 2017 16:16:35 +0200 Subject: [PATCH] Moved mail helper classes into separate files --- sendgrid/__init__.py | 2 +- sendgrid/helpers/mail/__init__.py | 23 +- sendgrid/helpers/mail/asm.py | 36 + sendgrid/helpers/mail/attachment.py | 66 + sendgrid/helpers/mail/bcc_settings.py | 37 + .../helpers/mail/bypass_list_management.py | 21 + sendgrid/helpers/mail/category.py | 17 + sendgrid/helpers/mail/click_tracking.py | 36 + sendgrid/helpers/mail/content.py | 36 + sendgrid/helpers/mail/custom_arg.py | 33 + sendgrid/helpers/mail/email.py | 62 + sendgrid/helpers/mail/footer_settings.py | 51 + sendgrid/helpers/mail/ganalytics.py | 92 ++ sendgrid/helpers/mail/header.py | 32 + sendgrid/helpers/mail/mail.py | 1064 +---------------- sendgrid/helpers/mail/mail_settings.py | 67 ++ sendgrid/helpers/mail/open_tracking.py | 35 + sendgrid/helpers/mail/personalization.py | 141 +++ sendgrid/helpers/mail/sandbox_mode.py | 21 + sendgrid/helpers/mail/section.py | 33 + sendgrid/helpers/mail/spam_check.py | 51 + .../helpers/mail/subscription_tracking.py | 63 + sendgrid/helpers/mail/substitution.py | 33 + sendgrid/helpers/mail/tracking_settings.py | 52 + 24 files changed, 1040 insertions(+), 1064 deletions(-) create mode 100644 sendgrid/helpers/mail/asm.py create mode 100644 sendgrid/helpers/mail/attachment.py create mode 100644 sendgrid/helpers/mail/bcc_settings.py create mode 100644 sendgrid/helpers/mail/bypass_list_management.py create mode 100644 sendgrid/helpers/mail/category.py create mode 100644 sendgrid/helpers/mail/click_tracking.py create mode 100644 sendgrid/helpers/mail/content.py create mode 100644 sendgrid/helpers/mail/custom_arg.py create mode 100644 sendgrid/helpers/mail/email.py create mode 100644 sendgrid/helpers/mail/footer_settings.py create mode 100644 sendgrid/helpers/mail/ganalytics.py create mode 100644 sendgrid/helpers/mail/header.py create mode 100644 sendgrid/helpers/mail/mail_settings.py create mode 100644 sendgrid/helpers/mail/open_tracking.py create mode 100644 sendgrid/helpers/mail/personalization.py create mode 100644 sendgrid/helpers/mail/sandbox_mode.py create mode 100644 sendgrid/helpers/mail/section.py create mode 100644 sendgrid/helpers/mail/spam_check.py create mode 100644 sendgrid/helpers/mail/subscription_tracking.py create mode 100644 sendgrid/helpers/mail/substitution.py create mode 100644 sendgrid/helpers/mail/tracking_settings.py diff --git a/sendgrid/__init__.py b/sendgrid/__init__.py index 8ae134780..3ac96f992 100644 --- a/sendgrid/__init__.py +++ b/sendgrid/__init__.py @@ -1,4 +1,4 @@ from .version import __version__ # noqa # v3 API from .sendgrid import SendGridAPIClient # noqa -from .helpers.mail.mail import Email # noqa +from .helpers.mail import Email # noqa diff --git a/sendgrid/helpers/mail/__init__.py b/sendgrid/helpers/mail/__init__.py index f4c1f5c79..b9e908560 100644 --- a/sendgrid/helpers/mail/__init__.py +++ b/sendgrid/helpers/mail/__init__.py @@ -1 +1,22 @@ -from .mail import * # noqa +from .asm import ASM +from .attachment import Attachment +from .bcc_settings import BCCSettings +from .bypass_list_management import BypassListManagement +from .category import Category +from .click_tracking import ClickTracking +from .content import Content +from .custom_arg import CustomArg +from .email import Email +from .footer_settings import FooterSettings +from .ganalytics import Ganalytics +from .header import Header +from .mail_settings import MailSettings +from .mail import Mail +from .open_tracking import OpenTracking +from .personalization import Personalization +from .sandbox_mode import SandBoxMode +from .section import Section +from .spam_check import SpamCheck +from .subscription_tracking import SubscriptionTracking +from .substitution import Substitution +from .tracking_settings import TrackingSettings diff --git a/sendgrid/helpers/mail/asm.py b/sendgrid/helpers/mail/asm.py new file mode 100644 index 000000000..5b26c6b65 --- /dev/null +++ b/sendgrid/helpers/mail/asm.py @@ -0,0 +1,36 @@ +class ASM(object): + + def __init__(self, group_id=None, groups_to_display=None): + self._group_id = None + self._groups_to_display = None + + if group_id is not None: + self._group_id = group_id + + if groups_to_display is not None: + self._groups_to_display = groups_to_display + + @property + def group_id(self): + return self._group_id + + @group_id.setter + def group_id(self, value): + self._group_id = value + + @property + def groups_to_display(self): + return self._groups_to_display + + @groups_to_display.setter + def groups_to_display(self, value): + self._groups_to_display = value + + def get(self): + asm = {} + if self.group_id is not None: + asm["group_id"] = self.group_id + + if self.groups_to_display is not None: + asm["groups_to_display"] = self.groups_to_display + return asm diff --git a/sendgrid/helpers/mail/attachment.py b/sendgrid/helpers/mail/attachment.py new file mode 100644 index 000000000..98404f73a --- /dev/null +++ b/sendgrid/helpers/mail/attachment.py @@ -0,0 +1,66 @@ +class Attachment(object): + + def __init__(self): + self._content = None + self._type = None + self._filename = None + self._disposition = None + self._content_id = None + + @property + def content(self): + return self._content + + @content.setter + def content(self, value): + self._content = value + + @property + def type(self): + return self._type + + @type.setter + def type(self, value): + self._type = value + + @property + def filename(self): + return self._filename + + @filename.setter + def filename(self, value): + self._filename = value + + @property + def disposition(self): + return self._disposition + + @disposition.setter + def disposition(self, value): + self._disposition = value + + @property + def content_id(self): + return self._content_id + + @content_id.setter + def content_id(self, value): + self._content_id = value + + def get(self): + attachment = {} + if self.content is not None: + attachment["content"] = self.content + + if self.type is not None: + attachment["type"] = self.type + + if self.filename is not None: + attachment["filename"] = self.filename + + if self.disposition is not None: + attachment["disposition"] = self.disposition + + if self.content_id is not None: + attachment["content_id"] = self.content_id + return attachment diff --git a/sendgrid/helpers/mail/bcc_settings.py b/sendgrid/helpers/mail/bcc_settings.py new file mode 100644 index 000000000..f79512c13 --- /dev/null +++ b/sendgrid/helpers/mail/bcc_settings.py @@ -0,0 +1,37 @@ +class BCCSettings(object): + + def __init__(self, enable=None, email=None): + self._enable = None + self._email = None + + if enable is not None: + self.enable = enable + + if email is not None: + self.email = email + + @property + def enable(self): + return self._enable + + @enable.setter + def enable(self, value): + self._enable = value + + @property + def email(self): + return self._email + + @email.setter + def email(self, value): + self._email = value + + def get(self): + bcc_settings = {} + if self.enable is not None: + bcc_settings["enable"] = self.enable + + if self.email is not None: + email = self.email.get() + bcc_settings["email"] = email["email"] + return bcc_settings diff --git a/sendgrid/helpers/mail/bypass_list_management.py b/sendgrid/helpers/mail/bypass_list_management.py new file mode 100644 index 000000000..974d67f7c --- /dev/null +++ b/sendgrid/helpers/mail/bypass_list_management.py @@ -0,0 +1,21 @@ +class BypassListManagement(object): + + def __init__(self, enable=None): + self._enable = None + + if enable is not None: + self.enable = enable + + @property + def enable(self): + return self._enable + + @enable.setter + def enable(self, value): + self._enable = value + + def get(self): + bypass_list_management = {} + if self.enable is not None: + bypass_list_management["enable"] = self.enable + return bypass_list_management diff --git a/sendgrid/helpers/mail/category.py b/sendgrid/helpers/mail/category.py new file mode 100644 index 000000000..333ecb084 --- /dev/null +++ b/sendgrid/helpers/mail/category.py @@ -0,0 +1,17 @@ +class Category(object): + + def __init__(self, name=None): + self._name = None + if name is not None: + self._name = name + + @property + def name(self): + return self._name + + @name.setter + def name(self, value): + self._name = value + + def get(self): + return self.name diff --git a/sendgrid/helpers/mail/click_tracking.py b/sendgrid/helpers/mail/click_tracking.py new file mode 100644 index 000000000..d676627fc --- /dev/null +++ b/sendgrid/helpers/mail/click_tracking.py @@ -0,0 +1,36 @@ +class ClickTracking(object): + + def __init__(self, enable=None, enable_text=None): + self._enable = None + self._enable_text = None + + if enable is not None: + self.enable = enable + + if enable_text is not None: + self.enable_text = enable_text + + @property + def enable(self): + return self._enable + + @enable.setter + def enable(self, value): + self._enable = value + + @property + def enable_text(self): + return self._enable_text + + @enable_text.setter + def enable_text(self, value): + self._enable_text = value + + def get(self): + click_tracking = {} + if self.enable is not None: + click_tracking["enable"] = self.enable + + if self.enable_text is not None: + click_tracking["enable_text"] = self.enable_text + return click_tracking diff --git a/sendgrid/helpers/mail/content.py b/sendgrid/helpers/mail/content.py new file mode 100644 index 000000000..2cde9a49c --- /dev/null +++ b/sendgrid/helpers/mail/content.py @@ -0,0 +1,36 @@ +class Content(object): + + def __init__(self, type_=None, value=None): + self._type = None + self._value = None + + if type_ is not None: + self.type = type_ + + if value is not None: + self.value = value + + @property + def type(self): + return self._type + + @type.setter + def type(self, value): + self._type = value + + @property + def value(self): + return self._value + + @value.setter + def value(self, value): + self._value = value + + def get(self): + content = {} + if self.type is not None: + content["type"] = self.type + + if self.value is not None: + content["value"] = self.value + return content diff --git a/sendgrid/helpers/mail/custom_arg.py b/sendgrid/helpers/mail/custom_arg.py new file mode 100644 index 000000000..5732ea78f --- /dev/null +++ b/sendgrid/helpers/mail/custom_arg.py @@ -0,0 +1,33 @@ +class CustomArg(object): + + def __init__(self, key=None, value=None): + self._key = None + self._value = None + + if key is not None: + self.key = key + + if value is not None: + self.value = value + + @property + def key(self): + return self._key + + @key.setter + def key(self, value): + self._key = value + + @property + def value(self): + return self._value + + @value.setter + def value(self, value): + self._value = value + + def get(self): + custom_arg = {} + if self.key is not None and self.value is not None: + custom_arg[self.key] = self.value + return custom_arg diff --git a/sendgrid/helpers/mail/email.py b/sendgrid/helpers/mail/email.py new file mode 100644 index 000000000..cd25cd88f --- /dev/null +++ b/sendgrid/helpers/mail/email.py @@ -0,0 +1,62 @@ +class Email(object): + + def __init__(self, email=None, name=None): + self._name = None + self._email = None + if name or email: + if not name: + # allows passing emails as "dude Fella " + self.parse_email(email) + else: + #allows backwards compatibility for Email(email, name) + if email is not None: + self.email = email + self.name = name + + @property + def name(self): + return self._name + + @name.setter + def name(self, value): + self._name = value + + @property + def email(self): + return self._email + + @email.setter + def email(self, value): + self._email = value + + def get(self): + email = {} + if self.name is not None: + email["name"] = self.name + + if self.email is not None: + email["email"] = self.email + return email + + def parse_email(self, email_info): + try: + import rfc822 + except ImportError: + import email.utils as rfc822 + + name, email = rfc822.parseaddr(email_info) + + # more than likely a string was passed here instead of an email address + if "@" not in email: + name = email + email = None + + if not name: + name = None + + if not email: + email = None + + self.name = name + self.email = email + return name, email diff --git a/sendgrid/helpers/mail/footer_settings.py b/sendgrid/helpers/mail/footer_settings.py new file mode 100644 index 000000000..ce5fe43fc --- /dev/null +++ b/sendgrid/helpers/mail/footer_settings.py @@ -0,0 +1,51 @@ +class FooterSettings(object): + + def __init__(self, enable=None, text=None, html=None): + self._enable = None + self._text = None + self._html = None + + if enable is not None: + self.enable = enable + + if text is not None: + self.text = text + + if html is not None: + self.html = html + + @property + def enable(self): + return self._enable + + @enable.setter + def enable(self, value): + self._enable = value + + @property + def text(self): + return self._text + + @text.setter + def text(self, value): + self._text = value + + @property + def html(self): + return self._html + + @html.setter + def html(self, value): + self._html = value + + def get(self): + footer_settings = {} + if self.enable is not None: + footer_settings["enable"] = self.enable + + if self.text is not None: + footer_settings["text"] = self.text + + if self.html is not None: + footer_settings["html"] = self.html + return footer_settings diff --git a/sendgrid/helpers/mail/ganalytics.py b/sendgrid/helpers/mail/ganalytics.py new file mode 100644 index 000000000..8d591df91 --- /dev/null +++ b/sendgrid/helpers/mail/ganalytics.py @@ -0,0 +1,92 @@ +class Ganalytics(object): + + def __init__(self, + enable=None, + utm_source=None, + utm_medium=None, + utm_term=None, + utm_content=None, + utm_campaign=None): + self._enable = None + self._utm_source = None + self._utm_medium = None + self._utm_term = None + self._utm_content = None + self._utm_campaign = None + + if enable is not None: + self.enable = enable + if utm_source is not None: + self.utm_source = utm_source + if utm_medium is not None: + self.utm_medium = utm_medium + if utm_term is not None: + self.utm_term = utm_term + if utm_content is not None: + self.utm_content = utm_content + if utm_campaign is not None: + self.utm_campaign = utm_campaign + + @property + def enable(self): + return self._enable + + @enable.setter + def enable(self, value): + self._enable = value + + @property + def utm_source(self): + return self._utm_source + + @utm_source.setter + def utm_source(self, value): + self._utm_source = value + + @property + def utm_medium(self): + return self._utm_medium + + @utm_medium.setter + def utm_medium(self, value): + self._utm_medium = value + + @property + def utm_term(self): + return self._utm_term + + @utm_term.setter + def utm_term(self, value): + self._utm_term = value + + @property + def utm_content(self): + return self._utm_content + + @utm_content.setter + def utm_content(self, value): + self._utm_content = value + + @property + def utm_campaign(self): + return self._utm_campaign + + @utm_campaign.setter + def utm_campaign(self, value): + self._utm_campaign = value + + def get(self): + ganalytics = {} + if self.enable is not None: + ganalytics["enable"] = self.enable + if self.utm_source is not None: + ganalytics["utm_source"] = self.utm_source + if self.utm_medium is not None: + ganalytics["utm_medium"] = self.utm_medium + if self.utm_term is not None: + ganalytics["utm_term"] = self.utm_term + if self.utm_content is not None: + ganalytics["utm_content"] = self.utm_content + if self.utm_campaign is not None: + ganalytics["utm_campaign"] = self.utm_campaign + return ganalytics diff --git a/sendgrid/helpers/mail/header.py b/sendgrid/helpers/mail/header.py new file mode 100644 index 000000000..bfe354bb8 --- /dev/null +++ b/sendgrid/helpers/mail/header.py @@ -0,0 +1,32 @@ +class Header(object): + + def __init__(self, key=None, value=None): + self._key = None + self._value = None + + if key is not None: + self.key = key + if value is not None: + self.value = value + + @property + def key(self): + return self._key + + @key.setter + def key(self, value): + self._key = value + + @property + def value(self): + return self._value + + @value.setter + def value(self, value): + self._value = value + + def get(self): + header = {} + if self.key is not None and self.value is not None: + header[self.key] = self.value + return header diff --git a/sendgrid/helpers/mail/mail.py b/sendgrid/helpers/mail/mail.py index a2159b25d..60c85c82c 100644 --- a/sendgrid/helpers/mail/mail.py +++ b/sendgrid/helpers/mail/mail.py @@ -1,5 +1,6 @@ """v3/mail/send response body builder""" - +from .personalization import Personalization +from .header import Header class Mail(object): """Creates the response body for v3/mail/send""" @@ -250,1064 +251,3 @@ def add_custom_arg(self, custom_arg): if self._custom_args is None: self._custom_args = [] self._custom_args.append(custom_arg) - - -################################################################ -# The following objects are meant to be extended with validation -################################################################ - - -class Email(object): - - def __init__(self, email=None, name=None): - self._name = None - self._email = None - if name or email: - if not name: - # allows passing emails as "dude Fella " - self.parse_email(email) - else: - #allows backwards compatibility for Email(email, name) - if email is not None: - self.email = email - self.name = name - - @property - def name(self): - return self._name - - @name.setter - def name(self, value): - self._name = value - - @property - def email(self): - return self._email - - @email.setter - def email(self, value): - self._email = value - - def get(self): - email = {} - if self.name is not None: - email["name"] = self.name - - if self.email is not None: - email["email"] = self.email - return email - - def parse_email(self, email_info): - try: - import rfc822 - except ImportError: - import email.utils as rfc822 - - name, email = rfc822.parseaddr(email_info) - - # more than likely a string was passed here instead of an email address - if "@" not in email: - name = email - email = None - - if not name: - name = None - - if not email: - email = None - - self.name = name - self.email = email - return name, email - -class Content(object): - - def __init__(self, type_=None, value=None): - self._type = None - self._value = None - - if type_ is not None: - self.type = type_ - - if value is not None: - self.value = value - - @property - def type(self): - return self._type - - @type.setter - def type(self, value): - self._type = value - - @property - def value(self): - return self._value - - @value.setter - def value(self, value): - self._value = value - - def get(self): - content = {} - if self.type is not None: - content["type"] = self.type - - if self.value is not None: - content["value"] = self.value - return content - - -class Header(object): - - def __init__(self, key=None, value=None): - self._key = None - self._value = None - - if key is not None: - self.key = key - if value is not None: - self.value = value - - @property - def key(self): - return self._key - - @key.setter - def key(self, value): - self._key = value - - @property - def value(self): - return self._value - - @value.setter - def value(self, value): - self._value = value - - def get(self): - header = {} - if self.key is not None and self.value is not None: - header[self.key] = self.value - return header - - -class Substitution(object): - - def __init__(self, key=None, value=None): - self._key = None - self._value = None - - if key is not None: - self.key = key - - if value is not None: - self.value = value - - @property - def key(self): - return self._key - - @key.setter - def key(self, value): - self._key = value - - @property - def value(self): - return self._value - - @value.setter - def value(self, value): - self._value = value - - def get(self): - substitution = {} - if self.key is not None and self.value is not None: - substitution[self.key] = self.value - return substitution - - -class Section(object): - - def __init__(self, key=None, value=None): - self._key = None - self._value = None - - if key is not None: - self.key = key - - if value is not None: - self.value = value - - @property - def key(self): - return self._key - - @key.setter - def key(self, value): - self._key = value - - @property - def value(self): - return self._value - - @value.setter - def value(self, value): - self._value = value - - def get(self): - section = {} - if self.key is not None and self.value is not None: - section[self.key] = self.value - return section - - -class CustomArg(object): - - def __init__(self, key=None, value=None): - self._key = None - self._value = None - - if key is not None: - self.key = key - - if value is not None: - self.value = value - - @property - def key(self): - return self._key - - @key.setter - def key(self, value): - self._key = value - - @property - def value(self): - return self._value - - @value.setter - def value(self, value): - self._value = value - - def get(self): - custom_arg = {} - if self.key is not None and self.value is not None: - custom_arg[self.key] = self.value - return custom_arg - - -class Personalization(object): - - def __init__(self): - self._tos = None - self._ccs = None - self._bccs = None - self._subject = None - self._headers = None - self._substitutions = None - self._custom_args = None - self._send_at = None - - @property - def tos(self): - return self._tos - - @tos.setter - def tos(self, value): - self._tos = value - - def add_to(self, email): - if self._tos is None: - self._tos = [] - self._tos.append(email.get()) - - @property - def ccs(self): - return self._ccs - - @ccs.setter - def ccs(self, value): - self._ccs = value - - def add_cc(self, email): - if self._ccs is None: - self._ccs = [] - self._ccs.append(email.get()) - - @property - def bccs(self): - return self._bccs - - @bccs.setter - def bccs(self, value): - self._bccs = value - - def add_bcc(self, email): - if self._bccs is None: - self._bccs = [] - self._bccs.append(email.get()) - - @property - def subject(self): - return self._subject - - @subject.setter - def subject(self, value): - self._subject = value - - @property - def headers(self): - return self._headers - - @headers.setter - def headers(self, value): - self._headers = value - - def add_header(self, header): - if self._headers is None: - self._headers = [] - self._headers.append(header.get()) - - @property - def substitutions(self): - return self._substitutions - - @substitutions.setter - def substitutions(self, value): - self.substitutions = value - - def add_substitution(self, substitution): - if self._substitutions is None: - self._substitutions = [] - self._substitutions.append(substitution.get()) - - @property - def custom_args(self): - return self._custom_args - - @custom_args.setter - def custom_args(self, value): - self._custom_args = value - - def add_custom_arg(self, custom_arg): - if self._custom_args is None: - self._custom_args = [] - self._custom_args.append(custom_arg.get()) - - @property - def send_at(self): - return self._send_at - - @send_at.setter - def send_at(self, value): - self._send_at = value - - def get(self): - personalization = {} - if self.tos is not None: - personalization["to"] = self.tos - - if self.ccs is not None: - personalization["cc"] = self.ccs - - if self.bccs is not None: - personalization["bcc"] = self.bccs - - if self.subject is not None: - personalization["subject"] = self.subject - - if self.headers is not None: - headers = {} - for key in self.headers: - headers.update(key) - personalization["headers"] = headers - - if self.substitutions is not None: - substitutions = {} - for key in self.substitutions: - substitutions.update(key) - personalization["substitutions"] = substitutions - - if self.custom_args is not None: - custom_args = {} - for key in self.custom_args: - custom_args.update(key) - personalization["custom_args"] = custom_args - - if self.send_at is not None: - personalization["send_at"] = self.send_at - return personalization - - -class Attachment(object): - - def __init__(self): - self._content = None - self._type = None - self._filename = None - self._disposition = None - self._content_id = None - - @property - def content(self): - return self._content - - @content.setter - def content(self, value): - self._content = value - - @property - def type(self): - return self._type - - @type.setter - def type(self, value): - self._type = value - - @property - def filename(self): - return self._filename - - @filename.setter - def filename(self, value): - self._filename = value - - @property - def disposition(self): - return self._disposition - - @disposition.setter - def disposition(self, value): - self._disposition = value - - @property - def content_id(self): - return self._content_id - - @content_id.setter - def content_id(self, value): - self._content_id = value - - def get(self): - attachment = {} - if self.content is not None: - attachment["content"] = self.content - - if self.type is not None: - attachment["type"] = self.type - - if self.filename is not None: - attachment["filename"] = self.filename - - if self.disposition is not None: - attachment["disposition"] = self.disposition - - if self.content_id is not None: - attachment["content_id"] = self.content_id - return attachment - - -class Category(object): - - def __init__(self, name=None): - self._name = None - if name is not None: - self._name = name - - @property - def name(self): - return self._name - - @name.setter - def name(self, value): - self._name = value - - def get(self): - return self.name - - -class ASM(object): - - def __init__(self, group_id=None, groups_to_display=None): - self._group_id = None - self._groups_to_display = None - - if group_id is not None: - self._group_id = group_id - - if groups_to_display is not None: - self._groups_to_display = groups_to_display - - @property - def group_id(self): - return self._group_id - - @group_id.setter - def group_id(self, value): - self._group_id = value - - @property - def groups_to_display(self): - return self._groups_to_display - - @groups_to_display.setter - def groups_to_display(self, value): - self._groups_to_display = value - - def get(self): - asm = {} - if self.group_id is not None: - asm["group_id"] = self.group_id - - if self.groups_to_display is not None: - asm["groups_to_display"] = self.groups_to_display - return asm - - -class BCCSettings(object): - - def __init__(self, enable=None, email=None): - self._enable = None - self._email = None - - if enable is not None: - self.enable = enable - - if email is not None: - self.email = email - - @property - def enable(self): - return self._enable - - @enable.setter - def enable(self, value): - self._enable = value - - @property - def email(self): - return self._email - - @email.setter - def email(self, value): - self._email = value - - def get(self): - bcc_settings = {} - if self.enable is not None: - bcc_settings["enable"] = self.enable - - if self.email is not None: - email = self.email.get() - bcc_settings["email"] = email["email"] - return bcc_settings - - -class BypassListManagement(object): - - def __init__(self, enable=None): - self._enable = None - - if enable is not None: - self.enable = enable - - @property - def enable(self): - return self._enable - - @enable.setter - def enable(self, value): - self._enable = value - - def get(self): - bypass_list_management = {} - if self.enable is not None: - bypass_list_management["enable"] = self.enable - return bypass_list_management - - -class FooterSettings(object): - - def __init__(self, enable=None, text=None, html=None): - self._enable = None - self._text = None - self._html = None - - if enable is not None: - self.enable = enable - - if text is not None: - self.text = text - - if html is not None: - self.html = html - - @property - def enable(self): - return self._enable - - @enable.setter - def enable(self, value): - self._enable = value - - @property - def text(self): - return self._text - - @text.setter - def text(self, value): - self._text = value - - @property - def html(self): - return self._html - - @html.setter - def html(self, value): - self._html = value - - def get(self): - footer_settings = {} - if self.enable is not None: - footer_settings["enable"] = self.enable - - if self.text is not None: - footer_settings["text"] = self.text - - if self.html is not None: - footer_settings["html"] = self.html - return footer_settings - - -class SandBoxMode(object): - - def __init__(self, enable=None): - self._enable = None - - if enable is not None: - self.enable = enable - - @property - def enable(self): - return self._enable - - @enable.setter - def enable(self, value): - self._enable = value - - def get(self): - sandbox_mode = {} - if self.enable is not None: - sandbox_mode["enable"] = self.enable - return sandbox_mode - - -class SpamCheck(object): - - def __init__(self, enable=None, threshold=None, post_to_url=None): - self._enable = None - self._threshold = None - self._post_to_url = None - - if enable is not None: - self.enable = enable - - if threshold is not None: - self.threshold = threshold - - if post_to_url is not None: - self.post_to_url = post_to_url - - @property - def enable(self): - return self._enable - - @enable.setter - def enable(self, value): - self._enable = value - - @property - def threshold(self): - return self._threshold - - @threshold.setter - def threshold(self, value): - self._threshold = value - - @property - def post_to_url(self): - return self._post_to_url - - @post_to_url.setter - def post_to_url(self, value): - self._post_to_url = value - - def get(self): - spam_check = {} - if self.enable is not None: - spam_check["enable"] = self.enable - - if self.threshold is not None: - spam_check["threshold"] = self.threshold - - if self.post_to_url is not None: - spam_check["post_to_url"] = self.post_to_url - return spam_check - - -class MailSettings(object): - - def __init__(self): - self._bcc_settings = None - self._bypass_list_management = None - self._footer_settings = None - self._sandbox_mode = None - self._spam_check = None - - @property - def bcc_settings(self): - return self._bcc_settings - - @bcc_settings.setter - def bcc_settings(self, value): - self._bcc_settings = value - - @property - def bypass_list_management(self): - return self._bypass_list_management - - @bypass_list_management.setter - def bypass_list_management(self, value): - self._bypass_list_management = value - - @property - def footer_settings(self): - return self._footer_settings - - @footer_settings.setter - def footer_settings(self, value): - self._footer_settings = value - - @property - def sandbox_mode(self): - return self._sandbox_mode - - @sandbox_mode.setter - def sandbox_mode(self, value): - self._sandbox_mode = value - - @property - def spam_check(self): - return self._spam_check - - @spam_check.setter - def spam_check(self, value): - self._spam_check = value - - def get(self): - mail_settings = {} - if self.bcc_settings is not None: - mail_settings["bcc"] = self.bcc_settings.get() - - if self.bypass_list_management is not None: - mail_settings[ - "bypass_list_management"] = self.bypass_list_management.get() - - if self.footer_settings is not None: - mail_settings["footer"] = self.footer_settings.get() - - if self.sandbox_mode is not None: - mail_settings["sandbox_mode"] = self.sandbox_mode.get() - - if self.spam_check is not None: - mail_settings["spam_check"] = self.spam_check.get() - return mail_settings - - -class ClickTracking(object): - - def __init__(self, enable=None, enable_text=None): - self._enable = None - self._enable_text = None - - if enable is not None: - self.enable = enable - - if enable_text is not None: - self.enable_text = enable_text - - @property - def enable(self): - return self._enable - - @enable.setter - def enable(self, value): - self._enable = value - - @property - def enable_text(self): - return self._enable_text - - @enable_text.setter - def enable_text(self, value): - self._enable_text = value - - def get(self): - click_tracking = {} - if self.enable is not None: - click_tracking["enable"] = self.enable - - if self.enable_text is not None: - click_tracking["enable_text"] = self.enable_text - return click_tracking - - -class OpenTracking(object): - - def __init__(self, enable=None, substitution_tag=None): - self._enable = None - self._substitution_tag = None - - if enable is not None: - self.enable = enable - if substitution_tag is not None: - self.substitution_tag = substitution_tag - - @property - def enable(self): - return self._enable - - @enable.setter - def enable(self, value): - self._enable = value - - @property - def substitution_tag(self): - return self._substitution_tag - - @substitution_tag.setter - def substitution_tag(self, value): - self._substitution_tag = value - - def get(self): - open_tracking = {} - if self.enable is not None: - open_tracking["enable"] = self.enable - - if self.substitution_tag is not None: - open_tracking["substitution_tag"] = self.substitution_tag - return open_tracking - - -class SubscriptionTracking(object): - - def __init__(self, enable=None, text=None, html=None, substitution_tag=None): - self._enable = None - self._text = None - self._html = None - self._substitution_tag = None - - if enable is not None: - self.enable = enable - if text is not None: - self.text = text - if html is not None: - self.html = html - if substitution_tag is not None: - self.substitution_tag = substitution_tag - - @property - def enable(self): - return self._enable - - @enable.setter - def enable(self, value): - self._enable = value - - @property - def text(self): - return self._text - - @text.setter - def text(self, value): - self._text = value - - @property - def html(self): - return self._html - - @html.setter - def html(self, value): - self._html = value - - @property - def substitution_tag(self): - return self._substitution_tag - - @substitution_tag.setter - def substitution_tag(self, value): - self._substitution_tag = value - - def get(self): - subscription_tracking = {} - if self.enable is not None: - subscription_tracking["enable"] = self.enable - - if self.text is not None: - subscription_tracking["text"] = self.text - - if self.html is not None: - subscription_tracking["html"] = self.html - - if self.substitution_tag is not None: - subscription_tracking["substitution_tag"] = self.substitution_tag - return subscription_tracking - - -class Ganalytics(object): - - def __init__(self, - enable=None, - utm_source=None, - utm_medium=None, - utm_term=None, - utm_content=None, - utm_campaign=None): - self._enable = None - self._utm_source = None - self._utm_medium = None - self._utm_term = None - self._utm_content = None - self._utm_campaign = None - - if enable is not None: - self.enable = enable - if utm_source is not None: - self.utm_source = utm_source - if utm_medium is not None: - self.utm_medium = utm_medium - if utm_term is not None: - self.utm_term = utm_term - if utm_content is not None: - self.utm_content = utm_content - if utm_campaign is not None: - self.utm_campaign = utm_campaign - - @property - def enable(self): - return self._enable - - @enable.setter - def enable(self, value): - self._enable = value - - @property - def utm_source(self): - return self._utm_source - - @utm_source.setter - def utm_source(self, value): - self._utm_source = value - - @property - def utm_medium(self): - return self._utm_medium - - @utm_medium.setter - def utm_medium(self, value): - self._utm_medium = value - - @property - def utm_term(self): - return self._utm_term - - @utm_term.setter - def utm_term(self, value): - self._utm_term = value - - @property - def utm_content(self): - return self._utm_content - - @utm_content.setter - def utm_content(self, value): - self._utm_content = value - - @property - def utm_campaign(self): - return self._utm_campaign - - @utm_campaign.setter - def utm_campaign(self, value): - self._utm_campaign = value - - def get(self): - ganalytics = {} - if self.enable is not None: - ganalytics["enable"] = self.enable - if self.utm_source is not None: - ganalytics["utm_source"] = self.utm_source - if self.utm_medium is not None: - ganalytics["utm_medium"] = self.utm_medium - if self.utm_term is not None: - ganalytics["utm_term"] = self.utm_term - if self.utm_content is not None: - ganalytics["utm_content"] = self.utm_content - if self.utm_campaign is not None: - ganalytics["utm_campaign"] = self.utm_campaign - return ganalytics - - -class TrackingSettings(object): - - def __init__(self): - self._click_tracking = None - self._open_tracking = None - self._subscription_tracking = None - self._ganalytics = None - - @property - def click_tracking(self): - return self._click_tracking - - @click_tracking.setter - def click_tracking(self, value): - self._click_tracking = value - - @property - def open_tracking(self): - return self._open_tracking - - @open_tracking.setter - def open_tracking(self, value): - self._open_tracking = value - - @property - def subscription_tracking(self): - return self._subscription_tracking - - @subscription_tracking.setter - def subscription_tracking(self, value): - self._subscription_tracking = value - - @property - def ganalytics(self): - return self._ganalytics - - @ganalytics.setter - def ganalytics(self, value): - self._ganalytics = value - - def get(self): - tracking_settings = {} - if self.click_tracking is not None: - tracking_settings["click_tracking"] = self.click_tracking.get() - if self.open_tracking is not None: - tracking_settings["open_tracking"] = self.open_tracking.get() - if self.subscription_tracking is not None: - tracking_settings[ - "subscription_tracking"] = self.subscription_tracking.get() - if self.ganalytics is not None: - tracking_settings["ganalytics"] = self.ganalytics.get() - return tracking_settings diff --git a/sendgrid/helpers/mail/mail_settings.py b/sendgrid/helpers/mail/mail_settings.py new file mode 100644 index 000000000..3e4eb6968 --- /dev/null +++ b/sendgrid/helpers/mail/mail_settings.py @@ -0,0 +1,67 @@ +class MailSettings(object): + + def __init__(self): + self._bcc_settings = None + self._bypass_list_management = None + self._footer_settings = None + self._sandbox_mode = None + self._spam_check = None + + @property + def bcc_settings(self): + return self._bcc_settings + + @bcc_settings.setter + def bcc_settings(self, value): + self._bcc_settings = value + + @property + def bypass_list_management(self): + return self._bypass_list_management + + @bypass_list_management.setter + def bypass_list_management(self, value): + self._bypass_list_management = value + + @property + def footer_settings(self): + return self._footer_settings + + @footer_settings.setter + def footer_settings(self, value): + self._footer_settings = value + + @property + def sandbox_mode(self): + return self._sandbox_mode + + @sandbox_mode.setter + def sandbox_mode(self, value): + self._sandbox_mode = value + + @property + def spam_check(self): + return self._spam_check + + @spam_check.setter + def spam_check(self, value): + self._spam_check = value + + def get(self): + mail_settings = {} + if self.bcc_settings is not None: + mail_settings["bcc"] = self.bcc_settings.get() + + if self.bypass_list_management is not None: + mail_settings[ + "bypass_list_management"] = self.bypass_list_management.get() + + if self.footer_settings is not None: + mail_settings["footer"] = self.footer_settings.get() + + if self.sandbox_mode is not None: + mail_settings["sandbox_mode"] = self.sandbox_mode.get() + + if self.spam_check is not None: + mail_settings["spam_check"] = self.spam_check.get() + return mail_settings diff --git a/sendgrid/helpers/mail/open_tracking.py b/sendgrid/helpers/mail/open_tracking.py new file mode 100644 index 000000000..46fe08461 --- /dev/null +++ b/sendgrid/helpers/mail/open_tracking.py @@ -0,0 +1,35 @@ +class OpenTracking(object): + + def __init__(self, enable=None, substitution_tag=None): + self._enable = None + self._substitution_tag = None + + if enable is not None: + self.enable = enable + if substitution_tag is not None: + self.substitution_tag = substitution_tag + + @property + def enable(self): + return self._enable + + @enable.setter + def enable(self, value): + self._enable = value + + @property + def substitution_tag(self): + return self._substitution_tag + + @substitution_tag.setter + def substitution_tag(self, value): + self._substitution_tag = value + + def get(self): + open_tracking = {} + if self.enable is not None: + open_tracking["enable"] = self.enable + + if self.substitution_tag is not None: + open_tracking["substitution_tag"] = self.substitution_tag + return open_tracking diff --git a/sendgrid/helpers/mail/personalization.py b/sendgrid/helpers/mail/personalization.py new file mode 100644 index 000000000..35d99c6a7 --- /dev/null +++ b/sendgrid/helpers/mail/personalization.py @@ -0,0 +1,141 @@ +class Personalization(object): + + def __init__(self): + self._tos = None + self._ccs = None + self._bccs = None + self._subject = None + self._headers = None + self._substitutions = None + self._custom_args = None + self._send_at = None + + @property + def tos(self): + return self._tos + + @tos.setter + def tos(self, value): + self._tos = value + + def add_to(self, email): + if self._tos is None: + self._tos = [] + self._tos.append(email.get()) + + @property + def ccs(self): + return self._ccs + + @ccs.setter + def ccs(self, value): + self._ccs = value + + def add_cc(self, email): + if self._ccs is None: + self._ccs = [] + self._ccs.append(email.get()) + + @property + def bccs(self): + return self._bccs + + @bccs.setter + def bccs(self, value): + self._bccs = value + + def add_bcc(self, email): + if self._bccs is None: + self._bccs = [] + self._bccs.append(email.get()) + + @property + def subject(self): + return self._subject + + @subject.setter + def subject(self, value): + self._subject = value + + @property + def headers(self): + return self._headers + + @headers.setter + def headers(self, value): + self._headers = value + + def add_header(self, header): + if self._headers is None: + self._headers = [] + self._headers.append(header.get()) + + @property + def substitutions(self): + return self._substitutions + + @substitutions.setter + def substitutions(self, value): + self.substitutions = value + + def add_substitution(self, substitution): + if self._substitutions is None: + self._substitutions = [] + self._substitutions.append(substitution.get()) + + @property + def custom_args(self): + return self._custom_args + + @custom_args.setter + def custom_args(self, value): + self._custom_args = value + + def add_custom_arg(self, custom_arg): + if self._custom_args is None: + self._custom_args = [] + self._custom_args.append(custom_arg.get()) + + @property + def send_at(self): + return self._send_at + + @send_at.setter + def send_at(self, value): + self._send_at = value + + def get(self): + personalization = {} + if self.tos is not None: + personalization["to"] = self.tos + + if self.ccs is not None: + personalization["cc"] = self.ccs + + if self.bccs is not None: + personalization["bcc"] = self.bccs + + if self.subject is not None: + personalization["subject"] = self.subject + + if self.headers is not None: + headers = {} + for key in self.headers: + headers.update(key) + personalization["headers"] = headers + + if self.substitutions is not None: + substitutions = {} + for key in self.substitutions: + substitutions.update(key) + personalization["substitutions"] = substitutions + + if self.custom_args is not None: + custom_args = {} + for key in self.custom_args: + custom_args.update(key) + personalization["custom_args"] = custom_args + + if self.send_at is not None: + personalization["send_at"] = self.send_at + return personalization diff --git a/sendgrid/helpers/mail/sandbox_mode.py b/sendgrid/helpers/mail/sandbox_mode.py new file mode 100644 index 000000000..31f851d77 --- /dev/null +++ b/sendgrid/helpers/mail/sandbox_mode.py @@ -0,0 +1,21 @@ +class SandBoxMode(object): + + def __init__(self, enable=None): + self._enable = None + + if enable is not None: + self.enable = enable + + @property + def enable(self): + return self._enable + + @enable.setter + def enable(self, value): + self._enable = value + + def get(self): + sandbox_mode = {} + if self.enable is not None: + sandbox_mode["enable"] = self.enable + return sandbox_mode diff --git a/sendgrid/helpers/mail/section.py b/sendgrid/helpers/mail/section.py new file mode 100644 index 000000000..493f9b958 --- /dev/null +++ b/sendgrid/helpers/mail/section.py @@ -0,0 +1,33 @@ +class Section(object): + + def __init__(self, key=None, value=None): + self._key = None + self._value = None + + if key is not None: + self.key = key + + if value is not None: + self.value = value + + @property + def key(self): + return self._key + + @key.setter + def key(self, value): + self._key = value + + @property + def value(self): + return self._value + + @value.setter + def value(self, value): + self._value = value + + def get(self): + section = {} + if self.key is not None and self.value is not None: + section[self.key] = self.value + return section diff --git a/sendgrid/helpers/mail/spam_check.py b/sendgrid/helpers/mail/spam_check.py new file mode 100644 index 000000000..67ee61ebc --- /dev/null +++ b/sendgrid/helpers/mail/spam_check.py @@ -0,0 +1,51 @@ +class SpamCheck(object): + + def __init__(self, enable=None, threshold=None, post_to_url=None): + self._enable = None + self._threshold = None + self._post_to_url = None + + if enable is not None: + self.enable = enable + + if threshold is not None: + self.threshold = threshold + + if post_to_url is not None: + self.post_to_url = post_to_url + + @property + def enable(self): + return self._enable + + @enable.setter + def enable(self, value): + self._enable = value + + @property + def threshold(self): + return self._threshold + + @threshold.setter + def threshold(self, value): + self._threshold = value + + @property + def post_to_url(self): + return self._post_to_url + + @post_to_url.setter + def post_to_url(self, value): + self._post_to_url = value + + def get(self): + spam_check = {} + if self.enable is not None: + spam_check["enable"] = self.enable + + if self.threshold is not None: + spam_check["threshold"] = self.threshold + + if self.post_to_url is not None: + spam_check["post_to_url"] = self.post_to_url + return spam_check diff --git a/sendgrid/helpers/mail/subscription_tracking.py b/sendgrid/helpers/mail/subscription_tracking.py new file mode 100644 index 000000000..a9a155cbc --- /dev/null +++ b/sendgrid/helpers/mail/subscription_tracking.py @@ -0,0 +1,63 @@ +class SubscriptionTracking(object): + + def __init__(self, enable=None, text=None, html=None, substitution_tag=None): + self._enable = None + self._text = None + self._html = None + self._substitution_tag = None + + if enable is not None: + self.enable = enable + if text is not None: + self.text = text + if html is not None: + self.html = html + if substitution_tag is not None: + self.substitution_tag = substitution_tag + + @property + def enable(self): + return self._enable + + @enable.setter + def enable(self, value): + self._enable = value + + @property + def text(self): + return self._text + + @text.setter + def text(self, value): + self._text = value + + @property + def html(self): + return self._html + + @html.setter + def html(self, value): + self._html = value + + @property + def substitution_tag(self): + return self._substitution_tag + + @substitution_tag.setter + def substitution_tag(self, value): + self._substitution_tag = value + + def get(self): + subscription_tracking = {} + if self.enable is not None: + subscription_tracking["enable"] = self.enable + + if self.text is not None: + subscription_tracking["text"] = self.text + + if self.html is not None: + subscription_tracking["html"] = self.html + + if self.substitution_tag is not None: + subscription_tracking["substitution_tag"] = self.substitution_tag + return subscription_tracking diff --git a/sendgrid/helpers/mail/substitution.py b/sendgrid/helpers/mail/substitution.py new file mode 100644 index 000000000..26c908192 --- /dev/null +++ b/sendgrid/helpers/mail/substitution.py @@ -0,0 +1,33 @@ +class Substitution(object): + + def __init__(self, key=None, value=None): + self._key = None + self._value = None + + if key is not None: + self.key = key + + if value is not None: + self.value = value + + @property + def key(self): + return self._key + + @key.setter + def key(self, value): + self._key = value + + @property + def value(self): + return self._value + + @value.setter + def value(self, value): + self._value = value + + def get(self): + substitution = {} + if self.key is not None and self.value is not None: + substitution[self.key] = self.value + return substitution diff --git a/sendgrid/helpers/mail/tracking_settings.py b/sendgrid/helpers/mail/tracking_settings.py new file mode 100644 index 000000000..6470e77d6 --- /dev/null +++ b/sendgrid/helpers/mail/tracking_settings.py @@ -0,0 +1,52 @@ +class TrackingSettings(object): + + def __init__(self): + self._click_tracking = None + self._open_tracking = None + self._subscription_tracking = None + self._ganalytics = None + + @property + def click_tracking(self): + return self._click_tracking + + @click_tracking.setter + def click_tracking(self, value): + self._click_tracking = value + + @property + def open_tracking(self): + return self._open_tracking + + @open_tracking.setter + def open_tracking(self, value): + self._open_tracking = value + + @property + def subscription_tracking(self): + return self._subscription_tracking + + @subscription_tracking.setter + def subscription_tracking(self, value): + self._subscription_tracking = value + + @property + def ganalytics(self): + return self._ganalytics + + @ganalytics.setter + def ganalytics(self, value): + self._ganalytics = value + + def get(self): + tracking_settings = {} + if self.click_tracking is not None: + tracking_settings["click_tracking"] = self.click_tracking.get() + if self.open_tracking is not None: + tracking_settings["open_tracking"] = self.open_tracking.get() + if self.subscription_tracking is not None: + tracking_settings[ + "subscription_tracking"] = self.subscription_tracking.get() + if self.ganalytics is not None: + tracking_settings["ganalytics"] = self.ganalytics.get() + return tracking_settings