Source code for abstract_api.phone_validation.phone_validation_response

from functools import cached_property
from typing import Optional

import requests

from ..core.bases import JSONResponse
from ..core.common_entities import Country as CommonCountry
from ..core.mixins import NestedEntitiesMixin
from ._response_fields import RESPONSE_FIELDS


[docs] class Format: """Format entity in phone validation response.""" def __init__(self, international: str, local: str) -> None: """Initializes a new Format.""" self._international = international self._local = local @property def international(self) -> str: """The international format of the submitted phone number. This means appending the phone number's country code and a "+" at the beginning. """ return self._international @property def local(self) -> str: """The local or national format of the submitted phone number. For example, it removes any international formatting, such as "+1" in the case of the US. """ return self._local
[docs] class Country(CommonCountry): """Country entity in phone validation response.""" def __init__(self, prefix: str, **kwargs) -> None: """Initializes a new Country.""" super().__init__(**kwargs) self._prefix = prefix @property def prefix(self) -> Optional[str]: """The country's calling code prefix.""" return self._prefix
[docs] class PhoneValidationResponse(NestedEntitiesMixin, JSONResponse): """Phone validation service response.""" _nested_entities = { "format": Format, "country": Country } def __init__(self, response: requests.models.Response) -> None: """Initializes a new PhoneValidationResponse.""" super().__init__(response, RESPONSE_FIELDS) @cached_property def phone(self) -> Optional[str]: """The phone number submitted for validation and verification.""" return self._get_response_field("phone") @cached_property def valid(self) -> Optional[bool]: """Is true if the phone number submitted is valid.""" return self._get_response_field("valid") @cached_property def format(self) -> Optional[Format]: """International and local formats of the submitted number.""" return self._get_response_field("format") @cached_property def country(self) -> Optional[Country]: """The of the phone number's country.""" return self._get_response_field("country") @cached_property def location(self) -> Optional[str]: """As much location details as are available from AbstractAPI's data. This can include the region, state / province, and in some cases down to the city. """ return self._get_response_field("location") @cached_property def type(self) -> Optional[str]: """The type of phone number. The possible values are: Landline, Mobile, Satellite, Premium, Paging, Special, Toll_Free, and Unknown. """ return self._get_response_field("type") @cached_property def carrier(self) -> Optional[str]: """The carrier that the number is registered with.""" return self._get_response_field("carrier")