From 49eb5dd7bebe99e2ae3638634aa2132354122e61 Mon Sep 17 00:00:00 2001 From: Fuad Date: Thu, 11 Jan 2024 19:29:51 +0300 Subject: [PATCH 1/2] enhancement: add clean_phone_numbers method to standardize numbers to E.164 format --- nextsms/__init__.py | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/nextsms/__init__.py b/nextsms/__init__.py index 2514207..4c21fc0 100644 --- a/nextsms/__init__.py +++ b/nextsms/__init__.py @@ -1,5 +1,6 @@ import sys import requests +import phonenumbers from base64 import b64encode from collections import namedtuple from typing import List, Dict, Union, Iterable @@ -121,6 +122,32 @@ def create_header(self) -> Dict: 'Authorization': f'Basic {self._user.secret_key}' } + def clean_phone_numbers(self, phone_numbers: List[str], country_code: str = 'TZ') -> List[str]: + """ + Standardize phone numbers to E164 format + + Args: + phone_numbers (List[str]): List of phone numbers to be standardized + country_code (str, optional): Country code to be used. Defaults to 'TZ' + + Raises: + TypeError: If phone_number is not of type + + Returns: + List[str]: List of standardized phone numbers + + Example: + >> import nextsms + >> sender = nextsms('KalebuJordan', 'kalebu@opensource') + >> sender.clean_phone_numbers(['0757294146', '0754205561']) + """ + if not isinstance(phone_number, list): + raise TypeError( + f"phone_number should be of type not {type(phone_number)}") + + return [phonenumbers.format_number( + phonenumbers.parse(number, country_code), phonenumbers.PhoneNumberFormat.E164) for number in phone_number] + def sendsms(self, message: str, recipients: Union[str, List[str]], sender_id: str = "NEXTSMS") -> Dict: """Method to send sms using nextsms gateway From ae39faae1413cc24329c3a91c5d11b5622ebfc5d Mon Sep 17 00:00:00 2001 From: Fuad Date: Thu, 11 Jan 2024 19:30:03 +0300 Subject: [PATCH 2/2] update dependencies --- setup.py | 1 + 1 file changed, 1 insertion(+) diff --git a/setup.py b/setup.py index b47747c..aa3e11c 100644 --- a/setup.py +++ b/setup.py @@ -28,6 +28,7 @@ install_requires=[ 'requests', + 'phonenumbers', ], python_requires=">=3.6",