1 # Copyright 2011-2012 GRNET S.A. All rights reserved.
3 # Redistribution and use in source and binary forms, with or
4 # without modification, are permitted provided that the following
7 # 1. Redistributions of source code must retain the above
8 # copyright notice, this list of conditions and the following
11 # 2. Redistributions in binary form must reproduce the above
12 # copyright notice, this list of conditions and the following
13 # disclaimer in the documentation and/or other materials
14 # provided with the distribution.
16 # THIS SOFTWARE IS PROVIDED BY GRNET S.A. ``AS IS'' AND ANY EXPRESS
17 # OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18 # WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
19 # PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL GRNET S.A OR
20 # CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
21 # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
22 # LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
23 # USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
24 # AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
25 # LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
26 # ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
27 # POSSIBILITY OF SUCH DAMAGE.
29 # The views and conclusions contained in the software and
30 # documentation are those of the authors and should not be
31 # interpreted as representing official policies, either expressed
32 # or implied, of GRNET S.A.
36 from urlparse import urlparse
40 from django.http import HttpResponseNotFound, HttpResponseRedirect, HttpResponseBadRequest, HttpResponse
41 from django.utils.http import urlencode
42 from django.views.decorators.csrf import csrf_exempt
44 from pithos.api.settings import AUTHENTICATION_URL, AUTHENTICATION_USERS, SERVICE_TOKEN
47 logger = logging.getLogger(__name__)
49 def delegate_to_login_service(request):
50 url = AUTHENTICATION_URL
51 users = AUTHENTICATION_USERS
53 return HttpResponseNotFound()
56 if request.is_secure():
60 params = dict([(k, v) for k, v in request.GET.items()])
61 uri = proto + p.netloc + '/login?' + urlencode(params)
62 return HttpResponseRedirect(uri)
65 def delegate_to_feedback_service(request):
66 url = AUTHENTICATION_URL
67 users = AUTHENTICATION_USERS
69 return HttpResponseNotFound()
72 if request.is_secure():
77 uri = proto + p.netloc + '/im/service/api/v2.0/feedback'
78 headers = { 'X-Auth-Token' : SERVICE_TOKEN }
79 values = dict([(k, v) for k, v in request.POST.items()])
80 data = urllib.urlencode(values)
81 req = urllib2.Request(uri, data, headers)
84 except urllib2.HTTPError, e:
85 return HttpResponse(status=e.code)
86 except urllib2.URLError, e:
87 return HttpResponseNotFound(e)