Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(71)

Side by Side Diff: net/tools/testserver/testserver.py

Issue 8203005: Implement chrome.experimental.downloads.onChanged (Closed) Base URL: http://git.chromium.org/git/chromium.git@trunk
Patch Set: debug the new post handler functionality Created 8 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 #!/usr/bin/env python 1 #!/usr/bin/env python
2 # Copyright (c) 2012 The Chromium Authors. All rights reserved. 2 # Copyright (c) 2012 The Chromium Authors. All rights reserved.
3 # Use of this source code is governed by a BSD-style license that can be 3 # Use of this source code is governed by a BSD-style license that can be
4 # found in the LICENSE file. 4 # found in the LICENSE file.
5 5
6 """This is a simple HTTP/FTP/SYNC/TCP/UDP/ server used for testing Chrome. 6 """This is a simple HTTP/FTP/SYNC/TCP/UDP/ server used for testing Chrome.
7 7
8 It supports several test URLs, as specified by the handlers in TestPageHandler. 8 It supports several test URLs, as specified by the handlers in TestPageHandler.
9 By default, it listens on an ephemeral port and sends the port number back to 9 By default, it listens on an ephemeral port and sends the port number back to
10 the originating process over a pipe. The originating process can specify an 10 the originating process over a pipe. The originating process can specify an
(...skipping 890 matching lines...) Expand 10 before | Expand all | Expand 10 after
901 self.wfile.write(data) 901 self.wfile.write(data)
902 902
903 return True 903 return True
904 904
905 def FileHandler(self): 905 def FileHandler(self):
906 """This handler sends the contents of the requested file. Wow, it's like 906 """This handler sends the contents of the requested file. Wow, it's like
907 a real webserver!""" 907 a real webserver!"""
908 prefix = self.server.file_root_url 908 prefix = self.server.file_root_url
909 if not self.path.startswith(prefix): 909 if not self.path.startswith(prefix):
910 return False 910 return False
911 post_prefix = urlparse.urljoin(self.server.file_root_url, 'post/')
912 if self.path.startswith(post_prefix):
913 self.send_response(404)
914 self.send_header('Content-Length', 1)
915 self.end_headers()
916 self.wfile.write('')
917 return True
911 # Consume a request body if present. 918 # Consume a request body if present.
912 if self.command == 'POST' or self.command == 'PUT' : 919 if self.command == 'POST' or self.command == 'PUT' :
913 self.ReadRequestBody() 920 body = self.ReadRequestBody()
914 return self._FileHandlerHelper(prefix) 921 return self._FileHandlerHelper(prefix)
915 922
916 def PostOnlyFileHandler(self): 923 def PostOnlyFileHandler(self):
917 """This handler sends the contents of the requested file on a POST.""" 924 """This handler sends the contents of the requested file on a POST."""
918 prefix = urlparse.urljoin(self.server.file_root_url, 'post/') 925 prefix = urlparse.urljoin(self.server.file_root_url, 'post/')
919 if not self.path.startswith(prefix): 926 if not self.path.startswith(prefix):
920 return False 927 return False
921 self.ReadRequestBody() 928 body = self.ReadRequestBody()
929 _, _, url_path, _, query_str, _ = urlparse.urlparse(self.path)
930 if query_str == 'require_body_eq_path' and body != self.path:
931 return False
922 return self._FileHandlerHelper(prefix) 932 return self._FileHandlerHelper(prefix)
923 933
924 def _FileHandlerHelper(self, prefix): 934 def _FileHandlerHelper(self, prefix):
925 _, _, url_path, _, query, _ = urlparse.urlparse(self.path) 935 _, _, url_path, _, query, _ = urlparse.urlparse(self.path)
926 sub_path = url_path[len(prefix):] 936 sub_path = url_path[len(prefix):]
927 entries = sub_path.split('/') 937 entries = sub_path.split('/')
928 file_path = os.path.join(self.server.data_dir, *entries) 938 file_path = os.path.join(self.server.data_dir, *entries)
929 if os.path.isdir(file_path): 939 if os.path.isdir(file_path):
930 file_path = os.path.join(file_path, 'index.html') 940 file_path = os.path.join(file_path, 'index.html')
931 941
(...skipping 1073 matching lines...) Expand 10 before | Expand all | Expand 10 after
2005 'random key if none is specified on the command ' 2015 'random key if none is specified on the command '
2006 'line.') 2016 'line.')
2007 option_parser.add_option('', '--policy-user', default='user@example.com', 2017 option_parser.add_option('', '--policy-user', default='user@example.com',
2008 dest='policy_user', 2018 dest='policy_user',
2009 help='Specify the user name the server should ' 2019 help='Specify the user name the server should '
2010 'report back to the client as the user owning the ' 2020 'report back to the client as the user owning the '
2011 'token used for making the policy request.') 2021 'token used for making the policy request.')
2012 options, args = option_parser.parse_args() 2022 options, args = option_parser.parse_args()
2013 2023
2014 sys.exit(main(options, args)) 2024 sys.exit(main(options, args))
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698