msn_slp.py
Friday, February 1st, 2008Me estoy “robando” el placer de rewritear un parser/generador de mensajes MSNSLP, protocolo casi identico a SIP. ¿Por qué placer?
- Python
- Estoy sacando muchisimas lineas repetidas y redundantes del otro módulo msn_p2p.py, que antes tenía unas 1487 lineas de codigo, y ahora va por 982 (y sigue bajando)
- La api queda muy muy bella:
# crea un objeto de mensaje SLP vacío
vacio = SLPMessage()
# crea otro objeto basado en un objeto de sesión (self)
mensaje = SLPMessage(self)
# setea un par de fields necesarios
mensaje.method = SLPMessage.BYE_METHOD
mensaje.content_type = SLPMessage.CONTENT_SESSION_CLOSE
# agrega un campo al body
mensaje.body['SessionID'] = self.session_id
# devuelve el string listo para mandar al socket
str(mensaje)
Extra: una serie de funciones (que se comportan como classmethods pero decidí dejarlas como funciones) a nivel de módulo, como “invite”, “ok”, “decline” y “bye”, devuelven objetos SLPMessage listos para usar, pidiendo solamente el parametro “session” (en los ejemplos anteriores, “self”)
Volviendo. ¿Por qué robando?
- Lo había propuesto en un thread de por ahi, a futuro
- No debería estar haciendo esto, mas bien debería hacer el bridge TCPv1 para direct connection*
- It Just Works™, me arriesgo mucho refactoreando así. Pero el requesteo de avatares y los dialogos de Exception que agregué hace poco me hacen facil agarrar regresiones rápido. Si, ya sé, necesito unit tests.
- Lo podría hacer otro, pero no, tenía que ser yo, OTRA VEZ, el que se lleva la porcion mas grande y mas rica de ASDASDASD.
Si, me siento un poco culpable. Voy a evitar pensar a qué me hace acordar esta mezcla, por Dios.
*eso mismo, voy a hacer DC ahora sin branch. Bien yo contradiciendome eh.