예제 #1
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(),
    }