o ckF[b@sldZddlZzddlmZWn eyddlZYnwddlZddlZGdddeZ GdddeZ dS)z Provides NotificationMessage and Event classes, with utility methods, for implementations of the Mechanical Turk Notification API. N)sha1c@s:eZdZdZdZdZdZdZe eZ ddZ dd Z d S) NotificationMessagezlhttp://mechanicalturk.amazonaws.com/AWSMechanicalTurk/2006-05-05/AWSMechanicalTurkRequesterNotification.wsdlz 2006-05-05&AWSMechanicalTurkRequesterNotificationNotifyz!Event\.(?P\d+)\.(?P\w+)cCs|d|_|d|_|d|_|dtjksJdtjg|_i}d|vr+|d}n0|D]-}||}|drZtj| }t |d}t |d }||vrTi||<||||<q-|D] }|j t ||q]d S) z Constructor; expects parameter d to be a dict of string parameters from a REST transport notification message Signature TimestampVersionmethodzMethod should be '%s'EventzEvent.nparamN) signature timestampversionrOPERATION_NAMEevents startswithEVENT_REsearch groupdictintstrappendr )selfd events_dictkvedr r r9/usr/lib/python3/dist-packages/boto/mturk/notification.py__init__.s*        zNotificationMessage.__init__cCsJtj}|tj7}||j7}tj|td}||t | }|j |kS)a Verifies the authenticity of a notification message. TODO: This is doing a form of authentication and this functionality should really be merged with the pluggable authentication mechanism at some point. )key digestmod) r SERVICE_NAMErrhmacnewshaupdatebase64 b64encodedigestr )r secret_keyverification_inputhsignature_calcrrr verifyJs    zNotificationMessage.verifyN) __name__ __module__ __qualname__NOTIFICATION_WSDLNOTIFICATION_VERSIONr$r EVENT_PATTERNrecompilerr!r0rrrr r#s  rc@seZdZddZddZdS)r cCsB|d|_|d|_|d|_|d|_d|vr|d|_dSdS)N EventType EventTime HITTypeIdHITId AssignmentId) event_typeevent_time_strhit_typehit_id assignment_id)rrrrr r!\s    zEvent.__init__cCsd|j|jfS)Nz0)r>rA)rrrr __repr__fszEvent.__repr__N)r1r2r3r!rCrrrr r [s r ) __doc__r%hashlibrr' ImportErrorr)r7objectrr rrrr s  8