
?F[c           @   s  d  d l  Z d  d l Z d  d l 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 m Z m 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 e f d     YZ d S(   iN(   t   AWSAuthConnection(   t   handler(   t   Distributiont   DistributionSummaryt   DistributionConfig(   t   StreamingDistributiont   StreamingDistributionSummaryt   StreamingDistributionConfig(   t   OriginAccessIdentity(   t   OriginAccessIdentitySummary(   t   OriginAccessIdentityConfig(   t   InvalidationBatcht   InvalidationSummaryt   InvalidationListResultSet(   t	   ResultSet(   t   CloudFrontServerErrort   CloudFrontConnectionc           B   ss  e  Z d  Z d Z d" d" d" d" d" e d d" e d" d" d  Z d   Z d   Z d" d" d  Z	 d   Z
 d   Z d	   Z d
   Z d   Z d   Z d   Z d   Z d   Z d d" d d" d  Z d   Z d   Z d   Z d   Z d   Z d d" d d" d  Z d   Z d   Z d   Z d   Z d   Z d d d  Z d   Z  d" d  Z! d" d   Z" d" d" d!  Z# RS(#   s   cloudfront.amazonaws.coms
   2010-11-01i    c         C   sJ   t  t |   j | | | t | | | d | d | d |	 d | d |
 d  S(   Nt   debugt   security_tokent   validate_certst   https_connection_factoryt   profile_name(   t   superR   t   __init__t   True(   t   selft   aws_access_key_idt   aws_secret_access_keyt   portt   proxyt
   proxy_portt   hostR   R   R   R   R   (    (    s7   lib/python2.7/site-packages/boto/cloudfront/__init__.pyR   +   s    c         C   s>   | j  } x. | j   D]  } | j   d k r | | Sq Wd  S(   Nt   etag(   t   msgt   keyst   lowert   None(   R   t   responset   response_headerst   key(    (    s7   lib/python2.7/site-packages/boto/cloudfront/__init__.pyt   get_etag7   s
    	c         C   s   d g S(   Nt
   cloudfront(    (   R   (    (    s7   lib/python2.7/site-packages/boto/cloudfront/__init__.pyt   _required_auth_capability>   s    c         C   s   | s d t  f g } n  |  j d d |  j | f  } | j   } t j j |  | j d k r} t | j | j	 |   n  | p t
 } | p t   } | | |  }	 t j |	 |   }
 t j j | |
  |	 S(   NR   t   GETs   /%s/%si,  (   R   t   make_requestt   Versiont   readt   botot   logR   t   statusR   t   reasonR   t   dictR   t
   XmlHandlert   xmlt   saxt   parseString(   R   t   resourcet   tagst   result_set_classt   result_set_kwargsR%   t   bodyt   rs_classt	   rs_kwargst   rst   h(    (    s7   lib/python2.7/site-packages/boto/cloudfront/__init__.pyt   _get_all_objectsC   s    c         C   s   d |  j  | | f } |  j d |  } | j   } t j j |  | j d k rn t | j | j |   n  | d |   } | j	 } x6 | j
   D]( }	 |	 j   d k r | |	 | _ q q Wt j | |   }
 t j j | |
  | S(   Ns	   /%s/%s/%sR+   i,  t
   connectionR    (   R-   R,   R.   R/   R0   R   R1   R   R2   R!   R"   R#   R    R   R4   R5   R6   R7   (   R   t   idR8   t
   dist_classt   uriR%   R<   t   dR&   R'   R@   (    (    s7   lib/python2.7/site-packages/boto/cloudfront/__init__.pyt	   _get_infoT   s    	c   	      C   s   d |  j  | | f } |  j d |  } | j   } t j j |  | j d k rn t | j | j |   n  | d |   } |  j	 |  | _
 t j | |   } t j j | |  | S(   Ns   /%s/%s/%s/configR+   i,  RB   (   R-   R,   R.   R/   R0   R   R1   R   R2   R(   R    R   R4   R5   R6   R7   (	   R   RC   R8   t   config_classRE   R%   R<   RF   R@   (    (    s7   lib/python2.7/site-packages/boto/cloudfront/__init__.pyt   _get_configd   s    c   	      C   s   t  | t  r d } n d } d |  j | | f } i | d 6d d 6} |  j d | | | j    } | j   } t j j |  | j	 d k r t
 | j	 | j |   n  |  j |  S(	   Ns   streaming-distributiont   distributions   /%s/%s/%s/configs   If-Matchs   text/xmls   Content-Typet   PUTi   (   t
   isinstanceR   R-   R,   t   to_xmlR.   R/   R0   R   R1   R   R2   R(   (	   R   t   distribution_idR    t   configR8   RE   t   headersR%   R<   (    (    s7   lib/python2.7/site-packages/boto/cloudfront/__init__.pyt   _set_configq   s    	c         C   s   |  j  d d |  j | f i d d 6d | j   } | j   } t j j |  | j d k r | d |   } t j	 | |   } t
 j j | |  |  j |  | _ | St | j | j |   d  S(   Nt   POSTs   /%s/%ss   text/xmls   Content-Typet   datai   RB   (   R,   R-   RM   R.   R/   R0   R   R1   R   R4   R5   R6   R7   R(   R    R   R2   (   R   RO   R8   RD   R%   R<   RF   R@   (    (    s7   lib/python2.7/site-packages/boto/cloudfront/__init__.pyt   _create_object   s    c         C   s|   d |  j  | | f } |  j d | i | d 6 } | j   } t j j |  | j d k rx t | j | j |   n  d  S(   Ns	   /%s/%s/%st   DELETEs   If-Matchi   (	   R-   R,   R.   R/   R0   R   R1   R   R2   (   R   RC   R    R8   RE   R%   R<   (    (    s7   lib/python2.7/site-packages/boto/cloudfront/__init__.pyt   _delete_object   s    c         C   s   d t  f g } |  j d |  S(   NR   RJ   (   R   RA   (   R   R9   (    (    s7   lib/python2.7/site-packages/boto/cloudfront/__init__.pyt   get_all_distributions   s    c         C   s   |  j  | d t  S(   NRJ   (   RG   R   (   R   RN   (    (    s7   lib/python2.7/site-packages/boto/cloudfront/__init__.pyt   get_distribution_info   s    c         C   s   |  j  | d t  S(   NRJ   (   RI   R   (   R   RN   (    (    s7   lib/python2.7/site-packages/boto/cloudfront/__init__.pyt   get_distribution_config   s    c         C   s   |  j  | | |  S(   N(   RQ   (   R   RN   R    RO   (    (    s7   lib/python2.7/site-packages/boto/cloudfront/__init__.pyt   set_distribution_config   s    t    c         C   s@   t  d | d | d | d | d | d |  } |  j | d t  S(   Nt   origint   enabledt   caller_referencet   cnamest   commentt   trusted_signersRJ   (   R   RT   R   (   R   R\   R]   R^   R_   R`   Ra   RO   (    (    s7   lib/python2.7/site-packages/boto/cloudfront/__init__.pyt   create_distribution   s
    	c         C   s   |  j  | | d  S(   NRJ   (   RV   (   R   RN   R    (    (    s7   lib/python2.7/site-packages/boto/cloudfront/__init__.pyt   delete_distribution   s    c         C   s   d t  f g } |  j d |  S(   NR   s   streaming-distribution(   R   RA   (   R   R9   (    (    s7   lib/python2.7/site-packages/boto/cloudfront/__init__.pyt   get_all_streaming_distributions   s    c         C   s   |  j  | d t  S(   Ns   streaming-distribution(   RG   R   (   R   RN   (    (    s7   lib/python2.7/site-packages/boto/cloudfront/__init__.pyt   get_streaming_distribution_info   s    c         C   s   |  j  | d t  S(   Ns   streaming-distribution(   RI   R   (   R   RN   (    (    s7   lib/python2.7/site-packages/boto/cloudfront/__init__.pyt!   get_streaming_distribution_config   s    c         C   s   |  j  | | |  S(   N(   RQ   (   R   RN   R    RO   (    (    s7   lib/python2.7/site-packages/boto/cloudfront/__init__.pyt!   set_streaming_distribution_config   s    c         C   s@   t  d | d | d | d | d | d |  } |  j | d t  S(   NR\   R]   R^   R_   R`   Ra   s   streaming-distribution(   R   RT   R   (   R   R\   R]   R^   R_   R`   Ra   RO   (    (    s7   lib/python2.7/site-packages/boto/cloudfront/__init__.pyt   create_streaming_distribution   s    	c         C   s   |  j  | | d  S(   Ns   streaming-distribution(   RV   (   R   RN   R    (    (    s7   lib/python2.7/site-packages/boto/cloudfront/__init__.pyt   delete_streaming_distribution   s    c         C   s   d t  f g } |  j d |  S(   Nt%   CloudFrontOriginAccessIdentitySummarys!   origin-access-identity/cloudfront(   R	   RA   (   R   R9   (    (    s7   lib/python2.7/site-packages/boto/cloudfront/__init__.pyt   get_all_origin_access_identity   s    c         C   s   |  j  | d t  S(   Ns!   origin-access-identity/cloudfront(   RG   R   (   R   t	   access_id(    (    s7   lib/python2.7/site-packages/boto/cloudfront/__init__.pyt   get_origin_access_identity_info   s    c         C   s   |  j  | d t  S(   Ns!   origin-access-identity/cloudfront(   RI   R
   (   R   Rl   (    (    s7   lib/python2.7/site-packages/boto/cloudfront/__init__.pyt!   get_origin_access_identity_config   s    	c         C   s   |  j  | | |  S(   N(   RQ   (   R   Rl   R    RO   (    (    s7   lib/python2.7/site-packages/boto/cloudfront/__init__.pyt!   set_origin_access_identity_config   s    c         C   s(   t  d | d |  } |  j | d t  S(   NR^   R`   s!   origin-access-identity/cloudfront(   R
   RT   R   (   R   R^   R`   RO   (    (    s7   lib/python2.7/site-packages/boto/cloudfront/__init__.pyt   create_origin_access_identity   s    	c         C   s   |  j  | | d  S(   Ns!   origin-access-identity/cloudfront(   RV   (   R   Rl   R    (    (    s7   lib/python2.7/site-packages/boto/cloudfront/__init__.pyt   delete_origin_access_identity   s    c         C   s   t  | t  s t |  } n  |  | _ d |  j | f } |  j d | i d d 6d | j   } | j   } | j d k r t j	 | |   } t
 j j | |  | St | j | j |   d S(   sQ   Creates a new invalidation request
            :see: http://goo.gl/8vECq
        s    /%s/distribution/%s/invalidationRR   s   text/xmls   Content-TypeRS   i   N(   RL   R   RB   R-   R,   RM   R.   R1   R   R4   R5   R6   R7   R   R2   (   R   RN   t   pathsR^   RE   R%   R<   R@   (    (    s7   lib/python2.7/site-packages/boto/cloudfront/__init__.pyt   create_invalidation_request   s    		
c   	      C   s   d |  j  | | f } |  j d | i d d 6 } | j   } | j d k r t g   } t j | |   } t j j	 | |  | St
 | j | j |   d  S(   Ns#   /%s/distribution/%s/invalidation/%sR+   s   text/xmls   Content-Typei   (   R-   R,   R.   R1   R   R   R4   R5   R6   R7   R   R2   (	   R   RN   t
   request_idR^   RE   R%   R<   Rr   R@   (    (    s7   lib/python2.7/site-packages/boto/cloudfront/__init__.pyt   invalidation_request_status	  s    	
c      	   C   s   d | } t    } | r& | | d <n  | r9 | | d <n  | r | d | j   7} x1 | j   D]  \ } } | d | | f 7} q` Wn  d t f g } t }	 t  d |  d | d	 | d
 |  }
 |  j | | d |	 d |
 S(   s  
        Get all invalidation requests for a given CloudFront distribution.
        This returns an instance of an InvalidationListResultSet that
        automatically handles all of the result paging, etc. from CF - you just
        need to keep iterating until there are no more results.

        :type distribution_id: string
        :param distribution_id: The id of the CloudFront distribution

        :type marker: string
        :param marker: Use this only when paginating results and only in
                       follow-up request after you've received a response where
                       the results are truncated. Set this to the value of the
                       Marker element in the response you just received.

        :type max_items: int
        :param max_items: Use this only when paginating results and only in a
                          follow-up request to indicate the maximum number of
                          invalidation requests you want in the response. You
                          will need to pass the next_marker property from the
                          previous InvalidationListResultSet response in the
                          follow-up request in order to get the next 'page' of
                          results.

        :rtype: :class:`boto.cloudfront.invalidation.InvalidationListResultSet`
        :returns: An InvalidationListResultSet iterator that lists invalidation
                  requests for a given CloudFront distribution. Automatically
                  handles paging the results.
        s   distribution/%s/invalidationt   Markert   MaxItemss   ?%s=%ss   &%s=%sR   RB   RN   t	   max_itemst   markerR:   R;   (   R3   t   popitemt   itemsR   R   RA   (   R   RN   Ry   Rx   RE   t   paramst   kt   vR9   R=   R>   (    (    s7   lib/python2.7/site-packages/boto/cloudfront/__init__.pyt   get_invalidation_requests  s     
	N($   t   __name__t
   __module__t   DefaultHostR-   R$   R   R   R(   R*   RA   RG   RI   RQ   RT   RV   RW   RX   RY   RZ   Rb   Rc   Rd   Re   Rf   Rg   Rh   Ri   Rk   Rm   Rn   Ro   Rp   Rq   Rs   Ru   R   (    (    (    s7   lib/python2.7/site-packages/boto/cloudfront/__init__.pyR   &   sP   										
															(   t   xml.saxR5   t   timeR/   t   boto.connectionR    R   t   boto.cloudfront.distributionR   R   R   R   R   R   t   boto.cloudfront.identityR   R	   R
   t   boto.cloudfront.invalidationR   R   R   t   boto.resultsetR   t   boto.cloudfront.exceptionR   R   (    (    (    s7   lib/python2.7/site-packages/boto/cloudfront/__init__.pyt   <module>   s   