def GET(self):
        info = ""
        data = web.input(op="None", p="", t="")
        if data.op == "save":
            save = BlogSaver()
            info = save.Save()
        elif data.op == "clean":
            target = data.t
            cleaner = BlogCleaner()
            info = cleaner.Clean(target)
        elif data.op == "show" and data.p == "":
            show = BlogShower()
            info = show.Show()
        elif data.op == "show":
            path = data.p
            show = BlogShower()
            info = show.ShowPost(path)
        elif data.op == "refresh":
            saver = DummySaver()
            grabber = GrabCnblogPost('catch', saver)
            info = grabber.get_all_post("")
        else:
            info = "Welcome to my secret blog handler, please contact me by my email: [email protected], thanks."

        info = info.replace("\n", "<br>")
        return "<!DOCTYPE html><head><meta charset=\"UTF-8\"><title>miliao's secret blog handler</title></head><body>%s</body></html>" % info
    def Save(self):
        time = str(datetime.datetime.now())
        print "now to backup my blog, time:", time

        saver = SaeStorageSaver(g_sae_storage_bucket)

        all_backup = saver.GetBackupList()
        entry = categorize_post(all_backup)
        sz = len(entry)
        if sz >= g_max_back_up_list + 2:
            return "already have " + str(sz) + " backup, need to clean up to make some space"

        grabber = GrabCnblogPost('catch', saver)
        res = grabber.get_all_post(g_backup_path + time)

        print res

        all_backup = saver.GetBackupList()
        info = format_storage_item(all_backup)

        return res + "\ndetail information of my blog:\n" + info