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
8 changes: 7 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,7 @@ pip-delete-this-directory.txt
# Unit test / coverage reports
htmlcov/
.tox/
tox.ini
.nox/
.coverage
.coverage.*
Expand Down Expand Up @@ -129,4 +130,9 @@ cython_debug/
.idea/

# Poetry
poetry.lock
poetry.lock

# .DS_Store files
.DS_Store

qodana.yaml
1 change: 1 addition & 0 deletions pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@ keywords = ["sinch", "sdk"]
python = ">=3.9"
requests = "*"
httpx = "*"
pydantic = ">=2.0.0"

[build-system]
requires = ["poetry-core"]
Expand Down
6 changes: 5 additions & 1 deletion requirements-dev.txt
Original file line number Diff line number Diff line change
@@ -1,11 +1,15 @@
# Testing
pytest
pytest-asyncio
pytest-mock
coverage

# Code Quality
flake8

# HTTP Libraries
httpx
requests
requests

# Data Validation
pydantic >= 2.0.0
106 changes: 1 addition & 105 deletions sinch/domains/numbers/__init__.py
Original file line number Diff line number Diff line change
@@ -1,11 +1,7 @@
from sinch.core.pagination import TokenBasedPaginator, AsyncTokenBasedPaginator
from sinch.domains.numbers.endpoints.available.search_for_number import SearchForNumberEndpoint
from sinch.domains.numbers.endpoints.available.list_available_numbers import AvailableNumbersEndpoint
from sinch.domains.numbers.endpoints.available.activate_number import ActivateNumberEndpoint
from sinch.domains.numbers.endpoints.available.rent_any_number import RentAnyNumberEndpoint
from sinch.domains.numbers.available_numbers import AvailableNumbers
from sinch.domains.numbers.endpoints.callbacks.get_configuration import GetNumbersCallbackConfigurationEndpoint
from sinch.domains.numbers.endpoints.callbacks.update_configuration import UpdateNumbersCallbackConfigurationEndpoint

from sinch.domains.numbers.endpoints.active.list_active_numbers_for_project import ListActiveNumbersEndpoint
from sinch.domains.numbers.endpoints.active.update_number_configuration import UpdateNumberConfigurationEndpoint
from sinch.domains.numbers.endpoints.active.get_number_configuration import GetNumberConfigurationEndpoint
Expand All @@ -17,15 +13,7 @@
ListActiveNumbersRequest, GetNumberConfigurationRequest,
UpdateNumberConfigurationRequest, ReleaseNumberFromProjectRequest
)
from sinch.domains.numbers.models.available.requests import (
ListAvailableNumbersRequest, ActivateNumberRequest,
CheckNumberAvailabilityRequest, RentAnyNumberRequest
)
from sinch.domains.numbers.models.regions.responses import ListAvailableRegionsResponse
from sinch.domains.numbers.models.available.responses import (
ListAvailableNumbersResponse, ActivateNumberResponse,
CheckNumberAvailabilityResponse
)
from sinch.domains.numbers.models.active.responses import (
ListActiveNumbersResponse, UpdateNumberConfigurationResponse,
GetNumberConfigurationResponse, ReleaseNumberFromProjectResponse
Expand All @@ -39,98 +27,6 @@
)


class AvailableNumbers:
def __init__(self, sinch):
self._sinch = sinch

def list(
self,
region_code: str,
number_type: str,
number_pattern: str = None,
number_search_pattern: str = None,
capabilities: list = None,
page_size: int = None
) -> ListAvailableNumbersResponse:
"""
Search for available virtual numbers using a variety of parameters to filter results.
For additional documentation, see https://www.sinch.com and visit our developer portal.
"""
return self._sinch.configuration.transport.request(
AvailableNumbersEndpoint(
project_id=self._sinch.configuration.project_id,
request_data=ListAvailableNumbersRequest(
region_code=region_code,
number_type=number_type,
page_size=page_size,
capabilities=capabilities,
number_search_pattern=number_search_pattern,
number_pattern=number_pattern
)
)
)

def activate(
self,
phone_number: str,
sms_configuration: dict = None,
voice_configuration: dict = None
) -> ActivateNumberResponse:
"""
Activate a virtual number to use with SMS products, Voice products, or both.
For additional documentation, see https://www.sinch.com and visit our developer portal.
"""
return self._sinch.configuration.transport.request(
ActivateNumberEndpoint(
project_id=self._sinch.configuration.project_id,
request_data=ActivateNumberRequest(
phone_number=phone_number,
sms_configuration=sms_configuration,
voice_configuration=voice_configuration
)
)
)

def rent_any(
self,
region_code: str,
type_: str,
number_pattern: str = None,
capabilities: list = None,
sms_configuration: dict = None,
voice_configuration: dict = None,
callback_url: str = None
) -> RentAnyNumberRequest:
return self._sinch.configuration.transport.request(
RentAnyNumberEndpoint(
project_id=self._sinch.configuration.project_id,
request_data=RentAnyNumberRequest(
region_code=region_code,
type_=type_,
number_pattern=number_pattern,
capabilities=capabilities,
sms_configuration=sms_configuration,
voice_configuration=voice_configuration,
callback_url=callback_url
)
)
)

def check_availability(self, phone_number: str) -> CheckNumberAvailabilityResponse:
"""
Enter a specific phone number to check availability.
For additional documentation, see https://www.sinch.com and visit our developer portal.
"""
return self._sinch.configuration.transport.request(
SearchForNumberEndpoint(
project_id=self._sinch.configuration.project_id,
request_data=CheckNumberAvailabilityRequest(
phone_number=phone_number
)
)
)


class ActiveNumbers:
def __init__(self, sinch):
self._sinch = sinch
Expand Down
Loading