Adds oauth support up until authorization
[mediagoblin.git] / mediagoblin / tools / request.py
1 # GNU MediaGoblin -- federated, autonomous media hosting
2 # Copyright (C) 2011, 2012 MediaGoblin contributors. See AUTHORS.
3 #
4 # This program is free software: you can redistribute it and/or modify
5 # it under the terms of the GNU Affero General Public License as published by
6 # the Free Software Foundation, either version 3 of the License, or
7 # (at your option) any later version.
8 #
9 # This program is distributed in the hope that it will be useful,
10 # but WITHOUT ANY WARRANTY; without even the implied warranty of
11 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 # GNU Affero General Public License for more details.
13 #
14 # You should have received a copy of the GNU Affero General Public License
15 # along with this program. If not, see <http://www.gnu.org/licenses/>.
16
17 import json
18 import logging
19 from mediagoblin.db.models import User
20
21 _log = logging.getLogger(__name__)
22
23
24 # MIME-Types
25 form_encoded = "application/x-www-form-urlencoded"
26 json_encoded = "application/json"
27
28 def setup_user_in_request(request):
29 """
30 Examine a request and tack on a request.user parameter if that's
31 appropriate.
32 """
33 if 'user_id' not in request.session:
34 request.user = None
35 return
36
37 request.user = User.query.get(request.session['user_id'])
38
39 if not request.user:
40 # Something's wrong... this user doesn't exist? Invalidate
41 # this session.
42 _log.warn("Killing session for user id %r", request.session['user_id'])
43 request.session.delete()
44
45 def decode_request(request):
46 """ Decodes a request based on MIME-Type """
47 data = request.get_data()
48
49 if request.content_type == json_encoded:
50 data = json.loads(data)
51 elif request.content_type == form_encoded:
52 data = request.form
53 else:
54 data = ""
55 return data