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
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
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))
def get_new_seq(): return UrlRecord.allocate_ids(size=1)[0]
def get_new_seq(): seq = UrlRecord.allocate_ids(size=1)[0] assert seq is not None return seq