| dav_make_addressbook |
function |
py |
infra |
1.0.0 |
impure |
def dav_make_addressbook(base_url: str, username: str, password: str, contacts_home: str, slug: str, display_name: str = "", description: str = "", *, timeout_s: float = 20.0, verify_tls: bool = True) -> dict |
Crea una nueva coleccion de contactos CardDAV (una libreta/agenda de contactos nueva) bajo el contacts-home de un principal via MKCOL extendido (RFC 5689), declarando el resourcetype como addressbook y fijando el displayname y la descripcion (addressbook-description) en el propio cuerpo XML. La coleccion se crea en <contacts_home><slug>/. El slug se sanea a [a-z0-9_-] (minusculas, espacios->guion); si queda vacio devuelve error de validacion. Idempotente: 201 Created es exito; 405/301 (ya existe) devuelve {status:'ok', existed:True}. Escapa display_name/description para XML. Construye Authorization: Basic base64(user:pass) a mano. Maneja errores sin lanzar (salvo validacion de args). Solo stdlib (urllib, base64, re, ssl, xml.sax.saxutils). Probado contra Xandikos. Analoga de dav_make_calendar para CardDAV. |
| dav |
| carddav |
| addressbook |
| contacts |
| mkcol |
| create |
| collection |
| http |
| infra |
|
|
|
|
false |
error_go_core |
| base64 |
| re |
| ssl |
| urllib.error |
| urllib.request |
| xml.sax.saxutils |
|
|
|
| name |
desc |
| username |
usuario para HTTP Basic auth (p.ej. 'enmanuel'). |
|
| name |
desc |
| password |
contrasena para HTTP Basic auth. Resolver desde pass con pass_get_secret, nunca hardcodear. |
|
| name |
desc |
| contacts_home |
ruta del contacts-home del principal con barra final (p.ej. '/enmanuel/contacts/'). La nueva coleccion cuelga de el. |
|
| name |
desc |
| slug |
segmento de path de la coleccion en la URL (p.ej. 'trabajo'); se sanea a [a-z0-9_-]. La coleccion se crea en <contacts_home><slug>/. Si queda vacio tras sanear, devuelve error de validacion. |
|
| name |
desc |
| display_name |
nombre visible de la coleccion (DAV:displayname). Si vacio, usa el slug saneado. |
|
| name |
desc |
| description |
descripcion de la coleccion (addressbook-description de CardDAV). Opcional; '' lo omite. |
|
| name |
desc |
| timeout_s |
timeout de cada peticion HTTP en segundos. Default 20.0. |
|
| name |
desc |
| verify_tls |
si True (default) verifica el certificado TLS. No desactivar salvo entorno de prueba. |
|
|
dict. En exito: {status:'ok', http_status:int, href:str} y, si la coleccion ya existia, ademas existed:True. En error (sin lanzar): {status:'error', http_status:int|None, href:str, error:str}. href es la ruta de la coleccion (contacts_home + slug saneado + '/'). |
true |
| test_sanitize_slug_minusculas |
| test_sanitize_slug_espacios_a_guion |
| test_sanitize_slug_elimina_caracteres_raros |
| test_sanitize_slug_colapsa_guiones_y_recorta |
| test_sanitize_slug_vacio |
| test_join_url_compone_la_coleccion |
| test_mkcol_xml_es_mkcol_extendido |
| test_mkcol_xml_declara_resourcetype_addressbook |
| test_mkcol_xml_incluye_displayname |
| test_mkcol_xml_escapa_displayname |
| test_mkcol_xml_incluye_y_escapa_descripcion |
| test_mkcol_xml_omite_descripcion_vacia |
|
python/functions/infra/dav_make_addressbook_test.py |
python/functions/infra/dav_make_addressbook.py |