예제 #1
0
파일: links.py 프로젝트: aimeeble/links
def new_paste():
    if "p" not in flask.request.form:
        return flask.make_response("Bad Request", 400)

    text = flask.request.form["p"]
    title = flask.request.form.get("title")
    lang = flask.request.form.get("lang")

    with tempfile.TemporaryFile() as tmp_fh:
        tmp_fh.write(text)
        tmp_fh.seek(0)

        uploaded_file = UploadedFile(flask.request,
                                     stream=tmp_fh,
                                     filename='stdin')
        uploaded_file.save()

        fullpath = uploaded_file.get_filename()

    surl = sdb.new(fullpath, ShortURL.TEXT)
    surl.get_info()["title"] = title
    surl.get_info()["lang"] = lang
    surl.mime_type = "text/plain"
    sdb.save(surl)

    short_url = surl.get_short_url()

    return "%s\n" % short_url
예제 #2
0
파일: upgrade.py 프로젝트: aimeeble/links
    def convert(self):
        cur = self.db.urls.find({"link_type": 2, "info.title": {"$exists": 1}})
        for row in cur:

            if not os.path.exists(row["long_url"]):
                continue

            filename = os.path.basename(row["info"]["title"])

            print "%s: %s->%s" % (row["short_code"], row["long_url"], filename)

            with open(row["long_url"], "r") as fh:
                uf = UploadedFile(
                    None,
                    stream=fh,
                    mimetype=row["mime_type"],
                    filename=filename)
                uf._update_filenames()
                if uf.get_filename() == row["long_url"]:
                    print "\tskipping new format"
                    continue
                uf.save()

                row["long_url"] = uf.get_filename()
                self.db.urls.update({"short_code": row["short_code"]}, row)
예제 #3
0
파일: v1.py 프로젝트: aimeeble/links
def post():
    sdb = apis.get_sdb()
    surl = None

    if "file" in flask.request.files:
        uploaded_file = UploadedFile(flask.request, formfile='file')
        uploaded_file.save()

        full_url = uploaded_file.get_filename()

        surl = sdb.new(full_url, ShortURL.IMG)
        surl.mime_type = uploaded_file.get_mimetype()
        if not surl.info:
            surl.info = {}
        surl.info["title"] = uploaded_file.get_remote_filename()
        sdb.save(surl)

    elif "d" in flask.request.form:
        text = flask.request.form["d"]

        with tempfile.TemporaryFile() as tmp_fh:
            tmp_fh.write(text)
            tmp_fh.seek(0)

            uploaded_file = UploadedFile(flask.request, stream=tmp_fh)
            uploaded_file.save()

            full_url = uploaded_file.get_filename()

        surl = sdb.new(full_url, ShortURL.TEXT)
        if "m" in flask.request.form:
            surl.mime_type = flask.request.form["m"]
        else:
            surl.mime_type = "text/plain"
        sdb.save(surl)
    else:
        raise Exception("missing required field")

    return {
        "status": "OK",
        "url": full_url,
        "short_code": surl.get_short_code(),
        "short_url": surl.get_short_url(),
    }
예제 #4
0
파일: upgrade.py 프로젝트: aimeeble/links
    def convert(self):
        cur = self.db.urls.find({'link_type': 2})
        for row in cur:

            if not os.path.exists(row['long_url']):
                continue

            filename = os.path.basename(row["info"]["title"])

            print '%s: thumbnailing %s' % (row['short_code'], filename)

            with open(row["long_url"], "r") as fh:
                uf = UploadedFile(
                    None,
                    stream=fh,
                    mimetype=row["mime_type"],
                    filename=filename)
                uf._update_filenames()

                if os.path.exists(uf.thumb_filename) and \
                        os.path.exists(uf.tiny_thumb_filename):
                    print '\tskipping existing thumb'
                    continue
                uf._create_thumbnail()