(20241214) SMS also ported to the 'tokenKey' system.
This commit is contained in:
@@ -145,26 +145,38 @@ async def send_sms(
|
||||
:return: A standard response structure.
|
||||
"""
|
||||
|
||||
# ┏┓
|
||||
# ┃┃┏┓┏┓┏┓┏┓┏┓┏┏┓┏┏
|
||||
# ┣┛┛ ┗ ┣┛┛ ┗┛┗┗ ┛┛
|
||||
# ┛
|
||||
# ┏┓ ┓ ┏┓┓ ┓
|
||||
# ┣┫┓┏╋┣┓ ┃ ┣┓┏┓┏┃┏
|
||||
# ┛┗┗┻┗┛┗ ┗┛┛┗┗ ┗┛┗
|
||||
|
||||
# If the session token is invalid/expired:
|
||||
if kwargs.get("session_info") is None:
|
||||
return ResponseModel(
|
||||
status_code = StatusCodes.FAILED,
|
||||
http_code = HttpCodes.UNAUTHORIZED
|
||||
http_code = HttpCodes.UNAUTHORIZED,
|
||||
message = "invalid session"
|
||||
)
|
||||
|
||||
# ┏┓ ┓ ┏┳┓┓ ┏┓┳┳┓┏┓
|
||||
# ┗┓┏┓┏┓┏┫ ┃ ┣┓┏┓ ┗┓┃┃┃┗┓
|
||||
# ┗┛┗ ┛┗┗┻ ┻ ┛┗┗ ┗┛┛ ┗┗┛
|
||||
|
||||
# Get the token from the token key:
|
||||
auth_token = await current_app.mail_controller.get_token(
|
||||
mongo_conn = current_app.data_mongo,
|
||||
token_key = inbound_data.tokenKey
|
||||
)
|
||||
if auth_token is None: return ResponseModel(
|
||||
status_code = StatusCodes.FAILED,
|
||||
http_code = HttpCodes.UNAUTHORIZED,
|
||||
message = f"no such token key"
|
||||
)
|
||||
|
||||
# Send the SMS:
|
||||
client_response = await current_app.sms_controller.send(
|
||||
mongo_conn = current_app.data_mongo,
|
||||
http_client = current_app.http_client,
|
||||
token_id = inbound_data.tokenId,
|
||||
auth_token = auth_token,
|
||||
messages = inbound_data.message
|
||||
)
|
||||
|
||||
|
||||
+18
-21
@@ -141,7 +141,7 @@ class SMSController:
|
||||
success = False
|
||||
|
||||
# Get a token id:
|
||||
token_id = await current_app.core_auth_token_controller.get_token_id(
|
||||
token_key = await current_app.core_auth_token_controller.get_token_key(
|
||||
db_conn = db_conn,
|
||||
mongo_conn = mongo_conn,
|
||||
auth_token = auth_token,
|
||||
@@ -153,7 +153,7 @@ class SMSController:
|
||||
success = await current_app.core_auth_token_controller.set_token(
|
||||
db_conn = db_conn,
|
||||
mongo_conn = mongo_conn,
|
||||
token_id = token_id,
|
||||
token_key = token_key,
|
||||
auth_token = auth_token,
|
||||
token_notes = {},
|
||||
session_token = session_token
|
||||
@@ -165,13 +165,13 @@ class SMSController:
|
||||
@staticmethod
|
||||
async def get_token(
|
||||
mongo_conn: AsyncMongo,
|
||||
token_id: ObjectId | str = None,
|
||||
token_key: ObjectId | str = None,
|
||||
) -> CoreAuthTokenModel | None:
|
||||
|
||||
# Simply call the core model:
|
||||
return await current_app.core_auth_token_controller.get_token(
|
||||
mongo_conn = mongo_conn,
|
||||
token_id = token_id
|
||||
token_key = token_key
|
||||
)
|
||||
|
||||
# ┏┓ ┓
|
||||
@@ -181,7 +181,6 @@ class SMSController:
|
||||
@staticmethod
|
||||
async def __send_from_nimbus_sms_india(
|
||||
http_client: httpx.AsyncClient,
|
||||
token_id: ObjectId | str,
|
||||
auth_token: CoreAuthTokenModel,
|
||||
messages: List[NimbusSMSIndiaMessage],
|
||||
) -> SMSSendManyResults:
|
||||
@@ -215,7 +214,7 @@ class SMSController:
|
||||
send_results.smsMessages.append(CoreMessageModel(
|
||||
ts = client_response.ts,
|
||||
syncTs = date_time.get_current_utc_date_time(as_string = False),
|
||||
tokenId = ObjectId(token_id),
|
||||
tokenId = auth_token.authTokenId,
|
||||
serviceType = auth_token.serviceType,
|
||||
client = auth_token.client,
|
||||
clientMessageId = client_response.messageId,
|
||||
@@ -238,7 +237,6 @@ class SMSController:
|
||||
@staticmethod
|
||||
async def __send_from_savvy_bulk_sms_kenya(
|
||||
http_client: httpx.AsyncClient,
|
||||
token_id: ObjectId | str,
|
||||
auth_token: CoreAuthTokenModel,
|
||||
messages: List[SavvyBulkSMSKenyaMessage],
|
||||
) -> SMSSendManyResults:
|
||||
@@ -270,7 +268,7 @@ class SMSController:
|
||||
send_results.smsMessages.append(CoreMessageModel(
|
||||
ts = client_response.ts,
|
||||
syncTs = date_time.get_current_utc_date_time(as_string = False),
|
||||
tokenId = ObjectId(token_id),
|
||||
tokenId = auth_token.authTokenId,
|
||||
serviceType = auth_token.serviceType,
|
||||
client = auth_token.client,
|
||||
clientMessageId = client_response.messageId,
|
||||
@@ -294,37 +292,36 @@ class SMSController:
|
||||
self,
|
||||
mongo_conn: AsyncMongo,
|
||||
http_client: httpx.AsyncClient,
|
||||
token_id: ObjectId | str,
|
||||
# token_id: ObjectId | str,
|
||||
auth_token: CoreAuthTokenModel,
|
||||
messages: List[NimbusSMSIndiaMessage | SavvyBulkSMSKenyaMessage]
|
||||
) -> SMSSendManyResults:
|
||||
|
||||
# Start by assuming failure:
|
||||
send_results = SMSSendManyResults()
|
||||
|
||||
# We first load the authorization tokens:
|
||||
auth_token = await self.get_token(
|
||||
mongo_conn = mongo_conn,
|
||||
token_id = token_id,
|
||||
)
|
||||
|
||||
# If we failed to load the authorization tokens:
|
||||
if not auth_token:
|
||||
send_results.message = f"no such token id '{token_id}'"
|
||||
return send_results
|
||||
# # We first load the authorization tokens:
|
||||
# auth_token = await self.get_token(
|
||||
# mongo_conn = mongo_conn,
|
||||
# token_id = token_id,
|
||||
# )
|
||||
#
|
||||
# # If we failed to load the authorization tokens:
|
||||
# if not auth_token:
|
||||
# send_results.message = f"no such token id '{token_id}'"
|
||||
# return send_results
|
||||
|
||||
# Now we route the message to the appropriate client:
|
||||
match auth_token.client:
|
||||
case "nimbusSmsIndia":
|
||||
send_results = await self.__send_from_nimbus_sms_india(
|
||||
http_client = http_client,
|
||||
token_id = token_id,
|
||||
auth_token = auth_token,
|
||||
messages = messages
|
||||
)
|
||||
case "savvyBulkSmsKenya":
|
||||
send_results = await self.__send_from_savvy_bulk_sms_kenya(
|
||||
http_client = http_client,
|
||||
token_id = token_id,
|
||||
auth_token = auth_token,
|
||||
messages = messages
|
||||
)
|
||||
|
||||
@@ -177,7 +177,7 @@ class SMSSendRequestHeaders(BaseModel):
|
||||
|
||||
class SMSSendRequestData(BaseModel):
|
||||
|
||||
tokenId: ObjectId = Field(description = "the auth token to use to send this message")
|
||||
tokenKey: ObjectId = Field(description = "the auth token to use to send this message")
|
||||
message: List[NimbusSMSIndiaMessage] | List[SavvyBulkSMSKenyaMessage]
|
||||
|
||||
# ┏┓ ┏•
|
||||
@@ -193,7 +193,7 @@ class SMSSendRequestData(BaseModel):
|
||||
# ┃┃┏┓┃┓┏┫┏┓╋┓┏┓┏┓
|
||||
# ┗┛┗┻┗┗┗┻┗┻┗┗┗┛┛┗
|
||||
|
||||
@field_validator("tokenId", mode = "before")
|
||||
@field_validator("tokenKey", mode = "before")
|
||||
def parse_oid(cls, value):
|
||||
try: value = ObjectId(value)
|
||||
except: pass
|
||||
|
||||
@@ -4,6 +4,10 @@
|
||||
# Run this on the development machine.
|
||||
# NOT to be used in a collaborative environment:
|
||||
|
||||
# Accept the name of the branch that you want to work on:
|
||||
echo "Branch : "
|
||||
read -r BRANCH
|
||||
|
||||
# Accept a comment from the terminal:
|
||||
echo "Comment: "
|
||||
read -r COMMENT
|
||||
@@ -17,7 +21,5 @@ git commit -m "$COMMENT"
|
||||
echo "Commit done."
|
||||
|
||||
# Push th commit to git:
|
||||
echo "Branch : "
|
||||
read -r BRANCH
|
||||
git push -u https://wtt.ditscentre.in/ditscentre/api_utils_converse_v2.git "$BRANCH"
|
||||
echo "Attempt done. Exiting."
|
||||
Reference in New Issue
Block a user