î
)Ú X	  ã               @   s¶   d  d l  m Z d  d l 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 e j d	 ƒ d
 Z d d „  Z d d „  Z d d „  Z d d d „ Z d S)é    )Úabsolute_importN)Úuuid4)ÚBytesIOé   )Úsix)Úb)ÚRequestFieldzutf-8é   c               C   s
   t  ƒ  j S)zM
    Our embarassingly-simple replacement for mimetools.choose_boundary.
    )r   Úhex© r   r   úR/home/ubuntu/projects/ifolica/build/requests/requests/packages/urllib3/filepost.pyÚchoose_boundary   s    r   c             c   sg   t  |  t ƒ r! t j |  ƒ } n t |  ƒ } x3 | D]+ } t  | t ƒ rQ | Vq4 t j | Œ  Vq4 Wd S)z†
    Iterate over fields.

    Supports list of (k, v) tuples and dicts, and lists of
    :class:`~urllib3.fields.RequestField`.

    N)Ú
isinstanceÚdictr   Ú	iteritemsÚiterr   Úfrom_tuples)ÚfieldsÚiÚfieldr   r   r   Úiter_field_objects   s    r   c             C   s:   t  |  t ƒ r) d d „  t j |  ƒ Dƒ Sd d „  |  Dƒ S)a-  
    .. deprecated:: 1.6

    Iterate over fields.

    The addition of :class:`~urllib3.fields.RequestField` makes this function
    obsolete. Instead, use :func:`iter_field_objects`, which returns
    :class:`~urllib3.fields.RequestField` objects.

    Supports list of (k, v) tuples and dicts.
    c             s   s!   |  ] \ } } | | f Vq d  S)Nr   )Ú.0ÚkÚvr   r   r   ú	<genexpr>6   s    ziter_fields.<locals>.<genexpr>c             s   s!   |  ] \ } } | | f Vq d  S)Nr   )r   r   r   r   r   r   r   8   s    )r   r   r   r   )r   r   r   r   Úiter_fields)   s    r   c             C   s  t  ƒ  } | d k r! t ƒ  } n  x­ t |  ƒ D]Ÿ } | j t d | ƒ ƒ t | ƒ j | j ƒ  ƒ | j } t | t	 ƒ r‹ t
 | ƒ } n  t | t j ƒ r³ t | ƒ j | ƒ n | j | ƒ | j d ƒ q. W| j t d | ƒ ƒ t
 d | ƒ } | j ƒ  | f S)aJ  
    Encode a dictionary of ``fields`` using the multipart/form-data MIME format.

    :param fields:
        Dictionary of fields or list of (key, :class:`~urllib3.fields.RequestField`).

    :param boundary:
        If not specified, then a random boundary will be generated using
        :func:`mimetools.choose_boundary`.
    Nz--%s
s   
z--%s--
z multipart/form-data; boundary=%s)r   r   r   Úwriter   ÚwriterÚrender_headersÚdatar   ÚintÚstrr   Ú	text_typeÚgetvalue)r   ÚboundaryÚbodyr   r   Úcontent_typer   r   r   Úencode_multipart_formdata;   s     		r'   )Ú
__future__r   ÚcodecsÚuuidr   Úior   Úpackagesr   Zpackages.sixr   r   r   Úlookupr   r   r   r   r'   r   r   r   r   Ú<module>   s   