Ejemplo n.º 1
0
def _create_short_url(form_data):
    form = forms.URLShortenerForm(form_data)
    if not form.validate():
        # TODO: error gracefully
        abort(400)

    url = form.url.data
    alias = form.alias.data or None
    explicit_alias_requested = alias is not None

    try:
        alias = shortener.make_alias(url, alias=alias)
    except shortener.UncleanAlias:
        # TODO: error gracefully
        abort(400)

    try:
        shortener.insert_url(url, alias, g.db)
    except storage.NotUnique:
        # That alias is already claimed; you can't have it
        if explicit_alias_requested:
            long_url = shortener.get_url(alias, g.db)
            if url != long_url:
                # TODO: error gracefully
                abort(403)

        # Hashed to the same thing?  Be idempotent
        else:
            pass

    short_url = url_for('short_url', alias=alias, _external=True)
    return short_url
Ejemplo n.º 2
0
def _create_short_url(form_data):
    form = forms.URLShortenerForm(form_data)
    if not form.validate():
        # TODO: error gracefully
        abort(400)

    url = form.url.data
    alias = form.alias.data or None
    explicit_alias_requested = alias is not None

    try:
        alias = shortener.make_alias(url, alias=alias)
    except shortener.UncleanAlias:
        # TODO: error gracefully
        abort(400)

    try:
        shortener.insert_url(url, alias, g.db)
    except storage.NotUnique:
        # That alias is already claimed; you can't have it
        if explicit_alias_requested:
            long_url = shortener.get_url(alias, g.db)
            if url != long_url:
                # TODO: error gracefully
                abort(403)

        # Hashed to the same thing?  Be idempotent
        else:
            pass

    short_url = url_for('short_url', alias=alias, _external=True)
    return short_url
Ejemplo n.º 3
0
def short_url(alias):
    """Look up and redirect to a long URL."""
    try:
        url = shortener.get_url(alias, g.db)
        if app.config['RECORD_HITS']:
            shortener.record_hit(alias, g.db)
    except storage.NotFound:
        abort(404)
    return redirect(url, code=301)
Ejemplo n.º 4
0
def short_url(alias):
    """Look up and redirect to a long URL."""
    try:
        url = shortener.get_url(alias, g.db)
        if app.config['RECORD_HITS']:
            shortener.record_hit(alias, g.db)
    except storage.NotFound:
        abort(404)
    return redirect(url, code=301)