�
��Yc @@ s d Z d d l m Z d d l m Z d d l m Z d d l m Z m Z m
Z
d d l m Z d d l
m Z d d l m Z d d l m Z d d
l m Z d d l m Z d � Z d
� Z d � Z e e d d d g � e e d d � � � � � Z d S( s�
raven.contrib.django.views
~~~~~~~~~~~~~~~~~~~~~~~~~~
: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 wraps( t settings( t HttpResponset HttpResponseForbiddent HttpResponseBadRequest( t never_cache( t csrf_exempt( t require_http_methods( t string_types( t client( t jsonc C@ s� t j s
t St j d k r t S| s* t S| j � } xL t j D]A } t | t � rn | j � | k r� t Sq@ | j | � r@ t Sq@ Wt S( Nt *( R t SENTRY_ALLOW_ORIGINt Falset Truet lowert
isinstanceR t match( t origint value( ( sK /opt/alt/python27/lib/python2.7/site-packages/raven/contrib/django/views.pyt is_valid_origin s c @ s t � � � f d � � } | S( Nc @ sO | j j d � } t | � s% t � S� | | | � } | | d <d | d <| S( Nt HTTP_ORIGINs Access-Control-Allow-Origins GET, POST, OPTIONSs Access-Control-Allow-Methods( t METAt getR R ( t requestt argst kwargsR t response( t func( sK /opt/alt/python27/lib/python2.7/site-packages/raven/contrib/django/views.pyt wrapped. s
( R ( R R ( ( R sK /opt/alt/python27/lib/python2.7/site-packages/raven/contrib/django/views.pyt with_origin- s c C@ s� | j j d d � j d � r) | j d S| j j d d � j d � rR | j d Sg | j j � D]3 } | d j d � rb | d d k rb d | ^ qb } | r� d d
j | � Sd S( sy
raven-js will pass both Authorization and X-Sentry-Auth depending on the browser
and server configurations.
t HTTP_X_SENTRY_AUTHt t Sentryt HTTP_AUTHORIZATIONi t sentry_t sentry_datas %s=%ss Sentry %ss , N( R R t
startswitht GETt itemst joint None( R t iR ( ( sK /opt/alt/python27/lib/python2.7/site-packages/raven/contrib/django/views.pyt extract_auth_vars= s 3R'