include("import") func init_emf() if (isset(has_emf)) return end gvar(has_emf) fvar(old) need_mimetypes() need_mimetools() old = block.select(BLK_FUNC) println('# Based on ActiveState Code Recipe 146306: http://code.activestate.com/recipes/146306/') println('def encode_multipart_formdata(self, fields, files):') println(' BOUNDARY = mimetools.choose_boundary()') println('') println(' CRLF = "\r\n"') println(' L = []') println(' for (key, value) in fields.iteritems():') println(' L.append("--" + BOUNDARY)') println(' L.append("Content-Disposition: form-data; name=\"%s\"" % key)') println(' L.append("")') println(' L.append(value)') println(' for (key, filename) in files.iteritems():') println(' L.append("--" + BOUNDARY)') println(' L.append("Content-Disposition: form-data; name=\"%s\"; filename=\"%s\"" % (key, filename))') println(' L.append("Content-Type: %s" % get_content_type(filename))') println(' L.append("")') println(' with open(filename, "rb") as f:') println(' L.append(f.read())') println(' L.append("--" + BOUNDARY + "--")') println(' L.append("")') println(' body = CRLF.join(L)') println(' content_type = "multipart/form-data; boundary=%s" % BOUNDARY') println(' return content_type, body') println('') println('def get_content_type(self, filename):') println(' return mimetypes.guess_type(filename)[0] or "application/octet-stream"') block.select(old) end func doPostFile() fvar(cc, hh, ua, ref) need_httplib() init_emf() println(ctype, ', ', body, ' = self.encode_multipart_formdata(', Vars, ', ', FileNames, ')') cc = Cookies hh = Headers ua = UserAgent ref = Referer if (linked(Connection)) conn_ = Connection else if (Protocol == 0) println(conn_, ' = httplib.HTTPConnection(', Host, ', ', Port, ')') else println(conn_, ' = httplib.HTTPSConnection(', Host, ', ', Port, (isndef(Key)?(', ' && Key):''), (isndef(Cert)?(', ' && Cert):''), ')') end println(conn_, '.connect()') end if (isndef(hh)) println(hs, ' = ', hh) else println(hs, ' = {}') if (isndef(cc)) println('if ("Cookie" in ', hs, '):') block.inclvl() println(hs, '["Cookie"] += ', cc) block.declvl() println('else:') block.inclvl() println(hs, '["Cookie"] = ', cc) block.declvl() end println(hs, '["User-Agent"] = ', ua) if (isndef(ref)) println(hs, '["Referer"] = ', ref) end println (hs, '["Content-Length"] = len(', body, ')') println (hs, '["Content-Type"] = ', ctype) println(req, ' = ', conn_, '.request("POST", ', Url, ', headers=', hs, ', body=', body, ')') event(onPost, req && '.status') end func Conn() return(conn_) end func RespHeaders() return ((req && '.getheaders()')@PyList) end func RespData() retrun(req && '.read()') end