def post(self): """HTTP post method.""" # todo: xsrf protection user = userinfo.get_user(self.request) if not user: self.response.out.write('Not logged in.') return try: # This regex is a bit sloppy but good enough. email = utils.get_verified_arg( re.compile('[a-z0-9_+.-]+@[a-z0-9.-]+$'), self.request, 'email') desc = self.request.get('desc') except utils.InvalidValue: self.error(400) self.response.out.write('<div style="color:red">' + 'Valid email address required.</div>') return user_info = user.get_user_info() user_info.moderator_request_email = self.request.get('email') user_info.moderator_request_desc = self.request.get('desc') if not user_info.moderator_request_admin_notes: user_info.moderator_request_admin_notes = '' user_info.moderator_request_admin_notes += ( '%s: Requested.\n' % datetime.datetime.isoformat(datetime.datetime.now())) user_info.put() return self.get()
def post(self): """HTTP post method.""" # todo: xsrf protection user = userinfo.get_user(self.request) if not user: self.response.out.write("Not logged in.") return try: # This regex is a bit sloppy but good enough. email = utils.get_verified_arg(re.compile("[a-z0-9_+.-]+@[a-z0-9.-]+$"), self.request, "email") desc = self.request.get("desc") except utils.InvalidValue: self.error(400) self.response.out.write('<div style="color:red">' + "Valid email address required.</div>") return user_info = user.get_user_info() user_info.moderator_request_email = self.request.get("email") user_info.moderator_request_desc = self.request.get("desc") if not user_info.moderator_request_admin_notes: user_info.moderator_request_admin_notes = "" user_info.moderator_request_admin_notes += "%s: Requested.\n" % datetime.datetime.isoformat( datetime.datetime.now() ) user_info.put() return self.get()
def post(self): """HTTP post method.""" try: userid = utils.get_verified_arg(self.USERID_REGEX, self.request, "userid") except utils.InvalidValue: self.error(400) self.response.out.write("invalid userid, must be ^%s" % self.USERID_REGEX.pattern) return self.response.headers.add_header("Set-Cookie", "footprinttest=%s;path=/" % userid) self.response.out.write("You are logged ") if userid: self.response.out.write("in!") else: self.response.out.write("out!") self.response.out.write('<br><a href="%s">Continue</a>' % self.request.url)
def post(self): """HTTP post method.""" try: userid = utils.get_verified_arg(self.USERID_REGEX, self.request, 'userid') except utils.InvalidValue: self.error(400) self.response.out.write('invalid userid, must be ^%s' % self.USERID_REGEX.pattern) return self.response.headers.add_header('Set-Cookie', 'footprinttest=%s;path=/' % userid) self.response.out.write('You are logged ') if userid: self.response.out.write('in!') else: self.response.out.write('out!') self.response.out.write('<br><a href="%s">Continue</a>' % self.request.url)
def get(self): """HTTP get method.""" ok_pattern = re.compile('[a-z0-9_,:/-]*$') try: testType = utils.get_verified_arg(ok_pattern, self.request, 'test_type') or 'all' responseTypes = (utils.get_verified_arg(ok_pattern, self.request, 'response_types') or testapi.helpers.DEFAULT_RESPONSE_TYPES) remoteUrl = utils.get_verified_arg(ok_pattern, self.request, 'url') specialOutput = utils.get_verified_arg(ok_pattern, self.request, 'output') # cache=0: don't read from cache, else read from cache. read_from_cache = not (self.request.get('cache') == '0') except utils.InvalidValue: self.error(400) return if specialOutput == 'test_types': self.response.out.write(testapi.helpers.ALL_TEST_TYPES) return errors = '' if not remoteUrl: host = os.environ["HTTP_HOST"] if re.search(r'appspot.com', host): apiUrl = "http://" + host + "/api/volopps" errors = 'No remote url given in request, using same host: ' + apiUrl else: apiUrl = testapi.helpers.DEFAULT_TEST_URL errors = 'No remote url given in request, using default url: ' + apiUrl else: apiUrl = remoteUrl outstr = "" outstr += '<style>' outstr += 'p {font-family: Arial, sans-serif; font-size: 10pt; margin: 0;}' outstr += 'p.error {color: #880000;}' outstr += '.test {font-size: 12pt; font-weight: bold; margin-top: 12px;}' outstr += '.uri {font-size: 10pt; font-weight: normal; color: gray;' outstr += ' margin-left: 0px;}' outstr += '.result {font-size: 11pt; font-weight: normal; ' outstr += ' margin-left: 8px; margin-bottom: 4px;}' outstr += '.fail {color: #880000;}' outstr += '.success {color: #008800;}' outstr += '.amplification {color: gray; margin-left: 16px;}' outstr += '</style>' # strip whitespace outstr = re.sub(r' ', '', outstr) + "\n" if read_from_cache: outstr += '<h1>Reading test: ' + testType + ' from the datastore</h1>' else: outstr += '<h1>Running test: ' + testType + '</h1>' outstr += '<p class="error">' + errors + '</p>' outstr += '<p>Response types: ' + responseTypes + '</p>' outstr += '<p>API url: ' + apiUrl + '</p>' self.response.out.write(outstr) final_status = 200 responseTypes = responseTypes.split(',') for responseType in responseTypes: api_testing = testapi.helpers.ApiTesting(self) api_testing.run_tests(testType, apiUrl, responseType, read_from_cache) if api_testing.num_failures > 0 and final_status != 500: final_status = 500 self.response.set_status(final_status)