Source code for dialogy.plugins.text.address_parser.mapmyindia
from typing import Dict, Union, Optional
import requests
from loguru import logger
[docs]class MapMyIndia:
def __init__(self, client_id: Optional[str], client_secret: Optional[str]) -> None:
self.client_id = client_id
self.client_secret = client_secret
self.access_token = self._get_token()
def _get_token(self) -> str:
token = requests.post(
"https://outpost.mapmyindia.com/api/security/oauth/token",
data={
"grant_type": "client_credentials",
"client_id": self.client_id,
"client_secret": self.client_secret,
},
).json()
return token["access_token"]
[docs] def geocode(
self, address: str, region: str = "ind", pin: Optional[str] = None
) -> Union[Dict[str, str], None]: # aiohttp
url = "https://atlas.mapmyindia.com/api/places/geocode?"
params = {
"address": address,
"region": region,
}
if pin:
params["bound"] = f"{pin}"
try:
addresses = requests.get(
url,
params=params,
headers={"Authorization": "bearer " + self.access_token},
).json()
except Exception as e:
logger.debug(f"MMI API: Address not found for input {params}")
addresses = None
return addresses