| dav_delete_resource |
function |
py |
infra |
1.0.0 |
impure |
def dav_delete_resource(base_url: str, username: str, password: str, resource_path: str, *, etag: str = '', timeout_s: float = 20.0, verify_tls: bool = True) -> dict |
Borra (HTTP DELETE) un recurso DAV individual (un VCARD o un VCALENDAR) con HTTP Basic auth. Construye el header Authorization: Basic base64(user:pass) a mano con stdlib. El resource_path puede ser un href absoluto (como los que devuelven dav_list_resources / dav_get_collection) o una URL completa. Opcionalmente envia If-Match: <etag> para un borrado condicional que evita pisar una edicion concurrente. DESTRUCTIVO e IRREVERSIBLE: usar con confirmacion explicita, nunca a ciegas. verify_tls=True por defecto. Maneja errores sin lanzar. Solo stdlib (urllib, base64, ssl). Probado contra Xandikos. |
| dav |
| carddav |
| caldav |
| delete |
| remove |
| http |
| infra |
|
|
|
|
false |
error_go_core |
| base64 |
| ssl |
| urllib.error |
| urllib.request |
|
| name |
desc |
| base_url |
URL base del servidor DAV. Se ignora si resource_path ya es una URL absoluta. |
|
| 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 |
| resource_path |
href absoluto (p.ej. '/enmanuel/contacts/addressbook/x.vcf') o URL completa del recurso a borrar. Acepta directamente los hrefs que devuelven dav_list_resources / dav_get_collection. |
|
| name |
desc |
| etag |
etag del recurso para borrado condicional via If-Match. Si se da, el servidor solo borra cuando el etag actual coincide (412 si cambio). Vacio = borrado incondicional. |
|
| name |
desc |
| timeout_s |
timeout de la 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, url:str} (DELETE devuelve normalmente 204 No Content o 200). En error (sin lanzar): {status:'error', error:str, http_status:int|None}. Un 404 (ya no existe) llega como error con http_status=404, tratable como idempotente. |
true |
| test_construye_request_delete_con_auth |
| test_resource_path_relativo_se_resuelve_con_base_url |
| test_resource_path_absoluto_se_respeta |
| test_if_match_se_envia_cuando_hay_etag |
| test_sin_etag_no_envia_if_match |
| test_204_devuelve_ok |
| test_404_devuelve_status_error |
|
python/functions/infra/dav_delete_resource_test.py |
python/functions/infra/dav_delete_resource.py |