Ejemplo n.º 1
0
def to_mid(sid):
    result = []
    while sid:
        if sid < 10000000:
            result.insert(0, base62_encode(sid % 10000000))
        else:
            result.insert(0, base62_encode(sid % 10000000, padding=4))
        sid /= 10000000
    return "".join(result)
Ejemplo n.º 2
0
def save(kv, db):

    url = request.forms['url']
    if not url:
        return {'err' : '请输入URL'}

    url = url_normalize(url)
    if not url:
        return {'err' : '请输入有效的 URL'}

    surl = urlsplit(url)
    if surl.netloc.endswith(BLACKLIST):
        return {'err' : '不支持的域名'}

            
    code = hashto62(url)
    key = base62_encode(code)

    sql = """
    INSERT INTO `taobb_urls` (`id`, `key`, `url`, `gmt_create`, `gmt_modified`) VALUES (:id, :key, :url, now(), now())
    ON DUPLICATE KEY UPDATE `gmt_modified` = now()
    """

    sp = SQLParams('named', 'format')
    sql, params = sp.format(sql, { 
        'id' : code,
        'key' : key,
        'url' : url,
    })

    if db.execute(sql, params) and kv.set(key, url):
        return {'key':key , 'err' : None}
    else:
        return {'err': '内部错误'}
Ejemplo n.º 3
0
def insert(db, code, url):
    key = base62_encode(code)

    # remove unused
    sql = """
    DELETE FROM `taobb_urls` WHERE id = :id and `access_time` + INTERVAL `access_count` + :ttl  DAY < NOW()
    """
    sp = SQLParams('named', 'format')
    sql, params = sp.format(sql, {
        'id': code,
        'ttl': 30
    })

    db.execute(sql, params)

    sql = """
    INSERT IGNORE INTO taobb_urls(  `id` ,  `key` ,  `url` , `access_time` ,  `gmt_create` ,  `gmt_modified` ) 
    VALUES (:id, :key, :url, now(),now(), now())
    """

    sp = SQLParams('named', 'format')
    sql, params = sp.format(sql, {
        'id': code,
        'key': key,
        'url': url,
    })

    if db.execute(sql, params):
        return key
    else:
        old_url = code_to_url(code, db)
        if old_url == url:
            return key
        else:
            return insert(db, code + 1, url)
Ejemplo n.º 4
0
    def _save_and_create_uuid(self, fname, fbody, mime, transload_addr):
        uuid = yield self.redis.incr(self.IMAGER_UUID)
        b62 = base62_encode(uuid)

        fn = self._hash_by_name(fname, uuid)
        bdir = os.path.dirname(fn)

        try:
            if not os.path.exists(bdir):
                os.makedirs(bdir)
        except Exception, e:
            print e
Ejemplo n.º 5
0
def _update_url_data(redis_cli, url):
    k = URL_MASK % url
    u = redis_cli.get(k)
    if u == None:
        id = _get_uuid(redis_cli)
        uid = base62.base62_encode(id)
        redis_cli.set(k, uid)
        redis_cli.set(ENCODED_URL_MASK % uid, url)
        t = int(time.time())
        k = ENCODED_URL_DICT % uid
        redis_cli.hset(k, 'date_creation', t)
        redis_cli.hset(k, 'url', url)
        return uid
    return u
Ejemplo n.º 6
0
def _update_url_data(redis_cli, url):
    k = URL_MASK % url
    u = redis_cli.get(k)
    if u == None: 
        id = _get_uuid(redis_cli)
        uid = base62.base62_encode(id)
        redis_cli.set(k, uid)
        redis_cli.set(ENCODED_URL_MASK % uid, url)
        t = int(time.time())
        k = ENCODED_URL_DICT % uid
        redis_cli.hset(k, 'date_creation', t)
        redis_cli.hset(k, 'url', url)
        return uid
    return u
Ejemplo n.º 7
0
    def post(self):
        url = self.request.get("url")
        custom_path = self.request.get("custom_path")
        if custom_path:
            exists = Link.get_by_id(custom_path)
            if exists:
                return "path already exists, choose another"
        else:
            id = Counter.increment()
            custom_path = base62.base62_encode(id)

        l = Link(url=url, custom_path=custom_path, id = custom_path)
        l.put()

        self.redirect("/" + custom_path + "/stats")
Ejemplo n.º 8
0
def save(kv):
    key = None
    err = None

    url = request.forms['url']
    if url:
        url = url_uniq(url)
        if url:
            code = hashto62(url)

            key = base62_encode(code)

            if not kv.set(key, url):
                err = '内部错误'

        else:
            err = '请输入有效的 URL'

    else:
        err = '请输入URL'

    return {'key':key, 'err':err }
Ejemplo n.º 9
0
def pasteit():
    ip = get_real_ip(request)
    r = throttle.check(ip)

    if r is False:
        abort(401, "Not authorized")

    codebody = request.POST['codebody']
    raw = request.POST.get('raw', None)
    if codebody is None:
        abort(500, 'Empty request')

    a = idgen.request()
    id = base62_encode(a)
    r = ds.save("pasteit-%s" % id, codebody)
    if r is False:
        abort(503, 'Internal error saving id %s (%d)' % (id, a))

    if raw is None:
        redirect("%s/%s" % (BASE_URL, id))
    else:
        return id
Ejemplo n.º 10
0
def viewall():
    count = get_url_count()
    for i in xrange(1, count+1):
        view(base62_encode(i))
Ejemplo n.º 11
0
def post_index():
    url = request.forms.get('url')
    short = base62.base62_encode(int(time.time())) 
    result = db.find_and_modify({'url':url}, {'url':url,'short':short})
    redirect("/")
Ejemplo n.º 12
0
 def test_base62(self):
     self.assertEqual(base62_encode(100), '1C')
     self.assertEqual(base62_encode(999999999), '15FTGf')
     self.assertEqual(base62_decode('dtvd3o'), 12345678910)
Ejemplo n.º 13
0
 def path(self):
   if self.key().name():
     return self.key().name()
   return base62.base62_encode(self.id)
Ejemplo n.º 14
0
 def test_base_encode(self):
    
     string = base62.base62_encode(12345);
     print(string)
     self.assertTrue(string)
     """ self.assertEqual(string, '')