import base64 import hashlib import json from .base_api import BaseAPI class OperatorAPI(BaseAPI): def login(self, operator_user, operator_password): endpoint = f"{self.api_tenant_login_url}/operator/login" nonce = self._post(endpoint, { "login": operator_user }).get('nonce') # get token salted_password = str(hashlib.sha256(hashlib.sha256(operator_password.encode()).hexdigest().encode() + nonce.encode()).hexdigest()) self.token = self._post(endpoint, { "login": operator_user, "password": salted_password }).get('token') aa = base64.b64decode(self.token.split(".")[1] + "===") decoded_token = json.loads(aa.decode("utf-8")) self.url = decoded_token["url"]["api"] def login_as_user(self, tenant_id, tenant_user_id): endpoint = f"{self.api_tenant_login_url}/operator/tenant/{tenant_id}/user/{tenant_user_id}/login" return self._get(endpoint) def create_user(self, tenant_id, params): endpoint = f"{self.url}/tenant/{tenant_id}/user" return self._post(endpoint, params).get('data') def get_user(self, tenant_id, tenant_user_id): endpoint = f"{self.url}/tenant/{tenant_id}/user/{tenant_user_id}" return self._get(endpoint).get('data') def get_users(self, tenant_id): endpoint = f"{self.url}/tenant/{tenant_id}/user" return self._get(endpoint).get('data') def get_license_packages(self, tenant_id): endpoint = f"{self.url}/tenant/{tenant_id}/operator_license_package" return self._get(endpoint).get('data') def get_package_agreements(self, tenant_id): endpoint = f"{self.url}/tenant/{tenant_id}/tenant_package_agreement" return self._get(endpoint).get('data') def create_package_activation_request(self, tenant_id, params): endpoint = f"{self.url}/tenant/{tenant_id}/package_activation_request" return self._post(endpoint, params).get('data') def create_tenant(self, params): endpoint = f"{self.url}/tenant" return self._post(endpoint, params).get('data')[0] def get_tenants(self): endpoint = f"{self.url}/tenant" return self._get(endpoint).get('data') def get_ddi(self, tenant_id): endpoint = f"{self.url}/tenant/{tenant_id}/ddi" return self._get(endpoint).get('data') def create_ddi(self, tenant_id, params): endpoint = f"{self.url}/tenant/{tenant_id}/ddi" return self._post(endpoint, params).get('data')[0] def get_tenant_telco_networks(self, tenant_id): endpoint = f"{self.url}/tenant/{tenant_id}/telco_network" return self._get(endpoint).get('data') def create_tenant_telco_network(self, tenant_id, params): endpoint = f"{self.url}/tenant/{tenant_id}/telco_network" return self._post(endpoint, params).get('data') def get_operator_routing(self): endpoint = f"{self.url}/operator_routing" return self._get(endpoint).get('data') def create_operator_routing(self, params): endpoint = f"{self.url}/operator_routing" return self._post(endpoint, params).get('data') def create_operator_gateway(self, params): endpoint = f"{self.url}/operator_gateway" return self._post(endpoint, params).get('data') def get_operator_gateways(self): endpoint = f"{self.url}/operator_gateway" return self._get(endpoint).get('data') def create_operator_gateway_normalization(self, operator_gateway_id, params): endpoint = f"{self.url}/operator_gateway/{operator_gateway_id}/normalization" return self._post(endpoint, params).get('data') def get_operator_gateway_normalization(self, operator_gateway_id): endpoint = f"{self.url}/operator_gateway/{operator_gateway_id}/normalization" return self._get(endpoint).get('data') def delete_operator_gateway_normalization(self, operator_gateway_id, normalization_id): endpoint = f"{self.url}/operator_gateway/{operator_gateway_id}/normalization/{normalization_id}" return self._delete(endpoint) def get_speech_integrations(self): endpoint = f"{self.url}/text_to_speech/integration" return self._get(endpoint).get('data') def add_speech_integration(self, params): endpoint = f"{self.url}/tenant/speech/integration" return self._post(endpoint, params).get('data')