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.
 
 
 
 
 

38 lines
917 B

# See LICENSE
from array import array
from messaging.mms.mms_pdu import MMSDecoder
def is_a_wap_push_notification(s):
if not isinstance(s, str):
raise TypeError("data must be an array.array serialised to string")
data = array("B", s)
try:
return data[1] == 0x06
except IndexError:
return False
def extract_push_notification(s):
data = array("B", s)
wap_push, offset = data[1:3]
assert wap_push == 0x06
offset += 3
data = data[offset:]
# XXX: Not all WAP pushes are MMS
return MMSDecoder().decode_data(data)
def is_mms_notification(push):
# XXX: Pretty poor, but until we decode generic WAP pushes
# it will have to suffice. Ideally we would read the
# content-type from the WAP push header and test
return (push.headers.get('From') is not None and
push.headers.get('Content-Location') is not None)