From be1f0f7d33440d96c2bcc1c7f3dfd5cbb356e54f Mon Sep 17 00:00:00 2001 From: Elrond Date: Mon, 17 Dec 2012 19:42:31 +0100 Subject: [PATCH] upload refactor: push url handling Start to refactor our upload handling in main submit and the api. Start factoring out the handling of PuSH url handling. --- mediagoblin/submit/lib.py | 50 +++++++++++++++++++++++++++++++++++++ mediagoblin/submit/views.py | 28 ++------------------- 2 files changed, 52 insertions(+), 26 deletions(-) create mode 100644 mediagoblin/submit/lib.py diff --git a/mediagoblin/submit/lib.py b/mediagoblin/submit/lib.py new file mode 100644 index 00000000..57069e84 --- /dev/null +++ b/mediagoblin/submit/lib.py @@ -0,0 +1,50 @@ +# GNU MediaGoblin -- federated, autonomous media hosting +# Copyright (C) 2011, 2012 MediaGoblin contributors. See AUTHORS. +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . + +import urllib +import urllib2 +import logging + +from mediagoblin import mg_globals + +_log = logging.getLogger(__name__) + + +def handle_push_urls(request): + if mg_globals.app_config["push_urls"]: + feed_url = request.urlgen( + 'mediagoblin.user_pages.atom_feed', + qualified=True, + user=request.user.username) + hubparameters = { + 'hub.mode': 'publish', + 'hub.url': feed_url} + hubdata = urllib.urlencode(hubparameters) + hubheaders = { + "Content-type": "application/x-www-form-urlencoded", + "Connection": "close"} + for huburl in mg_globals.app_config["push_urls"]: + hubrequest = urllib2.Request(huburl, hubdata, hubheaders) + try: + hubresponse = urllib2.urlopen(hubrequest) + except urllib2.HTTPError as exc: + # This is not a big issue, the item will be fetched + # by the PuSH server next time we hit it + _log.warning( + "push url %r gave error %r", huburl, exc.code) + except urllib2.URLError as exc: + _log.warning( + "push url %r is unreachable %r", huburl, exc.reason) diff --git a/mediagoblin/submit/views.py b/mediagoblin/submit/views.py index b52fca33..6d4c8be3 100644 --- a/mediagoblin/submit/views.py +++ b/mediagoblin/submit/views.py @@ -20,8 +20,6 @@ import uuid from os.path import splitext from celery import registry -import urllib -import urllib2 import logging _log = logging.getLogger(__name__) @@ -39,6 +37,7 @@ from mediagoblin.processing.task import ProcessMedia from mediagoblin.messages import add_message, SUCCESS from mediagoblin.media_types import sniff_media, \ InvalidFileType, FileTypeNotSupported +from mediagoblin.submit.lib import handle_push_urls @require_active_login @@ -134,30 +133,7 @@ def submit_start(request): # re-raise the exception raise - if mg_globals.app_config["push_urls"]: - feed_url = request.urlgen( - 'mediagoblin.user_pages.atom_feed', - qualified=True, - user=request.user.username) - hubparameters = { - 'hub.mode': 'publish', - 'hub.url': feed_url} - hubdata = urllib.urlencode(hubparameters) - hubheaders = { - "Content-type": "application/x-www-form-urlencoded", - "Connection": "close"} - for huburl in mg_globals.app_config["push_urls"]: - hubrequest = urllib2.Request(huburl, hubdata, hubheaders) - try: - hubresponse = urllib2.urlopen(hubrequest) - except urllib2.HTTPError as exc: - # This is not a big issue, the item will be fetched - # by the PuSH server next time we hit it - _log.warning( - "push url %r gave error %r", huburl, exc.code) - except urllib2.URLError as exc: - _log.warning( - "push url %r is unreachable %r", huburl, exc.reason) + handle_push_urls(request) add_message(request, SUCCESS, _('Woohoo! Submitted!')) -- 2.25.1