def create(self, request): if not request.user.is_authenticated(): return HttpResponseForbidden(_('Your must be logged in to access this service')) try: if request.get_host() != urlparse.urlparse(request.META["HTTP_REFERER"])[1]: return HttpResponseServerError(get_xml_error(_(u"Invalid request Referer")), mimetype='application/xml; charset=UTF-8') except: return HttpResponseServerError(get_xml_error(_(u"Invalid request Referer")), mimetype='application/xml; charset=UTF-8') # URI to be called if 'url' in request.POST: url = request.POST['url'] else: return HttpResponseNotFound(get_xml_error(_(u"Url not specified")), mimetype='application/xml; charset=UTF-8') # HTTP method, by default is GET method = request.POST.get('method', 'GET').upper() # Params if method != 'GET' and 'params' in request.POST: # if Content-Type is xml or json then skipping encode function. if re.search("application/(json|xml|[a-zA-Z-]+\+xml)|text/xml", request.META["CONTENT_TYPE"]) != None: params = request.POST['params'].encode('utf-8') else: try: params = urlencode(simplejson.loads(request.POST['params'])) except Exception: params = encode_query(request.POST['params']) else: params = None return self.do_request(request, url, method, params)
def create(self, request): # URI to be called if request.POST.has_key('url'): url = request.POST['url'] else: return HttpResponseNotFound( get_xml_error(_(u"Url not specified")), mimetype='application/xml; charset=UTF-8') # HTTP method, by default is GET if request.POST.has_key('method'): method = request.POST['method'] else: method = "GET" # Params if request.POST.has_key('params'): # if Content-Type is xml format then skipping encode function. if re.search( "(application|text)/xml|application/([a-zA-Z-]*)\+xml", request.META['CONTENT_TYPE']) != None: params = request.POST['params'].encode('utf-8') else: try: params = urlencode(simplejson.loads( request.POST['params'])) except Exception, e: params = encode_query(request.POST['params'])
def create(self, request): try: if request.get_host() != urlparse.urlparse(request.META["HTTP_REFERER"])[1]: return HttpResponseServerError(get_xml_error(_(u"Invalid request Referer")), mimetype='application/xml; charset=UTF-8') except: return HttpResponseServerError(get_xml_error(_(u"Invalid request Referer")), mimetype='application/xml; charset=UTF-8') # URI to be called if request.POST.has_key('url'): url = request.POST['url'] else: return HttpResponseNotFound(get_xml_error(_(u"Url not specified")), mimetype='application/xml; charset=UTF-8') # HTTP method, by default is GET if request.POST.has_key('method'): method = request.POST['method'].upper() else: method = "GET" # Params if method != 'GET' and request.POST.has_key('params'): # if Content-Type is xml or json then skipping encode function. if re.search("application/(json|xml|[a-zA-Z-]+\+xml)|text/xml", request.META["CONTENT_TYPE"]) != None: params = request.POST['params'].encode('utf-8') else: try: params = urlencode(simplejson.loads(request.POST['params'])) except Exception, e: params = encode_query(request.POST['params'])
def create(self, request): if not request.user.is_authenticated(): return HttpResponseForbidden( _('Your must be logged in to access this service')) try: if request.get_host() != urlparse.urlparse( request.META["HTTP_REFERER"])[1]: return HttpResponseServerError( get_xml_error(_(u"Invalid request Referer")), mimetype='application/xml; charset=UTF-8') except: return HttpResponseServerError( get_xml_error(_(u"Invalid request Referer")), mimetype='application/xml; charset=UTF-8') # URI to be called if 'url' in request.POST: url = request.POST['url'] else: return HttpResponseNotFound( get_xml_error(_(u"Url not specified")), mimetype='application/xml; charset=UTF-8') # HTTP method, by default is GET method = request.POST.get('method', 'GET').upper() # Params if method != 'GET' and 'params' in request.POST: # if Content-Type is xml or json then skipping encode function. if re.search("application/(json|xml|[a-zA-Z-]+\+xml)|text/xml", request.META["CONTENT_TYPE"]) != None: params = request.POST['params'].encode('utf-8') else: try: params = urlencode(simplejson.loads( request.POST['params'])) except Exception: params = encode_query(request.POST['params']) else: params = None return self.do_request(request, url, method, params)
def create(self,request): # URI to be called if request.POST.has_key('url'): url = request.POST['url'] else: return HttpResponse(string_concat(['<error>',_(u"Url not specified"),'</error>'])) # HTTP method, by default is GET if request.POST.has_key('method'): method = request.POST['method'] else: method = "GET" # Params if request.POST.has_key('params'): #params = encode_query(request.POST['params']) try: params = urlencode(simplejson.loads(request.POST['params'])) except Exception, e: params = encode_query(request.POST['params'])
def create(self, request): try: if request.get_host() != urlparse.urlparse( request.META["HTTP_REFERER"])[1]: return HttpResponseServerError( get_xml_error(_(u"Invalid request Referer")), mimetype='application/xml; charset=UTF-8') except: return HttpResponseServerError( get_xml_error(_(u"Invalid request Referer")), mimetype='application/xml; charset=UTF-8') # URI to be called if request.POST.has_key('url'): url = request.POST['url'] else: return HttpResponseNotFound( get_xml_error(_(u"Url not specified")), mimetype='application/xml; charset=UTF-8') # HTTP method, by default is GET if request.POST.has_key('method'): method = request.POST['method'].upper() else: method = "GET" # Params if method != 'GET' and request.POST.has_key('params'): # if Content-Type is xml or json then skipping encode function. if re.search("application/(json|xml|[a-zA-Z-]+\+xml)|text/xml", request.META["CONTENT_TYPE"]) != None: params = request.POST['params'].encode('utf-8') else: try: params = urlencode(simplejson.loads( request.POST['params'])) except Exception, e: params = encode_query(request.POST['params'])
def create(self, request): # URI to be called if request.POST.has_key('url'): url = request.POST['url'] else: return HttpResponseNotFound(get_xml_error(_(u"Url not specified")), mimetype='application/xml; charset=UTF-8') # HTTP method, by default is GET if request.POST.has_key('method'): method = request.POST['method'] else: method = "GET" # Params if request.POST.has_key('params'): # if Content-Type is xml format then skipping encode function. if re.search("(application|text)/xml|application/([a-zA-Z-]*)\+xml", request.META['CONTENT_TYPE']) != None: params = request.POST['params'].encode('utf-8') else: try: params = urlencode(simplejson.loads(request.POST['params'])) except Exception, e: params = encode_query(request.POST['params'])
def create(self, request): # URI to be called if request.POST.has_key('url'): url = request.POST['url'] else: return HttpResponse( string_concat(['<error>', _(u"Url not specified"), '</error>'])) # HTTP method, by default is GET if request.POST.has_key('method'): method = request.POST['method'] else: method = "GET" # Params if request.POST.has_key('params'): params = encode_query(request.POST['params']) else: params = '' # HTTP call try: # Request creation proto, host, cgi, param, query = urlparse.urlparse(url)[:5] query = encode_query(query) # Proxy support proxy = "" try: proxy = settings.PROXY_SERVER except Exception: proxy = "" conn = getConnection(proto, proxy, host) # Adds original request Headers to the request (and modifies Content-Type for Servlets) headers = {} has_content_type = False http_content_type_value = '' for header in request.META.items(): if (header[0].lower() == 'content-type'): if (header[1] != None and header[1].lower() != 'none'): has_content_type = True if (header[0].lower() == 'http_content_type'): http_content_type_value = header[1] headers[header[0]] = header[1] # Add Content-Type (Servlets bug) if ((method == 'POST' or method == 'PUT') and not has_content_type): if (http_content_type_value != ''): headers['Content-Type'] = http_content_type_value else: headers[ 'Content-Type'] = 'application/x-www-form-urlencoded' # The same with cookies cookies = '' for cookie in request.COOKIES.items(): cookies = cookies + cookie[0] + '=' + cookie[1] + '; ' headers['Cookie'] = cookies # Open the request if query != '': cgi = cgi + '?%s' % query if (proxy != ""): conn.request(method, url, params, headers) else: conn.request(method, cgi, params, headers) res = conn.getresponse() # Redirect resolution MAX_REDIRECTS = 50 index_redirects = 0 while (res.status >= 300) and (res.status < 400): if (index_redirects >= MAX_REDIRECTS): return HttpResponse( '<error>Redirect limit has been exceeded</error>') index_redirects = index_redirects + 1 url = res.getheader('Location') proto, host, cgi, param, auxquery = urlparse.urlparse(url)[:5] conn = getConnection(proto, proxy, host) auxquery = encode_query(auxquery) if query != '': query = query + "&" + auxquery else: query = auxquery if query != '': cgi = cgi + '?%s' % query if (proxy != ""): conn.request(method, url, params, headers) else: conn.request(method, cgi, params, headers) res = conn.getresponse() # Add content-type header to the response if res.getheader('content-type'): response = HttpResponse(res.read(), mimetype=res.getheader('content-type')) else: response = HttpResponse(res.read()) # Set status code to the response response.status_code = res.status # Add all the headers recieved to the response headers = res.getheaders() for header in headers: if is_valid_header(string.lower(header[0])): response[header[0]] = header[1] return response except Exception, e: return HttpResponseServerError( "<html><head><title>Error HTTP 500</title></head><body>%s</body></html>" % e, mimetype='text/html; charset=UTF-8')
if request.POST.has_key('params'): #params = encode_query(request.POST['params']) try: params = urlencode(simplejson.loads(request.POST['params'])) except Exception, e: params = encode_query(request.POST['params']) else: params = '' # HTTP call try: httplib.HTTPConnection.debuglevel = 1 # Request creation proto, host, cgi, param, query = urlparse.urlparse(url)[:5] query = encode_query(query) #manage proxies with authentication (get it from environment) if (host.startswith(('localhost','127.0.0.1'))): proxy = urllib2.ProxyHandler({})#no proxy else: proxy = urllib2.ProxyHandler()#proxies from environment opener = urllib2.build_opener(proxy) # Adds original request Headers to the request (and modifies Content-Type for Servlets) headers = {} has_content_type = False http_content_type_value = '' for header in request.META.items():
if request.POST.has_key('params'): #params = encode_query(request.POST['params']) try: params = urlencode(simplejson.loads(request.POST['params'])) except Exception, e: params = encode_query(request.POST['params']) else: params = '' # HTTP call try: httplib.HTTPConnection.debuglevel = 1 # Request creation proto, host, cgi, param, query = urlparse.urlparse(url)[:5] query = encode_query(query) #manage proxies with authentication (get it from en vironment) proxy=None for proxy_name in settings.NOT_PROXY_FOR: if host.startswith(proxy_name): proxy = urllib2.ProxyHandler({})#no proxy break if not proxy: #Host is not included in the NOT_PROXY_FOR list => proxy is needed! proxy = urllib2.ProxyHandler()#proxies from environment opener = urllib2.build_opener(proxy)
def create(self,request): # URI to be called if request.POST.has_key('url'): url = request.POST['url'] else: return HttpResponse(string_concat(['<error>',_(u"Url not specified"),'</error>'])) # HTTP method, by default is GET if request.POST.has_key('method'): method = request.POST['method'] else: method = "GET" # Params if request.POST.has_key('params'): params = encode_query(request.POST['params']) else: params = '' # HTTP call try: # Request creation proto, host, cgi, param, query = urlparse.urlparse(url)[:5] query = encode_query(query) # Proxy support proxy = "" try: proxy = settings.PROXY_SERVER except Exception: proxy = "" conn = getConnection(proto, proxy, host) # Adds original request Headers to the request (and modifies Content-Type for Servlets) headers = {} has_content_type = False http_content_type_value = '' for header in request.META.items(): if (header[0].lower() == 'content-type'): if (header[1] != None and header[1].lower() != 'none'): has_content_type = True if (header[0].lower() == 'http_content_type'): http_content_type_value = header[1] headers[header[0]] = header[1] # Add Content-Type (Servlets bug) if ((method == 'POST' or method == 'PUT') and not has_content_type): if (http_content_type_value != ''): headers['Content-Type'] = http_content_type_value else: headers['Content-Type'] = 'application/x-www-form-urlencoded' # The same with cookies cookies = '' for cookie in request.COOKIES.items(): cookies = cookies + cookie[0] + '=' + cookie[1] + '; ' headers['Cookie'] = cookies # Open the request if query != '': cgi = cgi + '?%s' % query if (proxy != ""): conn.request(method, url, params, headers) else: conn.request(method, cgi, params, headers) res = conn.getresponse() # Redirect resolution MAX_REDIRECTS = 50 index_redirects = 0 while (res.status >= 300) and (res.status < 400): if (index_redirects >= MAX_REDIRECTS): return HttpResponse('<error>Redirect limit has been exceeded</error>') index_redirects = index_redirects + 1 url = res.getheader('Location') proto, host, cgi, param, auxquery = urlparse.urlparse(url)[:5] conn = getConnection(proto, proxy, host) auxquery = encode_query(auxquery) if query != '': query = query + "&" + auxquery else: query = auxquery if query != '': cgi = cgi + '?%s' % query if (proxy != ""): conn.request(method, url, params, headers) else: conn.request(method, cgi, params, headers) res = conn.getresponse() # Add content-type header to the response if res.getheader('content-type'): response = HttpResponse (res.read(), mimetype=res.getheader('content-type')) else: response = HttpResponse (res.read()) # Set status code to the response response.status_code = res.status # Add all the headers recieved to the response headers = res.getheaders() for header in headers: if is_valid_header (string.lower(header[0])): response[header[0]] = header[1] return response except Exception, e: return HttpResponseServerError("<html><head><title>Error HTTP 500</title></head><body>%s</body></html>" % e, mimetype='text/html; charset=UTF-8')