Your IP : 172.28.240.42


Current Path : /usr/lib/python2.7/dist-packages/apport/crashdb_impl/
Upload File :
Current File : //usr/lib/python2.7/dist-packages/apport/crashdb_impl/multipartpost_handler.pyc


5Oc@sdZddlZddlZddlZddlZddlZddlZddlZdd
dYZdZ	dej
fdYZdZe
d	krendS(s
Usage:
  Enables the use of multipart/form-data for posting forms

Inspirations:
  Upload files in python:
    http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/146306
  urllib2_file:
    Fabien Seisen: <fabien@seisen.org>

Example:
  import MultipartPostHandler, urllib2, cookielib

  cookies = cookielib.CookieJar()
  opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cookies),
                                MultipartPostHandler.MultipartPostHandler)
  params = { "username" : "bob", "password" : "riviera",
             "file" : open("filename", "rb") }
  opener.open("http://wwww.bobsite.com/upload/", params)

Further Example:
  The main function of this file is a sample which downloads a page and
  then uploads it to the W3C validator.
iNtCallablecBseZdZRS(cCs
||_dS(N(t__call__(tselftanycallable((sM/usr/lib/python2.7/dist-packages/apport/crashdb_impl/multipartpost_handler.pyt__init__/s(t__name__t
__module__R(((sM/usr/lib/python2.7/dist-packages/apport/crashdb_impl/multipartpost_handler.pyR.sitMultipartPostHandlercBsBeZejjdZdZdddZeeZeZ	RS(i
cCs|j}|dk	rt|tkrg}g}y\xU|jD]G\}}t|tkrz|j||fqF|j||fqFWWn;tk
rtj	\}}}tdj
|nXt|dkrtj
|t}nz|j||\}	}d|	}
|jdra|jdjddkrad|jddfGHn|jd|
|j|n|S(Ns1not a valid non-string sequence or mapping objectis multipart/form-data; boundary=%ssContent-Typesmultipart/form-datasReplacing %s with %sscontent-type(tget_datatNonettypetstrtitemstfiletappendt	TypeErrortsystexc_infotwith_tracebacktlenturllibt	urlencodetdoseqtmultipart_encodet
has_headert
get_headertfindtadd_unredirected_headertadd_data(Rtrequesttdatatv_filestv_varstkeytvaluetsystypet	tracebacktboundarytcontenttype((sM/usr/lib/python2.7/dist-packages/apport/crashdb_impl/multipartpost_handler.pythttp_request9s,

c	Cs(|dkrtj}n|dkr0d}nxB|D]:\}}|d|7}|d|7}|d|d7}q7Wx|D]\}}|jjdd}tj|dpd	}|d|7}|d
||f7}|d|7}|jd|d|jd7}q|W|d|7}||fS(
Nts--%s
s)Content-Disposition: form-data; name="%s"s

s
t/iisapplication/octet-streams:Content-Disposition: form-data; name="%s"; filename="%s"
sContent-Type: %s
s
--%s--

(	R	t	mimetoolstchoose_boundarytnametsplitt	mimetypest
guess_typetseektread(	tvarstfilesR%tbufferR!R"tfdtfilenameR&((sM/usr/lib/python2.7/dist-packages/apport/crashdb_impl/multipartpost_handler.pyRUs$	
N(
RRturllib2tHTTPHandlert
handler_orderR'R	RRt
https_request(((sM/usr/lib/python2.7/dist-packages/apport/crashdb_impl/multipartpost_handler.pyR6s
	csddldtjtfd}ttjddkrtx,tjdD]}||q]Wn
|ddS(Nishttp://validator.w3.org/checkcsjdd}tj|dj|jidd6dd6t|dd	d
6}j|jGHtj|ddS(Ntsuffixs.htmlit0tsstInlinetdoctypeitrbt
uploaded_file(tmkstemptostwritetopenR1tremove(turlttemptparams(ttempfiletopenertvalidatorURL(sM/usr/lib/python2.7/dist-packages/apport/crashdb_impl/multipartpost_handler.pytvalidateFilets#
iishttp://www.google.com(RJR7tbuild_openerRRRtargv(RMtarg((RJRLRKsM/usr/lib/python2.7/dist-packages/apport/crashdb_impl/multipartpost_handler.pytmainns	t__main__((t__doc__RR7R*R.RCtstatRRRtBaseHandlerRRQR(((sM/usr/lib/python2.7/dist-packages/apport/crashdb_impl/multipartpost_handler.pyt<module>'s$8