Add basic upload image capabilities
This commit is contained in:
parent
c894b4246a
commit
d4a21d7e74
@ -404,7 +404,7 @@ def oauth_required(controller):
|
||||
valid, r = resource_endpoint.validate_protected_resource_request(
|
||||
uri=request.url,
|
||||
http_method=request.method,
|
||||
body=request.get_data(),
|
||||
body=request.data,
|
||||
headers=dict(request.headers),
|
||||
)
|
||||
|
||||
|
@ -36,6 +36,12 @@ add_route(
|
||||
"mediagoblin.federation.views:feed"
|
||||
)
|
||||
|
||||
add_route(
|
||||
"mediagoblin.federation.user.uploads",
|
||||
"/api/user/<string:username>/uploads",
|
||||
"mediagoblin.federation.views:uploads"
|
||||
)
|
||||
|
||||
add_route(
|
||||
"mediagoblin.federation.inbox",
|
||||
"/api/user/<string:username>/inbox",
|
||||
|
@ -1,9 +1,16 @@
|
||||
import json
|
||||
import io
|
||||
|
||||
from werkzeug.datastructures import FileStorage
|
||||
|
||||
from mediagoblin.media_types import sniff_media
|
||||
from mediagoblin.decorators import oauth_required
|
||||
from mediagoblin.db.models import User, MediaEntry, MediaComment
|
||||
from mediagoblin.tools.response import redirect, json_response
|
||||
from mediagoblin.meddleware.csrf import csrf_exempt
|
||||
from mediagoblin.notifications import add_comment_subscription
|
||||
from mediagoblin.submit.lib import (new_upload_entry, prepare_queue_task,
|
||||
run_process_media)
|
||||
|
||||
#@oauth_required
|
||||
def profile(request, raw=False):
|
||||
@ -36,11 +43,58 @@ def user(request):
|
||||
|
||||
return json_response(data)
|
||||
|
||||
#@oauth_required
|
||||
@csrf_exempt
|
||||
def uploads(request):
|
||||
""" This is the endpoint which uploads can be sent ot - /api/user/<username>/uploads """
|
||||
user = request.matchdict["username"]
|
||||
requested_user = User.query.filter_by(username=user)
|
||||
|
||||
if requested_user is None:
|
||||
error = "No such 'user' with id '{0}'".format(user)
|
||||
return json_response({"error": error}, status=404)
|
||||
|
||||
request.user = requested_user[0]
|
||||
if request.method == "POST":
|
||||
# Wrap the data in the werkzeug file wrapper
|
||||
file_data = FileStorage(
|
||||
stream=io.BytesIO(request.data),
|
||||
filename=request.form.get("qqfile", "unknown.jpg"),
|
||||
content_type=request.headers.get("Content-Type", "application/octal-stream")
|
||||
)
|
||||
|
||||
# Use the same kind of method from mediagoblin/submit/views:submit_start
|
||||
media_type, media_manager = sniff_media(file_data)
|
||||
entry = new_upload_entry(request.user)
|
||||
entry.media_type = unicode(media_type)
|
||||
entry.title = u"Hello ^_^"
|
||||
entry.description = u""
|
||||
entry.license = None
|
||||
|
||||
entry.generate_slug()
|
||||
|
||||
queue_file = prepare_queue_task(request.app, entry, file_data.filename)
|
||||
with queue_file:
|
||||
queue_file.write(request.data)
|
||||
|
||||
entry.save()
|
||||
|
||||
# run the processing
|
||||
feed_url = request.urlgen(
|
||||
'mediagoblin.user_pages.atom_feed',
|
||||
qualified=True, user=request.user.username)
|
||||
|
||||
run_process_media(entry, feed_url)
|
||||
add_comment_subscription(request.user, entry)
|
||||
|
||||
return json_response(entry.serialize(request))
|
||||
|
||||
return json_response({"error": "Not yet implemented"}, status=400)
|
||||
|
||||
@oauth_required
|
||||
@csrf_exempt
|
||||
def feed(request):
|
||||
""" Handles the user's outbox - /api/user/<username>/feed """
|
||||
print request.user
|
||||
user = request.matchdict["username"]
|
||||
requested_user = User.query.filter_by(username=user)
|
||||
|
||||
|
@ -126,7 +126,7 @@ class GMGRequest(Request):
|
||||
"""
|
||||
kwargs["uri"] = kwargs.get("uri", request.url)
|
||||
kwargs["http_method"] = kwargs.get("http_method", request.method)
|
||||
kwargs["body"] = kwargs.get("body", request.get_data())
|
||||
kwargs["body"] = kwargs.get("body", request.data)
|
||||
kwargs["headers"] = kwargs.get("headers", dict(request.headers))
|
||||
|
||||
super(GMGRequest, self).__init__(*args, **kwargs)
|
||||
|
@ -45,7 +45,7 @@ def setup_user_in_request(request):
|
||||
|
||||
def decode_request(request):
|
||||
""" Decodes a request based on MIME-Type """
|
||||
data = request.get_data()
|
||||
data = request.data
|
||||
|
||||
if request.content_type == json_encoded:
|
||||
data = json.loads(data)
|
||||
|
Loading…
x
Reference in New Issue
Block a user