
QËZ’	  ã               @   sL   d  d l  Z  d  d l m Z Gd d „  d e ƒ Z Gd d „  d e ƒ Z d S)é    N)Ú	QueryDictc               @   sC   e  Z d  Z d d d „ Z d d „  Z d d „  Z d d	 „  Z d S)
ÚJSONMiddlewareNc             C   s   | |  _  d S)zhWe allow next_layer to be None because old-style middlewares
        won't accept any argument.
        N)Úget_response)ÚselfZ
next_layer© r   ú?/var/www/html/dls.localhost.com/myproject/dls_api/middleware.pyÚ__init__   s    zJSONMiddleware.__init__c             C   s  t  d ƒ | j j d ƒ rd | j j d ƒ k r| j j d d ƒ } t j | ƒ } t d d d ƒ} xc | j ƒ  D]U \ } } t	 | t
 ƒ r¹ x7 | D] } | j | | i ƒ q™ Wqw | j | | i ƒ qw W| j d	 k rè | | _ | j d
 k r | | _ | j d k r| | _ d  S)NzHello MÚCONTENT_TYPEzapplication/jsonzutf-8ÚstrictÚ ÚmutableTÚGETÚPOSTÚPATCH)ÚprintÚMETAÚgetÚbodyÚdecodeÚjsonÚloadsr   ÚitemsÚ
isinstanceÚlistÚupdateÚmethodr   r   )r   ÚrequestÚnew_dataÚdataZq_dataÚkeyÚvalueÚxr   r   r   Úprocess_request   s"    
*			zJSONMiddleware.process_requestc             C   s   | S)z:Let's handle old-style response processing here, as usual.r   )r   r   Úresponser   r   r   Úprocess_response%   s    zJSONMiddleware.process_responsec             C   s@   |  j  | ƒ } | d k r* |  j | ƒ } |  j | | ƒ } | S)z!Handle new-style middleware here.N)r"   r   r$   )r   r   r#   r   r   r   Ú__call__*   s
    zJSONMiddleware.__call__)Ú__name__Ú
__module__Ú__qualname__r   r"   r$   r%   r   r   r   r   r      s   r   c               @   s(   e  Z d  Z d d „  Z d d „  Z d S)ÚCORSMiddlewarec             C   s   | |  _  d  S)N)r   )r   r   r   r   r   r   7   s    zCORSMiddleware.__init__c             C   s;   |  j  | ƒ } d | d <d | d <d | d <d | d <| S)	NÚ*zAccess-Control-Allow-OriginTz Access-Control-Allow-CredentialszGET,PUT,POST,DELETEzAccess-Control-Allow-MethodszContent-Type, AuthorizationzAccess-Control-Allow-Headers)r   )r   r   r#   r   r   r   r%   :   s    



zCORSMiddleware.__call__N)r&   r'   r(   r   r%   r   r   r   r   r)   6   s   r)   )r   Údjango.httpr   Úobjectr   r)   r   r   r   r   Ú<module>   s   1