コード例 #1
0
ファイル: diary.py プロジェクト: tiger8888/python
 def __init__(self,window):
     conf.ACCESS_KEY="BbDU4MoFrx2YaF6tqBFmnKHFuDlq1EO-mm2ldlBm"
     conf.SECRET_KEY="WWdwgm4oRmOh_L9yKbyWplcUFaIGAZXk8e_UOtDs"
     self.policy=rs.PutPolicy(ZONENAME)
     self.token=self.policy.token()
     self.window=window
     self.filename=os.path.basename(Db).strip()
コード例 #2
0
    def test_block(self):
        if is_travis:
            return
        policy = rs.PutPolicy(bucket)
        uptoken = policy.token()
        client = up.Client(uptoken)

        # rets = [0, 0]
        data_slice_2 = "\nbye!"
        ret, err = resumable_io.mkblock(client, len(data_slice_2),
                                        data_slice_2)
        assert err is None, err
        self.assertEqual(ret["crc32"], binascii.crc32(data_slice_2))

        extra = resumable_io.PutExtra(bucket)
        extra.mimetype = "text/plain"
        extra.progresses = [ret]
        lens = 0
        for i in xrange(0, len(extra.progresses)):
            lens += extra.progresses[i]["offset"]

        key = u"sdk_py_resumable_block_4_%s" % r(9)
        ret, err = resumable_io.mkfile(client, key, lens, extra)
        assert err is None, err
        self.assertEqual(ret["hash"], "FtCFo0mQugW98uaPYgr54Vb1QsO0",
                         "hash not match")
        rs.Client().delete(bucket, key)
コード例 #3
0
    def put(self, img_url, key=None, rename=None):
        """
            put your data to qiniu. If key is None, the server will generate one.
            Note: img_url is web url.
        """
        r = None
        if img_url is None:
            raise ValueError('upload img path to qiniu error!')

        for i in range(5):
            r = requests.get(img_url, timeout=10.0)
            if r is not None:
                break
        policy = rs.PutPolicy(bucket_name)
        policy.saveKey = rename
        up_token = policy.token()

        ret, err = io.put(up_token, key, StringIO(r.content))
        if err is not None:
            sys.stderr.write('error: %s ' % err)
            return ret['key']
        else:
            # print 'upload img ok.'
            pass
        return ret
コード例 #4
0
    def test_put(self):
        if is_travis:
            return
        src = urllib.urlopen("http://cheneya.qiniudn.com/hello_jpg")
        ostype = platform.system()
        if ostype.lower().find("windows") != -1:
            tmpf = "".join([os.getcwd(), os.tmpnam()])
        else:
            tmpf = os.tmpnam()
        dst = open(tmpf, 'wb')
        shutil.copyfileobj(src, dst)
        src.close()

        policy = rs.PutPolicy(bucket)
        extra = resumable_io.PutExtra(bucket)
        extra.bucket = bucket
        extra.params = {"x:foo": "test"}
        key = "sdk_py_resumable_block_5_%s" % r(9)
        localfile = dst.name
        ret, err = resumable_io.put_file(policy.token(), key, localfile, extra)
        assert ret.get("x:foo") == "test", "return data not contains 'x:foo'"
        dst.close()
        os.remove(tmpf)

        assert err is None, err
        self.assertEqual(ret["hash"], "FnyTMUqPNRTdk1Wou7oLqDHkBm_p",
                         "hash not match")
        rs.Client().delete(bucket, key)
コード例 #5
0
    def test_put_4m(self):
        if is_travis:
            return
        ostype = platform.system()
        if ostype.lower().find("windows") != -1:
            tmpf = "".join([os.getcwd(), os.tmpnam()])
        else:
            tmpf = os.tmpnam()
        dst = open(tmpf, 'wb')
        dst.write("abcd" * 1024 * 1024)
        dst.flush()

        policy = rs.PutPolicy(bucket)
        extra = resumable_io.PutExtra(bucket)
        extra.bucket = bucket
        extra.params = {"x:foo": "test"}
        key = "sdk_py_resumable_block_6_%s" % r(9)
        localfile = dst.name
        ret, err = resumable_io.put_file(policy.token(), key, localfile, extra)
        assert ret.get("x:foo") == "test", "return data not contains 'x:foo'"
        dst.close()
        os.remove(tmpf)

        assert err is None, err
        self.assertEqual(ret["hash"], "FnIVmMd_oaUV3MLDM6F9in4RMz2U",
                         "hash not match")
        rs.Client().delete(bucket, key)
コード例 #6
0
    def __init__(self):
        os.chdir(PATH)
        self.prefix = time.strftime("%Y%m%d", time.localtime())
        conf.ACCESS_KEY = "BbDU4MoFrx2YaF6tqBFmnKHFuDlq1EO-mm2ldlBm"
        conf.SECRET_KEY = "WWdwgm4oRmOh_L9yKbyWplcUFaIGAZXk8e_UOtDs"

        policy = rs.PutPolicy("ljdpython")
        self.token = policy.token()
コード例 #7
0
 def put_file(self, name, content):
     bucket = BUCKET_KEY
     policy = rs.PutPolicy(bucket)
     token = policy.token()
     ret, err = io.put(token, name, content)
     if err is not None:
         raise IOError("QiniuStorageError: %s", err)
     return self.img_url(name)
コード例 #8
0
def save_file_qiniu(binary, filename, mime="application/octet-stream"):
    policy = rs.PutPolicy(QiniuConf.BUCKET_NAME)
    uptoken = policy.token()
    extra = io.PutExtra()
    extra.mime_type = mime
    res, err = io.put(uptoken, filename, binary, extra)
    if err is not None:
        return 'none'
    url = rs.make_base_url(QiniuConf.BUCKET_DOMAIN, filename)
    return url
コード例 #9
0
ファイル: storage.py プロジェクト: manlan2/qiniu-storage
    def _put_file(self, name, content):

        if self.encrypt_func:
            content = self.encrypt_func(content)

        policy = rs.PutPolicy(self.bucket)
        uptoken = policy.token()
        ret, err = io.put(uptoken, name, content)
        if err is not None:
            raise IOError("QiniuStorageError: %s", err)
コード例 #10
0
    def test_put_policy(self):
        policy = rs.PutPolicy(bucket_name)
        policy.endUser = "******"
        tokens = policy.token().split(':')
        self.assertEqual(conf.ACCESS_KEY, tokens[0])
        data = json.loads(decode(tokens[2]))
        self.assertEqual(data["scope"], bucket_name)
        self.assertEqual(data["endUser"], policy.endUser)

        new_hmac = encode(hmac.new(conf.SECRET_KEY, tokens[2], sha1).digest())
        self.assertEqual(new_hmac, tokens[1])
コード例 #11
0
def upload_by_rawdata(rawdata, length):
    policy = qiniu_rs.PutPolicy(qiniu_bucket)
    uptoken = policy.token()
    extra = rio.PutExtra(qiniu_bucket)
    ret, err = rio.put(uptoken, None, rawdata, length, extra)
    if err is not None:
        log.error('rio put raw file return ret:%s, err:%s' % (str(ret), err))
        return None
    else:
        log.info('rio put raw file return ret:%s, err:%s' % (str(ret), err))

    return ret['key']
コード例 #12
0
ファイル: app.py プロジェクト: dtynn/qiniu_demos
 def get(self):
     conf.ACCESS_KEY = ACCESS_KEY
     conf.SECRET_KEY = SECRET_KEY
     policy = rs.PutPolicy(BUCKET)
     policy.returnUrl = ''
     policy.returnBody = 'etag=$(etag)&pid=$(persistentId)'
     #policy.callbackUrl = ''
     #policy.callbackBody = ''
     policy.persistentOps = 'avthumb/mp3/ar/44100/ab/32k;avthumb/mp3/aq/6/ar/16000'
     policy.persistentNotifyUrl = ''
     uploadToken = policy.token()
     self.render('upload.html', token=uploadToken)
     return
コード例 #13
0
 def get(self):
     jsonp = self.get_argument('jsonp', 'callback')
     self.set_header('Content-Type', 'application/json')
     conf.ACCESS_KEY = ACCESS_KEY
     conf.SECRET_KEY = SECRET_KEY
     policy = rs.PutPolicy(BUCKET)
     policy.callbackUrl = 'http://dev-api.tuktalk.com/apis/cb'
     policy.callbackBody = 'key=$(etag)'
     #policy.persistentOps = 'avthumb/mp3/ar/44100/ab/32k;avthumb/mp3/aq/6/ar/16000'
     #policy.persistentNotifyUrl = ''
     uploadToken = policy.token()
     self.write('%s(%s)' % (jsonp, json.dumps(uploadToken)))
     return
コード例 #14
0
ファイル: apis.py プロジェクト: cc8848/icon-maker-2
 def get(self):
     globalConf = self.settings['globalConfig']
     accessKey = globalConf.get('qiniu', 'accesskey')
     secretKey = globalConf.get('qiniu', 'secretkey')
     bucket = globalConf.get('qiniu', 'bucket')
     selfHost = globalConf.get('website', 'host')
     qConf.ACCESS_KEY = accessKey
     qConf.SECRET_KEY = secretKey
     policy = qRs.PutPolicy(bucket)
     policy.callbackUrl = '%s/api/q_callback' % (selfHost, )
     policy.callbackBody = 'etag=$(etag)'
     uploadToken = policy.token()
     self.ajax_result(0, 0, data=uploadToken)
     return
コード例 #15
0
    def post(self):
        mimeType = 'application/json'
        if self.request.headers.get('Content-Type', '') == mimeType:
            data = self.request.body
            dataObj = json.loads(data)
            pid = dataObj.get('id', 'default')
            conf.ACCESS_KEY = STORAGE_ACCESS_KEY
            conf.SECRET_KEY = STORAGE_SECRET_KEY
            storagePolicy = rs.PutPolicy(STORAGE_BUCKET)
            storageToken = storagePolicy.token()

            extra = io.PutExtra()
            extra.mime_type = mimeType

            io.put(storageToken, str(pid), data, extra)
        return
コード例 #16
0
ファイル: apis.py プロジェクト: dtynn/qalbum
 def get(self):
     globalConf = self.settings['globalConfig']
     accessKey = globalConf.get('qiniu', 'accesskey')
     secretKey = globalConf.get('qiniu', 'secretkey')
     bucket = globalConf.get('qiniu', 'bucket')
     selfHost = globalConf.get('website', 'host')
     qConf.ACCESS_KEY = accessKey
     qConf.SECRET_KEY = secretKey
     policy = qRs.PutPolicy(bucket)
     policy.callbackUrl = '%s/api/q_callback' % (selfHost, )
     policy.callbackBody = 'etag=$(etag)&opsId=$(persistentId)&file_name=$(x:file_name)&file_size=$(fsize)'
     policy.persistentOps = 'avthumb/m3u8/preset/video_240k;avthumb/android'
     policy.persistentNotifyUrl = '%s/api/q_notify' % (selfHost, )
     uploadToken = policy.token()
     self.ajax_result(0, 0, data=uploadToken)
     return
コード例 #17
0
    def test_put_0(self):
        if is_travis:
            return

        f = StringIO.StringIO('')

        policy = rs.PutPolicy(bucket)
        extra = resumable_io.PutExtra(bucket)
        extra.bucket = bucket
        extra.params = {"x:foo": "test"}
        key = "sdk_py_resumable_block_7_%s" % r(9)
        ret, err = resumable_io.put(policy.token(), key, f, 0, extra)

        assert err is None, err
        assert ret.get("x:foo") == "test", "return data not contains 'x:foo'"
        self.assertEqual(ret["hash"], "Fg==", "hash not match")
        rs.Client().delete(bucket, key)
コード例 #18
0
    def qvttUpload(self, key):
        domain = self.conf.get('qiniu', 'domain')
        accessKey = self.conf.get('qiniu', 'accesskey')
        secretKey = self.conf.get('qiniu', 'secretkey')
        bucket = self.conf.get('qiniu', 'bucket')

        qConf.ACCESS_KEY = accessKey
        qConf.SECRET_KEY = secretKey
        policy = qRs.PutPolicy(bucket)
        uploadToken = policy.token()

        url = '%s/%s' % (domain, key)
        key = '%s.vtt' % (key, )

        data = makeContent(url)

        qIo.put(uploadToken, key, data)
        return
コード例 #19
0
    def put_files(self, key=None, local_file=None, rename=None):
        """
        put local file to qiniu. If key is None, the server will generate one.
        Note: local_file if local file path.
        """
        if local_file is None:
            raise NameError('upload file to qiniu error!')

        policy = rs.PutPolicy(bucket_name)
        policy.saveKey = rename
        up_token = policy.token()

        ret, err = io.put_file(up_token, key, local_file)
        if err is not None:
            sys.stderr.write('error: %s ' % err)
            return ret['key']
        else:
            # print 'upload local: %s file ok.' % local_file
            pass
        return ret
コード例 #20
0
ファイル: views.py プロジェクト: votenl/Romantic-2
def update(orgin_bucket, target_bucket, returnUrl, user_id, oops, pipeline):
    conf.ACCESS_KEY = config.QINIU_ACCESS_KEY
    conf.SECRET_KEY = config.QINIU_SECRET_KEY

    key = str(datetime.now())[:19] + str(user_id)
    print key
    policy = rs.PutPolicy("%s:%s" % (orgin_bucket, key))
    policy.returnUrl = returnUrl
    policy.returnBody = '{"hash": $(etag), "key": "%s", "persistentId":"$(persistentId)"}' % key
    policy.mimeLimit = "image/*"
    policy.fsizeLimit = 12000000
    # 本地压缩后上传和原图直传,上传策略不一样  add by lee @14.9.21 21:28
    if oops != '':
        entry = target_bucket + ':' + key
        EncodeEntryURI = base64.urlsafe_b64encode(entry)
        # oops 举例:'imageView2/1/w/100/h/100/q/100|saveas/'
        Ops = oops + EncodeEntryURI
        policy.persistentOps = Ops
    policy.persistentPipeline = pipeline  # 为空表示使用公用队列,否则使用私用队列
    uptoken = policy.token()
    return uptoken, key
コード例 #21
0
 def post(self):
     bucket = str(self.get_argument('bucket', ''))
     aKey = str(self.get_argument('access_key', ''))
     sKey = str(self.get_argument('secret_key', ''))
     persistentOps = filter(lambda x: x, self.get_arguments('ops'))
     persistentNotifyUrl = '%s/notify_cb' % (HOST, )
     returnUrl = '%s/result' % (HOST, )
     #returnBody = 'etag=$(etag)&pid=$(persistentId)'
     if bucket and aKey and sKey and persistentOps and persistentNotifyUrl:
         conf.ACCESS_KEY = aKey
         conf.SECRET_KEY = sKey
         policy = rs.PutPolicy(bucket)
         policy.returnUrl = returnUrl
         #policy.returnBody = returnBody
         policy.persistentOps = str(';'.join(persistentOps))
         policy.persistentNotifyUrl = persistentNotifyUrl
         uploadToken = policy.token()
         self.set_cookie('token', uploadToken)
     else:
         self.set_cookie('token', '')
     self.redirect('/token')
     return
コード例 #22
0
    def test_put_policy(self):
        policy = rs.PutPolicy(bucket_name)
        policy.endUser = "******"
        policy.returnUrl = "http://localhost:1234/path?query=hello"
        policy.returnBody = "$(sha1)"
        # Do not specify the returnUrl and callbackUrl at the same time
        policy.callbackUrl = "http://1.2.3.4/callback"
        policy.callbackBody = "$(bucket)"

        policy.saveKey = "$(sha1)"
        policy.insertOnly = 1
        policy.detectMime = 1
        policy.fsizeLimit = 1024
        policy.persistentNotifyUrl = "http://4.3.2.1/persistentNotifyUrl"
        policy.persistentOps = "avthumb/flash"

        tokens = policy.token().split(':')

        # chcek first part of token
        self.assertEqual(conf.ACCESS_KEY, tokens[0])
        data = json.loads(decode(tokens[2]))

        # check if same
        self.assertEqual(data["scope"], bucket_name)
        self.assertEqual(data["endUser"], policy.endUser)
        self.assertEqual(data["returnUrl"], policy.returnUrl)
        self.assertEqual(data["returnBody"], policy.returnBody)
        self.assertEqual(data["callbackUrl"], policy.callbackUrl)
        self.assertEqual(data["callbackBody"], policy.callbackBody)
        self.assertEqual(data["saveKey"], policy.saveKey)
        self.assertEqual(data["exclusive"], policy.insertOnly)
        self.assertEqual(data["detectMime"], policy.detectMime)
        self.assertEqual(data["fsizeLimit"], policy.fsizeLimit)
        self.assertEqual(data["persistentNotifyUrl"],
                         policy.persistentNotifyUrl)
        self.assertEqual(data["persistentOps"], policy.persistentOps)

        new_hmac = encode(hmac.new(conf.SECRET_KEY, tokens[2], sha1).digest())
        self.assertEqual(new_hmac, tokens[1])
コード例 #23
0
    def save_file_qiniu(binary, filename, mime="application/octet-stream"):

        today = datetime.now().strftime("%Y/%m/%d/")
        filename = today + filename

        policy = rs.PutPolicy(QINIU_SETTINGS.BUCKET_NAME)
        uptoken = policy.token()

        extra = io.PutExtra()
        extra.mime_type = mime

        res, err = io.put(uptoken, filename, binary, extra)
        if err is not None:
            raise Exception("Qiniu save file [%s] error: %s res: %s" % (filename, err, res))

        url = rs.make_base_url(QINIU_SETTINGS.BUCKET_DOMAIN, filename)

        iv = fop.ImageView()
        iv.mode = 2
        iv.width = THUMB_SIZE[0]
        url_thumb = iv.make_request(url)

        return url, url_thumb
コード例 #24
0
def uptoken():
    policy = rs.PutPolicy(BUCKET_NAME)
    uptoken = policy.token()
    return '{"uptoken": "%s"}' % (uptoken)
コード例 #25
0
ファイル: io_test.py プロジェクト: wbbim/getlink
    import zlib
    binascii = zlib
except ImportError:
    zlib = None
    import binascii
import cStringIO

from qiniu import conf
from qiniu import rs
from qiniu import io

conf.ACCESS_KEY = os.getenv("QINIU_ACCESS_KEY")
conf.SECRET_KEY = os.getenv("QINIU_SECRET_KEY")
bucket_name = os.getenv("QINIU_TEST_BUCKET")

policy = rs.PutPolicy(bucket_name)
extra = io.PutExtra()
extra.mime_type = "text/plain"
extra.params = {'x:a': 'a'}


def r(length):
    lib = string.ascii_uppercase
    return ''.join([random.choice(lib) for i in range(0, length)])


class TestUp(unittest.TestCase):
    def test(self):
        def test_put():
            key = "test_%s" % r(9)
            # params = "op=3"