Skip to content

Commit e0d827a

Browse files
committed
VAPI-3435 Simplify Refer to reuse Transfer's SipUri
Remove ReferCompleteCallback (will land later via a separate api-specs-driven PR once VAPI-3440 merges) and delete the distinct ReferSipUri type. Refer now takes the existing Transfer-flavored SipUri directly, matching the plain, validation-free style of the other BXML verb models in this SDK.
1 parent 47a9d68 commit e0d827a

10 files changed

Lines changed: 18 additions & 368 deletions

File tree

.openapi-generator/FILES

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -197,7 +197,6 @@ bandwidth/models/thumbnail_alignment_enum.py
197197
bandwidth/models/transcribe_recording.py
198198
bandwidth/models/transcription.py
199199
bandwidth/models/transcription_available_callback.py
200-
bandwidth/models/refer_complete_callback.py
201200
bandwidth/models/transfer_answer_callback.py
202201
bandwidth/models/transfer_complete_callback.py
203202
bandwidth/models/transfer_disconnect_callback.py

bandwidth/__init__.py

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -217,7 +217,6 @@
217217
"TranscribeRecording",
218218
"Transcription",
219219
"TranscriptionAvailableCallback",
220-
"ReferCompleteCallback",
221220
"TransferAnswerCallback",
222221
"TransferCompleteCallback",
223222
"TransferDisconnectCallback",
@@ -444,7 +443,6 @@
444443
from bandwidth.models.transcribe_recording import TranscribeRecording as TranscribeRecording
445444
from bandwidth.models.transcription import Transcription as Transcription
446445
from bandwidth.models.transcription_available_callback import TranscriptionAvailableCallback as TranscriptionAvailableCallback
447-
from bandwidth.models.refer_complete_callback import ReferCompleteCallback as ReferCompleteCallback
448446
from bandwidth.models.transfer_answer_callback import TransferAnswerCallback as TransferAnswerCallback
449447
from bandwidth.models.transfer_complete_callback import TransferCompleteCallback as TransferCompleteCallback
450448
from bandwidth.models.transfer_disconnect_callback import TransferDisconnectCallback as TransferDisconnectCallback

bandwidth/models/__init__.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -191,7 +191,6 @@
191191
from bandwidth.models.transcribe_recording import TranscribeRecording
192192
from bandwidth.models.transcription import Transcription
193193
from bandwidth.models.transcription_available_callback import TranscriptionAvailableCallback
194-
from bandwidth.models.refer_complete_callback import ReferCompleteCallback
195194
from bandwidth.models.transfer_answer_callback import TransferAnswerCallback
196195
from bandwidth.models.transfer_complete_callback import TransferCompleteCallback
197196
from bandwidth.models.transfer_disconnect_callback import TransferDisconnectCallback

bandwidth/models/bxml/verbs/__init__.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,6 @@
1212
from .play_audio import PlayAudio
1313
from .record import Record
1414
from .refer import Refer
15-
from .refer_sip_uri import ReferSipUri
1615
from .redirect import Redirect
1716
from .resume_recording import ResumeRecording
1817
from .ring import Ring

bandwidth/models/bxml/verbs/refer.py

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -6,13 +6,13 @@
66
@copyright Bandwidth INC
77
"""
88
from ..nestable_verb import NestableVerb
9-
from .refer_sip_uri import ReferSipUri
9+
from .sip_uri import SipUri
1010

1111

1212
class Refer(NestableVerb):
1313

1414
def __init__(
15-
self, sip_uri: ReferSipUri,
15+
self, sip_uri: SipUri,
1616
refer_complete_url: str=None, refer_complete_method: str=None,
1717
tag: str=None
1818
):
@@ -24,13 +24,12 @@ def __init__(
2424
redirects away from Bandwidth entirely. This is a SIP protocol
2525
property, not a Bandwidth design choice. As a result, BXML returned in
2626
response to the referComplete callback is only meaningful for failure
27-
handling there is no live call to act on after success.
27+
handling - there is no live call to act on after success.
2828
2929
Args:
30-
sip_uri (ReferSipUri): The SIP URI to refer the call to. Required.
31-
Exactly one <SipUri> child element is allowed. Use ReferSipUri,
32-
not SipUri — the Transfer SipUri carries callbacks and auth
33-
fields that are not valid in a REFER context.
30+
sip_uri (SipUri): The SIP URI to refer the call to. Required.
31+
Exactly one <SipUri> child element is allowed. This is the
32+
same SipUri model used by <Transfer>.
3433
refer_complete_url (str, optional): URL to send the Refer Complete
3534
event to when the REFER flow finishes (success or failure).
3635
May be a relative URL. Defaults to None.

bandwidth/models/bxml/verbs/refer_sip_uri.py

Lines changed: 0 additions & 31 deletions
This file was deleted.

bandwidth/models/bxml/verbs/sip_uri.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,8 @@ def __init__(
1818
):
1919
"""Initialize a <SipUri> verb
2020
21+
This SipUri is shared between the <Transfer> and <Refer> verbs.
22+
2123
Args:
2224
uri (str): A SIP URI to transfer the call to (e.g. sip:user@server.com)
2325
uui (str, optional): he value of the User-To-User header to send within the initial INVITE. Must include the encoding parameter as specified in RFC 7433. Only base64 and jwt encoding are currently allowed. This value, including the encoding specifier, may not exceed 256 characters. Defaults to None.

bandwidth/models/refer_complete_callback.py

Lines changed: 0 additions & 149 deletions
This file was deleted.

test/unit/models/bxml/test_refer.py

Lines changed: 10 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -7,13 +7,13 @@
77
"""
88
import unittest
99

10-
from bandwidth.models.bxml import Refer, ReferSipUri, SipUri, Verb, NestableVerb
10+
from bandwidth.models.bxml import Refer, SipUri, Verb, NestableVerb
1111

1212

1313
class TestRefer(unittest.TestCase):
1414

1515
def setUp(self):
16-
self.sip_uri = ReferSipUri(uri="sip:alice@atlanta.example.com")
16+
self.sip_uri = SipUri(uri="sip:alice@atlanta.example.com")
1717
self.refer = Refer(
1818
sip_uri=self.sip_uri,
1919
refer_complete_url="https://example.com/handleRefer",
@@ -31,19 +31,14 @@ def test_to_bxml(self):
3131
assert expected == self.refer.to_bxml()
3232

3333
def test_minimal(self):
34-
minimal_refer = Refer(sip_uri=ReferSipUri(uri="sip:bob@example.com"))
34+
minimal_refer = Refer(sip_uri=SipUri(uri="sip:bob@example.com"))
3535
expected = '<Refer><SipUri>sip:bob@example.com</SipUri></Refer>'
3636
assert expected == minimal_refer.to_bxml()
3737

38-
def test_refer_sip_uri_is_not_transfer_sip_uri(self):
39-
"""ReferSipUri is a distinct type from the Transfer SipUri — no Transfer-specific
40-
attributes (transfer_answer_url, uui, auth, etc.) are accepted."""
41-
assert not isinstance(self.sip_uri, SipUri)
42-
assert isinstance(self.sip_uri, ReferSipUri)
43-
44-
def test_refer_sip_uri_has_no_transfer_attributes(self):
45-
"""ReferSipUri carries only uri — no Transfer baggage."""
46-
assert not hasattr(self.sip_uri, 'transfer_answer_url')
47-
assert not hasattr(self.sip_uri, 'uui')
48-
assert not hasattr(self.sip_uri, 'username')
49-
assert not hasattr(self.sip_uri, 'password')
38+
def test_shares_sip_uri_with_transfer(self):
39+
"""Refer uses the same SipUri model as Transfer, including its
40+
transfer-flavored attributes if the caller sets them."""
41+
sip_uri = SipUri(uri="sip:alice@atlanta.example.com", uui="test")
42+
refer = Refer(sip_uri=sip_uri)
43+
expected = '<Refer><SipUri uui="test">sip:alice@atlanta.example.com</SipUri></Refer>'
44+
assert expected == refer.to_bxml()

0 commit comments

Comments
 (0)