Esempio n. 1
0
def upload(url, path, fields=None, headers=None, use_json=False):
    if modutil.exists('pycurl'):
        import pycurl
        url = stringutil.u2s(url)
        path = stringutil.u2s(path)
        if not os.path.exists(path):
            raise Exception('File "%s" not found.' % path)
        buffer = StringIO.StringIO()
        c = pycurl.Curl()
        c.setopt(c.POST, 1)
        c.setopt(c.HEADER, 1)
        c.setopt(c.WRITEFUNCTION, buffer.write)
        c.setopt(c.URL, url)
        field_list = [('file', (c.FORM_FILE, path))]
        if fields is not None:
            for k,v in fields.items():
                if use_json:
                    v = json2.dumps(v)
                field_list.append((k, v))
        c.setopt(c.HTTPPOST, field_list)
        if headers is not None:
            header_list = []
            for k, v in headers.items():
                header = '%s: %s' % (k, v)
                header = str(header) # header may be unicode, which is un-acceptable for curl
                header_list.append(header)
            c.setopt(c.HTTPHEADER, header_list)
        c.perform()
        code = c.getinfo(pycurl.HTTP_CODE)
        c.close()
        if code != 200:
            raise CodedError('UPLOAD_FAILED', 'Failed to upload file %s.' % path)
        resp = buffer.getvalue()
        if use_json:
            json = resp.splitlines()[-1]
            json = unicode(json, 'utf-8')
            resp = json2.loads(json)
        return resp
    else:
        raise ModNotFoundError('pycurl')
Esempio n. 2
0
#!/usr/bin/python
# -*- coding: UTF-8 -*-

'''
Created on Dec 28, 2011

@author: mengchen
'''
from common.error.errors import BadArgValueError, ModNotFoundError
from common.util import modutil
if modutil.exists('sqlalchemy'):
    from sqlalchemy.engine import create_engine
    from sqlalchemy.orm import scoped_session
    from sqlalchemy.orm.session import sessionmaker
    
    class SqlAlchemyDao(object):
        def __init__(self, host, user, passwd, db):
            conn_str = 'mysql://%s:%s@%s/%s?charset=utf8' % (user, passwd, host, db)
            self._engine = create_engine(conn_str, pool_recycle=3600, echo=False)
            class _Session(sessionmaker(bind=self._engine)):
                def __enter__(self):
                    return self
                
                def __exit__(self, type, value, traceback):
                    if value is None:
                        self.commit()
                    else:
                        self.rollback()
            self._Session = _Session
            self._ScopedSession = scoped_session(_Session)
            
Esempio n. 3
0
        def _read_headers(self):
            return {}

        def _read_headers_from_dict(self, d):
            headers = {}
            for k, v in d.items():
                if k.startswith('HTTP_'):
                    k = k[len('HTTP_'):].replace('_', '-').upper()
                    headers[k] = v
            return headers

    return _Coor


if modutil.exists('web'):
    import web

    class WebPyCoor(coor_maker()):
        def GET(self, path):
            resp = self.handle(path)
            return self._process_resp(resp)

        def POST(self, path):
            resp = self.handle(path)
            return self._process_resp(resp)

        def _read_fields(self):
            return web.input()

        def _read_headers(self):
Esempio n. 4
0
        def _read_fields(self):
            raise NotImplementedError()
        
        def _read_headers(self):
            return {}
        
        def _read_headers_from_dict(self, d):
            headers = {}
            for k, v in d.items():
                if k.startswith('HTTP_'):
                    k = k[len('HTTP_'):].replace('_', '-').upper()
                    headers[k] = v
            return headers
    return _Coor

if modutil.exists('web'):
    import web
    class WebPyCoor(coor_maker()):
        def GET(self, path):
            resp = self.handle(path)
            return self._process_resp(resp)
    
        def POST(self, path):
            resp = self.handle(path)
            return self._process_resp(resp)
        
        def _read_fields(self):
            return web.input()
        
        def _read_headers(self):
            return self._read_headers_from_dict(web.ctx.env)
Esempio n. 5
0
        for stub in stubs:
            setattr(stub['obj'], stub['attr'], stub['old_value'])
        self._stubbed = False
        super(StubFixture, self).tearDown()
    
    def add_stub(self, obj, attr, value):
        stub = dict(obj=obj, attr=attr, value=value)
        self._stubs.append(stub)
        if self._stubbed:
            self._stub(stub)
        
    def _stub(self, stub):
        stub['old_value'] = getattr(stub['obj'], stub['attr'])
        setattr(stub['obj'], stub['attr'], stub['value'])
        
if modutil.exists('mox'):
    import mox
    class MoxFixture(Fixture):
        def __init__(self):
            super(MoxFixture, self).__init__()
            self._mox = mox.Mox()
            
        def tearDown(self):
            self._mox.ResetAll()
            self._mox.UnsetStubs()
            super(MoxFixture, self).tearDown()
        
        def create_mock(self, cls=None):
            return self._mox.CreateMockAnything() if cls is None else self._mox.CreateMock(cls)
        
        def mock(self, obj, attr):