Skip to content

Commit

Permalink
[Voice] - support for the whole API
Browse files Browse the repository at this point in the history
  • Loading branch information
650elx authored May 10, 2024
1 parent b45a4f3 commit cdeabc6
Show file tree
Hide file tree
Showing 64 changed files with 2,101 additions and 5 deletions.
13 changes: 9 additions & 4 deletions .github/workflows/run-tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -24,10 +24,15 @@ env:
APPLICATION_SECRET: ${{ secrets.APPLICATION_SECRET }}
APPLICATION_KEY: ${{ secrets.APPLICATION_KEY }}
VERIFICATION_ID: ${{ secrets.VERIFICATION_ID }}
VERIFICATION_ORIGIN: ${{ secrets.VERIFICATION_ORIGIN}}
VERIFICATION_REQUEST_SIGNATURE_TIMESTAMP: ${{ secrets.VERIFICATION_REQUEST_SIGNATURE_TIMESTAMP}}
VERIFICATION_REQUEST_WITH_EMPTY_BODY_SIGNATURE: ${{ secrets.VERIFICATION_REQUEST_WITH_EMPTY_BODY_SIGNATURE}}
VERIFICATION_REQUEST_SIGNATURE: ${{ secrets.VERIFICATION_REQUEST_SIGNATURE}}
VERIFICATION_ORIGIN: ${{ secrets.VERIFICATION_ORIGIN }}
VERIFICATION_REQUEST_SIGNATURE_TIMESTAMP: ${{ secrets.VERIFICATION_REQUEST_SIGNATURE_TIMESTAMP }}
VERIFICATION_REQUEST_WITH_EMPTY_BODY_SIGNATURE: ${{ secrets.VERIFICATION_REQUEST_WITH_EMPTY_BODY_SIGNATURE }}
VERIFICATION_REQUEST_SIGNATURE: ${{ secrets.VERIFICATION_REQUEST_SIGNATURE }}
VOICE_ORIGIN: ${{ secrets.VOICE_ORIGIN }}
VOICE_ORIGIN_PHONE_NUMBER: ${{ secrets.VOICE_ORIGIN_PHONE_NUMBER }}
VOICE_CALL_ID: ${{ secrets.VOICE_CALL_ID }}
CONFERENCE_ID: ${{ secrets.CONFERENCE_ID }}
CONFERENCE_CALL_ID: ${{ secrets.CONFERENCE_CALL_ID }}

jobs:
build:
Expand Down
4 changes: 3 additions & 1 deletion sinch/core/clients/sinch_client_async.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,8 @@
from sinch.domains.numbers import NumbersAsync
from sinch.domains.conversation import ConversationAsync
from sinch.domains.sms import SMSAsync
from sinch.domains.verification import Verification as VerificationAsync
from sinch.domains.verification import VerificationAsync
from sinch.domains.voice import VoiceAsync


class SinchClientAsync(SinchClientBase):
Expand Down Expand Up @@ -43,3 +44,4 @@ def __init__(
self.conversation = ConversationAsync(self)
self.sms = SMSAsync(self)
self.verification = VerificationAsync(self)
self.voice = VoiceAsync(self)
2 changes: 2 additions & 0 deletions sinch/core/clients/sinch_client_base.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
from sinch.domains.numbers import NumbersBase
from sinch.domains.conversation import ConversationBase
from sinch.domains.sms import SMSBase
from sinch.domains.voice import VoiceBase


class SinchClientBase(ABC):
Expand All @@ -18,6 +19,7 @@ class SinchClientBase(ABC):
numbers = NumbersBase
conversation = ConversationBase
sms = SMSBase
voice = VoiceBase

@abstractmethod
def __init__(
Expand Down
23 changes: 23 additions & 0 deletions sinch/core/clients/sinch_client_configuration.py
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,9 @@ def __init__(
self.auth_origin = "auth.sinch.com"
self.numbers_origin = "numbers.api.sinch.com"
self.verification_origin = "verification.api.sinch.com"
self.voice_applications_origin = "callingapi.sinch.com"
self._voice_domain = "{}.api.sinch.com"
self._voice_region = None
self._conversation_region = "eu"
self._conversation_domain = ".conversation.api.sinch.com"
self._sms_region = "us"
Expand All @@ -46,6 +49,7 @@ def __init__(
self._set_conversation_origin()
self._set_sms_origin()
self._set_templates_origin()
self._set_voice_origin()

if logger_name:
self.logger = logging.getLogger(logger_name)
Expand All @@ -54,6 +58,25 @@ def __init__(
else:
self.logger = logging.getLogger("Sinch")

def _set_voice_origin(self):
if not self._voice_region:
self.voice_origin = self._voice_domain.format("calling")
else:
self.voice_origin = self._voice_domain.format("calling-" + self._voice_region)

def _set_voice_region(self, region):
self._voice_region = region
self._set_voice_origin()

def _get_voice_region(self):
return self._voice_region

voice_region = property(
_get_voice_region,
_set_voice_region,
doc="Voice Region"
)

def _set_sms_origin(self):
self.sms_origin = self._sms_domain.format(self._sms_region)

Expand Down
2 changes: 2 additions & 0 deletions sinch/core/clients/sinch_client_sync.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
from sinch.domains.conversation import Conversation
from sinch.domains.sms import SMS
from sinch.domains.verification import Verification
from sinch.domains.voice import Voice


class SinchClient(SinchClientBase):
Expand Down Expand Up @@ -43,3 +44,4 @@ def __init__(
self.conversation = Conversation(self)
self.sms = SMS(self)
self.verification = Verification(self)
self.voice = Voice(self)
12 changes: 12 additions & 0 deletions sinch/core/deserializers.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
from datetime import datetime


def timestamp_to_datetime_in_utc_deserializer(timestamp: str):
"""
Older Python versions (like 3.9) do not support "Z" as a TZ information.
One needs to use '+00:00' to represent UTC tz.
"""
if timestamp.endswith("Z"):
timestamp = timestamp[:-1]

return datetime.fromisoformat(timestamp + "+00:00")
Loading

0 comments on commit cdeabc6

Please sign in to comment.