Skip to content

Commit 41344e4

Browse files
adding metadata and tags to message
1 parent 10e3a91 commit 41344e4

File tree

4 files changed

+243
-10
lines changed

4 files changed

+243
-10
lines changed

socketlabs/injectionapi/message/__imports__.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,4 +4,5 @@
44
from .bulkrecipient import BulkRecipient
55
from .customheader import CustomHeader
66
from .emailaddress import EmailAddress
7-
from .messagebase import MessageBase
7+
from .messagebase import MessageBase
8+
from .metadata import Metadata

socketlabs/injectionapi/message/basicmessage.py

Lines changed: 84 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
from .customheader import CustomHeader
33
from .emailaddress import EmailAddress
44
from .messagebase import MessageBase
5+
from .metadata import Metadata
56

67

78
class BasicMessage(MessageBase):
@@ -30,7 +31,7 @@ class BasicMessage(MessageBase):
3031
message.add_to_email_address(EmailAddress("[email protected]", "Recipient #4"))
3132
3233
"""
33-
34+
3435
def __init__(self):
3536
self._subject = None
3637
self._plain_text_body = None
@@ -47,6 +48,8 @@ def __init__(self):
4748
self._to_recipients = []
4849
self._cc_recipients = []
4950
self._bcc_recipients = []
51+
self._metadata = []
52+
self._tags = []
5053

5154
@property
5255
def to_email_address(self):
@@ -404,21 +407,93 @@ def custom_headers(self, val: list):
404407
if isinstance(item, CustomHeader):
405408
self._custom_headers.append(item)
406409

407-
def add_custom_header(self, header, val: str = None):
410+
def add_custom_header(self, name, val: str = None):
408411
"""
409-
Add a CustomHeader to the attachment
410-
:param header: the CustomHeader. CustomHeader, dict, and string is allowed
411-
:type header: CustomHeader, dict, str
412-
:param val: the custom header value, required if header is str
412+
Add a CustomHeader to the message
413+
:param name: the CustomHeader. CustomHeader, dict, and string is allowed
414+
:type name: CustomHeader, dict, str
415+
:param val: the custom header value, required if name is str
413416
:type val: str
414417
"""
415-
if isinstance(header, CustomHeader):
418+
if isinstance(name, CustomHeader):
416419
self._custom_headers.append(header)
417-
if isinstance(header, str):
420+
if isinstance(name, str):
418421
self._custom_headers.append(CustomHeader(header, val))
422+
if isinstance(name, dict):
423+
for name, value in name.items():
424+
self._custom_headers.append(CustomHeader(name, value))
425+
426+
@property
427+
def metadata(self):
428+
"""
429+
Get the list of Metadata.
430+
:return list of Metadata
431+
:rtype list
432+
"""
433+
return self._metadata
434+
435+
@metadata.setter
436+
def metadata(self, val: list):
437+
"""
438+
Set the list of Metadata.
439+
:param val: list of Metadata
440+
:type val: list
441+
"""
442+
self._metadata = []
443+
if val is not None:
444+
for item in val:
445+
if isinstance(item, Metadata):
446+
self._metadata.append(item)
447+
448+
def add_metadata(self, name, val: str = None):
449+
"""
450+
Add a Metadata item to the message
451+
:param name: the Metadata. Metadata, dict, and string is allowed
452+
:type name: Metadata, dict, str
453+
:param val: the metadata value, required if name is str
454+
:type val: str
455+
"""
456+
if isinstance(header, Metadata):
457+
self._metadata.append(header)
458+
if isinstance(header, str):
459+
self._metadata.append(Metadata(header, val))
419460
if isinstance(header, dict):
420461
for name, value in header.items():
421-
self._custom_headers.append(CustomHeader(name, value))
462+
self._metadata.append(Metadata(name, value))
463+
464+
@property
465+
def tags(self):
466+
"""
467+
Get the list of Metadata.
468+
:return list of Metadata
469+
:rtype list
470+
"""
471+
return self._tags
472+
473+
@tags.setter
474+
def tags(self, val: list):
475+
"""
476+
Set the list of Metadata.
477+
:param val: list of Metadata
478+
:type val: list
479+
"""
480+
self._tags = []
481+
if val is not None:
482+
for item in val:
483+
self._tags.append(item)
484+
485+
def add_tag(self, val: str):
486+
"""
487+
Add a Tag item to the message
488+
:param val: the tag value
489+
:type val: str
490+
"""
491+
if isinstance(val, str):
492+
self._tags.append(val)
493+
if isinstance(val, list):
494+
for value in val.items():
495+
self._tags.append(value)
496+
422497

423498
def __str__(self):
424499
"""

socketlabs/injectionapi/message/bulkmessage.py

Lines changed: 74 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
from .customheader import CustomHeader
44
from .emailaddress import EmailAddress
55
from .messagebase import MessageBase
6+
from .metadata import Metadata
67

78

89
class BulkMessage(MessageBase):
@@ -50,6 +51,8 @@ def __init__(self):
5051
self._custom_headers = []
5152
self._to_recipients = []
5253
self._global_merge_data = dict()
54+
self._metadata = []
55+
self._tags = []
5356

5457
@property
5558
def to_recipient(self):
@@ -381,6 +384,77 @@ def add_custom_header(self, header, val: str = None):
381384
for name, value in header.items():
382385
self._custom_headers.append(CustomHeader(name, value))
383386

387+
@property
388+
def metadata(self):
389+
"""
390+
Get the list of Metadata.
391+
:return list of Metadata
392+
:rtype list
393+
"""
394+
return self._metadata
395+
396+
@metadata.setter
397+
def metadata(self, val: list):
398+
"""
399+
Set the list of Metadata.
400+
:param val: list of Metadata
401+
:type val: list
402+
"""
403+
self._metadata = []
404+
if val is not None:
405+
for item in val:
406+
if isinstance(item, Metadata):
407+
self._metadata.append(item)
408+
409+
def add_metadata(self, name, val: str = None):
410+
"""
411+
Add a Metadata item to the message
412+
:param name: the Metadata. Metadata, dict, and string is allowed
413+
:type name: Metadata, dict, str
414+
:param val: the metadata value, required if name is str
415+
:type val: str
416+
"""
417+
if isinstance(header, Metadata):
418+
self._metadata.append(header)
419+
if isinstance(header, str):
420+
self._metadata.append(Metadata(header, val))
421+
if isinstance(header, dict):
422+
for name, value in header.items():
423+
self._metadata.append(Metadata(name, value))
424+
425+
@property
426+
def tags(self):
427+
"""
428+
Get the list of Metadata.
429+
:return list of Metadata
430+
:rtype list
431+
"""
432+
return self._tags
433+
434+
@tags.setter
435+
def tags(self, val: list):
436+
"""
437+
Set the list of Metadata.
438+
:param val: list of Metadata
439+
:type val: list
440+
"""
441+
self._tags = []
442+
if val is not None:
443+
for item in val:
444+
self._tags.append(item)
445+
446+
def add_tag(self, val: str):
447+
"""
448+
Add a Tag item to the message
449+
:param val: the tag value
450+
:type val: str
451+
"""
452+
if isinstance(val, str):
453+
self._tags.append(val)
454+
if isinstance(val, list):
455+
for value in val.items():
456+
self._tags.append(value)
457+
384458
def __str__(self):
385459
"""
386460
Represents the BulkMessage as a string (# of recipients & subject)
Lines changed: 83 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,83 @@
1+
from ..core.stringextension import StringExtension
2+
3+
4+
class Metadata(object):
5+
"""
6+
Represents a metadata as a name-value pair.
7+
8+
:Example:
9+
10+
metadata1 = Metadata()
11+
metadata1.name = "name1"
12+
metadata1.value = "value1"
13+
14+
metadata2 = Metadata("name1", "value1")
15+
16+
"""
17+
18+
def __init__(self, name: str = None, val: str = None):
19+
"""
20+
Initializes a new instance of the Metadata class
21+
:param name: the name of the metadata
22+
:type name: str
23+
:param val: the value of the metadata
24+
:type val: str
25+
"""
26+
self._name = name
27+
self._value = val
28+
29+
@property
30+
def name(self):
31+
"""
32+
Get the name
33+
:return the name
34+
:rtype str
35+
"""
36+
return str(self._name)
37+
38+
@name.setter
39+
def name(self, val: str):
40+
"""
41+
Set the name
42+
:param val: the name
43+
:type val: str
44+
"""
45+
self._name = val
46+
47+
@property
48+
def value(self):
49+
"""
50+
Get the value
51+
:return the value
52+
:rtype str
53+
"""
54+
return str(self._value)
55+
56+
@value.setter
57+
def value(self, val: str):
58+
"""
59+
Set the value
60+
:param val: the value
61+
:type val: str
62+
"""
63+
self._value = val
64+
65+
def isvalid(self):
66+
"""
67+
Determines if the Metadata is valid.
68+
:return the result
69+
:rtype bool
70+
"""
71+
validName = not StringExtension.is_none_or_white_space(self._name)
72+
validValue = not StringExtension.is_none_or_white_space(self._value)
73+
if validName and validValue:
74+
return True
75+
return False
76+
77+
def __str__(self):
78+
"""
79+
Represents the Metadata name-value pair as a string
80+
:return the string
81+
:rtype str
82+
"""
83+
return str(self._name + ", " + self._value)

0 commit comments

Comments
 (0)