You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

79 lines
3.4 KiB

  1. from fastapi import APIRouter
  2. from fastapi.param_functions import Depends
  3. from fastapi.security import OAuth2PasswordRequestForm
  4. from fastapi_login.exceptions import InvalidCredentialsException
  5. from core.actions import get_user_by_name
  6. from core.security import manager
  7. from models.Majortel.contacts import contacts
  8. from models.Majortel.contacts_microsip import contacts_microsip
  9. from models.httpresponse import httpResponse400, httpResponse200, httpResponse500
  10. from starlette.requests import Request
  11. router = APIRouter(
  12. prefix="/majortel/contacts"
  13. )
  14. @router.get("/username/{username}/password/{password}/addressbook/{addressbook}/",
  15. response_model=contacts, tags=["Majortel"],
  16. responses={200: {"model": httpResponse200}, 400: {"model": httpResponse400}, 500: {"model": httpResponse500}})
  17. async def get_majortel_contacts(username, password, addressbook, request: Request):
  18. mapping = {
  19. "contacts_mapping": {
  20. "fn": ("fn", None, None),
  21. "tel": ("tel", None, None),
  22. "adr": ("adr", None, None),
  23. "email": ("email", None, None),
  24. "categories": ("categories", None, None),
  25. },
  26. "base_mapping": {
  27. "contacts": ("contacts", None, "contacts_mapping"),
  28. }
  29. }
  30. if DEBUG: print("[debug] Sono in endpoint majortel/contacts")
  31. if DEBUG: print("[debug] url:")
  32. url = str(request.url)
  33. if DEBUG: print(url)
  34. host = url.split(":5050")[0]
  35. contacts = carddav_util.read(
  36. url=host + "/drive/remote.php/dav/addressbooks/users/" + username + "/" + addressbook + "/",
  37. user=username, filename="", passwd=password, auth="basic", verify=True
  38. )
  39. return api_utils.mapper(mapping, contacts)
  40. @router.get("/username/{username}/password/{password}/addressbook/{addressbook}/microsip/",
  41. response_model=contacts_microsip, tags=["Majortel"],
  42. responses={200: {"model": httpResponse200}, 400: {"model": httpResponse400}, 500: {"model": httpResponse500}})
  43. async def get_majortel_contacts_microsip(username, password, addressbook, request: Request):
  44. mapping = {
  45. "contacts_mapping": {
  46. "firstname": ("fn", coerce_methods.coerce_fn_to_microsip_firstname, None),
  47. "lastname": ("fn", coerce_methods.coerce_fn_to_microsip_lastname, None),
  48. "phone": ("tel", coerce_methods.coerce_tel_to_phone_microsip, None),
  49. "mobile": ("tel", coerce_methods.coerce_tel_to_mobile_microsip, None),
  50. "address": ("adr", coerce_methods.coerce_adr_to_microsip_address, None),
  51. "city": ("adr", coerce_methods.coerce_adr_to_microsip_city, None),
  52. "state": ("adr", coerce_methods.coerce_adr_to_microsip_state, None),
  53. "zip": ("adr", coerce_methods.coerce_adr_to_microsip_zip, None),
  54. "email": ("email", None, None)
  55. # ("categories": "", None),
  56. },
  57. "base_mapping": {
  58. "items": ("contacts", None, "contacts_mapping"),
  59. }
  60. }
  61. if DEBUG: print("[debug] Sono in endpoint majortel/contacts/microsip")
  62. if DEBUG: print("[debug] url:")
  63. url = str(request.url)
  64. if DEBUG: print(url)
  65. host = url.split(":5050")[0]
  66. contacts = carddav_util.read(
  67. url=host + "/drive/remote.php/dav/addressbooks/users/" + username + "/" + addressbook + "/",
  68. user=username, filename="", passwd=password, auth="basic", verify=True
  69. )
  70. return api_utils.mapper(mapping, contacts)