???<!-- GIF89;a -->
123123123123
.....................................................................................................................................???<!-- GIF89;a -->
123123123123
.....................................................................................................................................ó
¿öYc           @@  s—   d  Z  d d l m Z d d l m Z d d l m Z m Z d d l m	 Z	 m
 Z
 m Z e d „  ƒ Z d e f d „  ƒ  YZ d	 e f d
 „  ƒ  YZ d S(   s¥   
raven.middleware
~~~~~~~~~~~~~~~~~~~~~~~~

:copyright: (c) 2010-2012 by the Sentry Team, see AUTHORS for more details.
:license: BSD, see LICENSE for more details.
i    (   t   absolute_import(   t   contextmanager(   t   Iteratort   next(   t   get_current_urlt   get_headerst   get_environc         c@  sž   y	 d  VWnŽ t  t f k
 r% ‚  nu t k
 rE | j |  ƒ ‚  nU t k
 re | j |  ƒ ‚  n5 t k
 r™ } | j d k r“ | j |  ƒ n  ‚  n Xd  S(   Ni    (   t   StopIterationt   GeneratorExitt	   Exceptiont   handle_exceptiont   KeyboardInterruptt
   SystemExitt   code(   t   environt   clientt   e(    (    sA   /opt/alt/python27/lib/python2.7/site-packages/raven/middleware.pyt   common_exception_handling   s    	t   ClosingIteratorc           B@  s2   e  Z d  Z d „  Z d „  Z d „  Z d „  Z RS(   s[   
    An iterator that is implements a ``close`` method as-per
    WSGI recommendation.
    c         C@  sC   | |  _  | |  _ t | d d  ƒ |  _ t | ƒ |  _ t |  _ d  S(   Nt   close(	   t   sentryR   t   getattrt   Nonet   _closet   itert   iterablet   Falset   closed(   t   selfR   R   R   (    (    sA   /opt/alt/python27/lib/python2.7/site-packages/raven/middleware.pyt   __init__,   s
    		c         C@  s   |  S(   N(    (   R   (    (    sA   /opt/alt/python27/lib/python2.7/site-packages/raven/middleware.pyt   __iter__3   s    c         C@  sR   y- t  |  j |  j ƒ  t |  j ƒ SWd  QXWn t k
 rM |  j ƒ  ‚  n Xd  S(   N(   R   R   R   R   R   R   R   (   R   (    (    sA   /opt/alt/python27/lib/python2.7/site-packages/raven/middleware.pyt   __next__6   s    
c         C@  s€   |  j  r d  Sz< |  j d  k	 rH t |  j |  j ƒ  |  j ƒ  Wd  QXn  Wd  |  j j j j ƒ  |  j j j	 j ƒ  t
 |  _  Xd  S(   N(   R   R   R   R   R   R   R   t   contextt   cleart   transactiont   True(   R   (    (    sA   /opt/alt/python27/lib/python2.7/site-packages/raven/middleware.pyR   B   s    	(   t   __name__t
   __module__t   __doc__R   R   R   R   (    (    (    sA   /opt/alt/python27/lib/python2.7/site-packages/raven/middleware.pyR   &   s
   			t   Sentryc           B@  s8   e  Z d  Z d d „ Z d „  Z d „  Z d d „ Z RS(   sÉ   
    A WSGI middleware which will attempt to capture any
    uncaught exceptions and send them to Sentry.

    >>> from raven.base import Client
    >>> application = Sentry(application, Client())
    c         C@  s>   | |  _  | d  k r1 d d l m } | ƒ  } n  | |  _ d  S(   Ni    (   t   Client(   t   applicationR   t
   raven.baseR(   R   (   R   R)   R   R(   (    (    sA   /opt/alt/python27/lib/python2.7/site-packages/raven/middleware.pyR   X   s
    	c         C@  sQ   |  j  j |  j | ƒ ƒ t | |  ƒ  |  j | | ƒ } Wd  QXt |  | | ƒ S(   N(   R   t   http_contextt   get_http_contextR   R)   R   (   R   R   t   start_responseR   (    (    sA   /opt/alt/python27/lib/python2.7/site-packages/raven/middleware.pyt   __call___   s    c         C@  s]   i | j  d ƒ d 6t | d t ƒd 6| j  d ƒ d 6t t | ƒ ƒ d 6t t | ƒ ƒ d 6S(	   Nt   REQUEST_METHODt   methodt   strip_querystringt   urlt   QUERY_STRINGt   query_stringt   headerst   env(   t   getR   R#   t   dictR   R   (   R   R   (    (    sA   /opt/alt/python27/lib/python2.7/site-packages/raven/middleware.pyR,   g   s    c         C@  s   |  j  j ƒ  S(   N(   R   t   captureException(   R   R   (    (    sA   /opt/alt/python27/lib/python2.7/site-packages/raven/middleware.pyR
   r   s    N(   R$   R%   R&   R   R   R.   R,   R
   (    (    (    sA   /opt/alt/python27/lib/python2.7/site-packages/raven/middleware.pyR'   O   s
   		N(   R&   t
   __future__R    t
   contextlibR   t   raven.utils.compatR   R   t   raven.utils.wsgiR   R   R   R   R   t   objectR'   (    (    (    sA   /opt/alt/python27/lib/python2.7/site-packages/raven/middleware.pyt   <module>   s   )