Попробую совместить svn с git
[uimge.git] / uimgepy / libuimge / libiu.py
blobf27294d493a618d768439179a64dc62636c141fd
1 # -*- coding: utf-8 -*-
2 import httplib, mimetypes
3 #import sys,os
4 USER_AGENT='Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.7.12) \
5 Gecko/20050922 Firefox/1.0.7 (Debian package 1.0.7-1)'
7 def get_file_contents(file_name):
8 '''
9 Получаем содержание файла.
10 '''
11 f = open(file_name);
12 data = f.read()
13 f.close()
14 return data
15 def get_content_type(file_name):
16 cont_type=mimetypes.guess_type(file_name)[0] or 'application/octet-stream'
17 return cont_type
18 def encode_multipart_formdata(form_vaule, file_data, mode):
19 '''
20 Подготовка HTTP передачи
21 '''
22 BOUNDARY = '----------'
23 CRLF = '\r\n'
24 L = []
25 # add additional form fields
26 for (key, value) in form_vaule:
27 L.append('--' + BOUNDARY)
28 L.append('Content-Disposition: form-data; name="%s"' % key)
29 L.append('')
30 L.append(value)
31 # add file
32 if not mode:
33 L.append('--' + BOUNDARY)
34 L.append('Content-Disposition: form-data; name="%s"; filename="%s"' \
35 % (file_data[0], file_data[1]))
36 L.append('Content-Type: %s' % get_content_type(file_data[1]))
37 L.append('')
38 L.append(file_data[2])
40 L.append('--' + BOUNDARY + '--')
41 L.append('')
42 body = CRLF.join(L)
43 content_type = 'multipart/form-data; boundary=%s' % BOUNDARY
45 return content_type, body
47 def send_file(file_name, ihost, form_vaule, mode):
48 '''
49 send_file(file_name, ihost={'name':'','post':'','cookie':''}, form_vaule={}, mode=[True,True])
50 mode,flag = mode[0],mode[1]
51 mode = False - заливаем просто файл, если True - то заливаем по урлу.
53 flag = True - хостинг не поддерживает задивку по урлам, и поэтому обманываем его.
54 '''
55 mode,flag = mode[0],mode[1]
57 if not mode and not flag:
58 file_data = (ihost['name'], file_name, get_file_contents(file_name))
60 elif mode and not flag:
61 file_data = (ihost['name'], file_name, None)
62 elif not mode and flag:
63 from urllib import urlopen
64 file_data = (ihost['name'], file_name.split('/')[-1], urlopen(file_name).read())
67 content_type, body = encode_multipart_formdata(form_vaule, file_data, mode)
68 header = httplib.HTTPConnection(ihost['host'])
69 header.putrequest('POST', ihost['post'])
70 header.putheader('Content-Type', content_type)
71 header.putheader('Content-Length', str(len(body)))
72 header.putheader('Referer', 'http://'+ihost['host']+'/')
73 header.putheader('Cookie',ihost['cookie'])
74 header.putheader('User-Agent', USER_AGENT)
75 header.endheaders()
76 header.send(body)
77 #header.set_debuglevel(1)
78 return header.getresponse()