Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
34 changes: 34 additions & 0 deletions bandwidth/model/bxml/terminal_verb.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
"""
terminal_verb.py

Defines the terminal_verb class BXML verbs that cant have nested_verbs

@copyright Bandwidth INC
"""
from .verb import Verb


class TerminalVerb(Verb):
"""Base class for BXML verbs
"""

def __init__(self, tag: str, content: str = None, attributes: dict = None):
"""Initialize the verb model

Args:
tag (str): Name of the XML element
content (str, optional): XML element content. Defaults to None.
attributes (dict, optional): XML element attributes. Defaults to None.
"""
super().__init__(tag=tag, content=content, attributes=attributes, nested_verbs=None)

def add_verb(self, verb: Verb):
"""Adding verbs is not allowed for this class

Args:
verb (Verb): BXML verb

Raises:
AttributeError: This method is not allowed for <SipUri>
"""
raise AttributeError('Adding verbs is not supported by this verb')
8 changes: 4 additions & 4 deletions bandwidth/model/bxml/verb.py
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ class Verb:
"""Base class for BXML verbs
"""

def __init__(self, tag: str, content: str = None, attributes: dict = None, nested_verbs: list[BxmlVerb] = None):
def __init__(self, tag: str, content: str = None, attributes: dict = None, nested_verbs: list[Verb] = None):
"""Initialize the verb model

Args:
Expand All @@ -36,18 +36,18 @@ def __len__(self) -> int:
int: Length of self._nested_verbs
"""
return len(self._nested_verbs)

def __getitem__(self, position) -> Verb:
"""Override default getitem method. Makes the object iterable.

Args:
position (int): Desired self._nested_verbs list position

Returns:
BxmlVerb: Desired BXML verb
BxmlVerb: Desired BXML verb
"""
return self._nested_verbs[position]

def _set_attributes(self, root: ET.Element):
"""Set XML attributes on an Element

Expand Down
1 change: 1 addition & 0 deletions bandwidth/model/bxml/verbs/__init__.py
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
from .bridge import Bridge
from .phone_number import PhoneNumber
from .sip_uri import SipUri
from .tag import Tag
Expand Down
77 changes: 77 additions & 0 deletions bandwidth/model/bxml/verbs/bridge.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,77 @@
"""
bridge.py

Bandwidth's Bridge BXML verb

@copyright Bandwidth INC
"""
from ..terminal_verb import TerminalVerb


class Bridge(TerminalVerb):

def __init__(
self, target_call: str, bridge_complete_url: str=None,
bridge_complete_method: str=None,
bridge_complete_fallback_url: str=None,
bridge_complete_fallback_method: str=None,
bridge_target_complete_url: str=None,
bridge_target_complete_method: str=None,
bridge_target_complete_fallback_url: str=None,
bridge_target_complete_fallback_method: str=None,
username: str=None, password: str=None,
fallback_username: str=None, fallback_password: str=None,
tag: str=None
):
"""Initialize a <Bridge> verb

Args:
target_call (str): _description_
bridge_complete_url (str, optional): _description_. Defaults to None.
bridge_complete_method (str, optional): _description_. Defaults to None.
bridge_complete_fallback_url (str, optional): _description_. Defaults to None.
bridge_complete_fallback_method (str, optional): _description_. Defaults to None.
bridge_target_complete_url (str, optional): _description_. Defaults to None.
bridge_target_complete_method (str, optional): _description_. Defaults to None.
bridge_target_complete_fallback_url (str, optional): _description_. Defaults to None.
bridge_target_complete_fallback_method (str, optional): _description_. Defaults to None.
username (str, optional): _description_. Defaults to None.
password (str, optional): _description_. Defaults to None.
fallback_username (str, optional): _description_. Defaults to None.
fallback_password (str, optional): _description_. Defaults to None.
tag (str, optional): _description_. Defaults to None.
"""
self.target_call = target_call
self.bridge_complete_url = bridge_complete_url
self.bridge_complete_method = bridge_complete_method
self.bridge_complete_fallback_url = bridge_complete_fallback_url
self.bridge_complete_fallback_method = bridge_complete_fallback_method
self.bridge_target_complete_url = bridge_target_complete_url
self.bridge_target_complete_method = bridge_target_complete_method
self.bridge_target_complete_fallback_url = bridge_target_complete_fallback_url
self.bridge_target_complete_fallback_method = bridge_target_complete_fallback_method
self.username = username
self.password = password
self.fallback_username = fallback_username
self.fallback_password = fallback_password
self.tag = tag
self.attributes = {
"bridgeCompleteUrl": self.bridge_complete_url,
"bridgeCompleteMethod": self.bridge_complete_method,
"bridgeCompleteFallbackUrl": self.bridge_complete_fallback_url,
"bridgeCompleteFallbackMethod": self.bridge_complete_fallback_method,
"bridgeTargetCompleteUrl": self.bridge_target_complete_url,
"bridgeTargetCompleteMethod": self.bridge_target_complete_method,
"bridgeTargetCompleteFallback_url": self.bridge_target_complete_fallback_url,
"bridgeTargetCompleteFallbackMethod": self.bridge_target_complete_fallback_method,
"username": self.username,
"password": self.password,
"fallbackUsername": self.fallback_username,
"fallbackPassword": self.fallback_password,
"tag": self.tag
}
super().__init__(
tag="Bridge",
content=self.target_call,
attributes=self.attributes
)
54 changes: 27 additions & 27 deletions bandwidth/model/bxml/verbs/phone_number.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,10 +5,10 @@

@copyright Bandwidth INC
"""
from ..verb import Verb
from ..terminal_verb import TerminalVerb


class PhoneNumber(Verb):
class PhoneNumber(TerminalVerb):

def __init__(
self, number: str, transfer_answer_url: str=None, transfer_answer_method: str=None,
Expand All @@ -32,33 +32,33 @@ def __init__(
fallback_password (str, optional): The password to send in the HTTP request to transferAnswerFallbackUrl. Defaults to None.
tag (str, optional): A custom string that will be sent with these and all future callbacks unless overwritten by a future tag attribute or cleared. May be cleared by setting tag="" Max length 256 characters. Defaults to None.
"""
self.number = number
self.transfer_answer_url = transfer_answer_url
self.transfer_answer_method = transfer_answer_method
self.transfer_answer_fallback_url = transfer_answer_fallback_url
self.transfer_answer_fallback_method = transfer_answer_fallback_method
self.transfer_disconnect_url = transfer_disconnect_url
self.transfer_disconnect_method = transfer_disconnect_method
self.username = username
self.password = password
self.fallback_username = fallback_username
self.fallback_password = fallback_password
self.tag = tag
self.attributes = {
"transferAnswerUrl": transfer_answer_url,
"transferAnswerMethod": transfer_answer_method,
"transferAnswerFallbackUrl": transfer_answer_fallback_url,
"transferAnswerFallbackMethod": transfer_answer_fallback_method,
"transferDisconnectUrl": transfer_disconnect_url,
"transferDisconnectMethod": transfer_disconnect_method,
"username": username,
"password": password,
"fallbackUsername": fallback_username,
"fallbackPassword": fallback_password,
"tag": tag
"transferAnswerUrl": self.transfer_answer_url,
"transferAnswerMethod": self.transfer_answer_method,
"transferAnswerFallbackUrl": self.transfer_answer_fallback_url,
"transferAnswerFallbackMethod": self.transfer_answer_fallback_method,
"transferDisconnectUrl": self.transfer_disconnect_url,
"transferDisconnectMethod": self.transfer_disconnect_method,
"username": self.username,
"password": self.password,
"fallbackUsername": self.fallback_username,
"fallbackPassword": self.fallback_password,
"tag": self.tag
}
super().__init__(
tag="PhoneNumber",
content=number,
attributes=self.attributes,
nested_verbs=None
content=self.number,
attributes=self.attributes
)

def add_verb(self, verb: Verb):
"""Adding verbs is not allowed for <PhoneNumber>

Args:
verb (Verb): BXML verb

Raises:
AttributeError: This method is not allowed for <PhoneNumber>
"""
raise AttributeError('Adding verbs is not supported by <PhoneNumber>')
55 changes: 28 additions & 27 deletions bandwidth/model/bxml/verbs/sip_uri.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,10 +5,10 @@

@copyright Bandwidth INC
"""
from ..verb import Verb
from ..terminal_verb import TerminalVerb


class SipUri(Verb):
class SipUri(TerminalVerb):

def __init__(
self, uri: str, uui: str=None, transfer_answer_url: str=None, transfer_answer_method: str=None,
Expand All @@ -33,34 +33,35 @@ def __init__(
fallback_password (str, optional): The password to send in the HTTP request to transferAnswerFallbackUrl. Defaults to None.
tag (str, optional): A custom string that will be sent with these and all future callbacks unless overwritten by a future tag attribute or cleared. May be cleared by setting tag="" Max length 256 characters. Defaults to None.
"""
self.uri = uri
self.uui = uui
self.transfer_answer_url = transfer_answer_url
self.transfer_answer_method = transfer_answer_method
self.transfer_answer_fallback_url = transfer_answer_fallback_url
self.transfer_answer_fallback_method = transfer_answer_fallback_method
self.transfer_disconnect_url = transfer_disconnect_url
self.transfer_disconnect_method = transfer_disconnect_method
self.username = username
self.password = password
self.fallback_username = fallback_username
self.fallback_password = fallback_password
self.tag = tag
self.attributes = {
"uui": uui,
"transferAnswerUrl": transfer_answer_url,
"transferAnswerMethod": transfer_answer_method,
"transferAnswerFallbackUrl": transfer_answer_fallback_url,
"transferAnswerFallbackMethod": transfer_answer_fallback_method,
"transferDisconnectUrl": transfer_disconnect_url,
"transferDisconnectMethod": transfer_disconnect_method,
"username": username,
"password": password,
"fallbackUsername": fallback_username,
"fallbackPassword": fallback_password,
"tag": tag
"transferAnswerUrl": self.transfer_answer_url,
"transferAnswerMethod": self.transfer_answer_method,
"transferAnswerFallbackUrl": self.transfer_answer_fallback_url,
"transferAnswerFallbackMethod": self.transfer_answer_fallback_method,
"transferDisconnectUrl": self.transfer_disconnect_url,
"transferDisconnectMethod": self.transfer_disconnect_method,
"username": self.username,
"password": self.password,
"fallbackUsername": self.fallback_username,
"fallbackPassword": self.fallback_password,
"tag": self.tag
}
super().__init__(
tag="SipUri",
content=uri,
attributes=self.attributes,
nested_verbs=None
content=self.uri,
attributes=self.attributes
)

def add_verb(self, verb: Verb):
"""Adding verbs is not allowed for <SipUri>

Args:
verb (Verb): BXML verb

Raises:
AttributeError: This method is not allowed for <SipUri>
"""
raise AttributeError('Adding verbs is not supported by <SipUri>')
18 changes: 4 additions & 14 deletions bandwidth/model/bxml/verbs/tag.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,26 +5,16 @@

@copyright Bandwidth INC
"""
from ..verb import Verb
from ..terminal_verb import TerminalVerb


class Tag(Verb):
class Tag(TerminalVerb):

def __init__(self, content=""):
"""Initialize a <Tag> verb

Args:
content (str, optional): Custom tag value. Defaults to "".
"""
super().__init__(tag="Tag", content=content, attributes=None, nested_verbs=None)

def add_verb(self, verb: Verb):
"""Adding verbs is not allowed for <Tag>

Args:
verb (Verb): BXML verb

Raises:
AttributeError: This method is not allowed for <Tag>
"""
raise AttributeError('Adding verbs is not supported by <Tag>')
self.content = content
super().__init__(tag="Tag", content=self.content, attributes=None)
Loading