from fastapi import APIRouter from fastapi.param_functions import Depends from fastapi.security import OAuth2PasswordRequestForm from fastapi_login.exceptions import InvalidCredentialsException from core.actions import get_user_by_name from core.security import manager from models.Majortel.contacts import contacts from models.Majortel.contacts_microsip import contacts_microsip from models.httpresponse import httpResponse400, httpResponse200, httpResponse500 from starlette.requests import Request router = APIRouter( prefix="/majortel/contacts" ) @router.get("/username/{username}/password/{password}/addressbook/{addressbook}/", response_model=contacts, tags=["Majortel"], responses={200: {"model": httpResponse200}, 400: {"model": httpResponse400}, 500: {"model": httpResponse500}}) async def get_majortel_contacts(username, password, addressbook, request: Request): mapping = { "contacts_mapping": { "fn": ("fn", None, None), "tel": ("tel", None, None), "adr": ("adr", None, None), "email": ("email", None, None), "categories": ("categories", None, None), }, "base_mapping": { "contacts": ("contacts", None, "contacts_mapping"), } } if DEBUG: print("[debug] Sono in endpoint majortel/contacts") if DEBUG: print("[debug] url:") url = str(request.url) if DEBUG: print(url) host = url.split(":5050")[0] contacts = carddav_util.read( url=host + "/drive/remote.php/dav/addressbooks/users/" + username + "/" + addressbook + "/", user=username, filename="", passwd=password, auth="basic", verify=True ) return api_utils.mapper(mapping, contacts) @router.get("/username/{username}/password/{password}/addressbook/{addressbook}/microsip/", response_model=contacts_microsip, tags=["Majortel"], responses={200: {"model": httpResponse200}, 400: {"model": httpResponse400}, 500: {"model": httpResponse500}}) async def get_majortel_contacts_microsip(username, password, addressbook, request: Request): mapping = { "contacts_mapping": { "firstname": ("fn", coerce_methods.coerce_fn_to_microsip_firstname, None), "lastname": ("fn", coerce_methods.coerce_fn_to_microsip_lastname, None), "phone": ("tel", coerce_methods.coerce_tel_to_phone_microsip, None), "mobile": ("tel", coerce_methods.coerce_tel_to_mobile_microsip, None), "address": ("adr", coerce_methods.coerce_adr_to_microsip_address, None), "city": ("adr", coerce_methods.coerce_adr_to_microsip_city, None), "state": ("adr", coerce_methods.coerce_adr_to_microsip_state, None), "zip": ("adr", coerce_methods.coerce_adr_to_microsip_zip, None), "email": ("email", None, None) # ("categories": "", None), }, "base_mapping": { "items": ("contacts", None, "contacts_mapping"), } } if DEBUG: print("[debug] Sono in endpoint majortel/contacts/microsip") if DEBUG: print("[debug] url:") url = str(request.url) if DEBUG: print(url) host = url.split(":5050")[0] contacts = carddav_util.read( url=host + "/drive/remote.php/dav/addressbooks/users/" + username + "/" + addressbook + "/", user=username, filename="", passwd=password, auth="basic", verify=True ) return api_utils.mapper(mapping, contacts)