示例#1
0
def create_record(url, seq):
    md5 = get_md5(url)
    unique_rec = UniqueUrl.get_by_id(md5)
    if unique_rec:
        if url != unique_rec.url:
            raise ValueError("Unthinkable happened: md5 collision")
        seq = unique_rec.seq
    else:
        unique_rec = UniqueUrl(url=url, seq=seq, id=md5)
        record = UrlRecord(url=url, id=seq)
        unique_rec.put()
        record.put()
    return seq
示例#2
0
def create_record(url):
    md5 = get_md5(url)
    key = ndb.Key(UniqueUrl, md5)
    unique_rec = key.get()
    if unique_rec:
        if url != unique_rec.url:
            raise ValueError("Unthinkable happened: md5 collision")
        seq = unique_rec.seq
    else:
        seq = change_base(randint(0, len(ALPHABET)**LEN_UID - 1))
        unique_rec = UniqueUrl(url=url, seq=seq, id=md5)
        record = UrlRecord(url=url, id=seq)
        unique_rec.put()
        record.put()
    return seq
示例#3
0
 def get(self, seq_b):
     seq = decode_seq(seq_b)
     record = UrlRecord.get_by_id(seq)
     if record:
         self.redirect(str(record.url))
     else:
         self.response.headers['Content-Type'] = 'text/plain'
         self.response.write('Non existent url: ' + str(seq))
示例#4
0
def get_new_seq():
    return UrlRecord.allocate_ids(size=1)[0]
示例#5
0
def get_new_seq():
    seq = UrlRecord.allocate_ids(size=1)[0]
    assert seq is not None
    return seq