)]}'
{"swift/common/middleware/tempurl.py":[{"author":{"_account_id":866,"name":"Chmouel Boudjnah","email":"chmouel@chmouel.com","username":"chmouel"},"change_message_id":"15afd451f9fc0a5cb0451d65fedbd32b3bd95a4d","unresolved":false,"context_lines":[{"line_number":283,"context_line":"                if not already:"},{"line_number":284,"context_line":"                    headers.append(("},{"line_number":285,"context_line":"                        \u0027Content-Disposition\u0027,"},{"line_number":286,"context_line":"                        \u0027attachment; filename\u003d%s\u0027 % (json.dumps("},{"line_number":287,"context_line":"                            filename or basename(env[\u0027PATH_INFO\u0027])))))"},{"line_number":288,"context_line":"            return start_response(status, headers, exc_info)"},{"line_number":289,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAANH%2F%2F9XU%3D","line":286,"updated":"2013-03-01 15:35:14.000000000","message":"is json.dumps the new way to do quoting?","commit_id":"bc19147b9cc120d4ca6079ea97dcb6b03faa5f63"},{"author":{"_account_id":1216,"name":"gholt","email":"z-launchpad@brim.net","username":"gholt"},"change_message_id":"01ff4f52eca54277ac2cf81718c95336c0c79904","unresolved":false,"context_lines":[{"line_number":283,"context_line":"                if not already:"},{"line_number":284,"context_line":"                    headers.append(("},{"line_number":285,"context_line":"                        \u0027Content-Disposition\u0027,"},{"line_number":286,"context_line":"                        \u0027attachment; filename\u003d%s\u0027 % (json.dumps("},{"line_number":287,"context_line":"                            filename or basename(env[\u0027PATH_INFO\u0027])))))"},{"line_number":288,"context_line":"            return start_response(status, headers, exc_info)"},{"line_number":289,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAANH%2F%2F9UI%3D","line":286,"in_reply_to":"AAAANH%2F%2F9XU%3D","updated":"2013-03-01 15:49:16.000000000","message":"In this particular case, yes. Needs to be in double quotes, any embedded double quotes need to \\\" I can patch that up to do a \u0027attachment; filename\u003d\"%s\"\u0027 % (filename or basename(env[\u0027PATH_INFO\u0027])).replace(\u0027\"\u0027, \u0027\\\\\"\u0027) though. Probably \"safer\".","commit_id":"bc19147b9cc120d4ca6079ea97dcb6b03faa5f63"}],"test/unit/common/middleware/test_tempurl.py":[{"author":{"_account_id":2696,"name":"Darrell Bishop","email":"dbishop@nvidia.com","username":"darrellb"},"change_message_id":"668b81dabb19b13b2e7016c493f9eca51a01db92","unresolved":false,"context_lines":[{"line_number":539,"context_line":"            \u0027temp_url_sig\u003d%s\u0026temp_url_expires\u003dbad\u0027 % s}), (s, 0, None))"},{"line_number":540,"context_line":"        e \u003d int(time() - 1)"},{"line_number":541,"context_line":"        self.assertEquals(self.tempurl._get_temp_url_info({\u0027QUERY_STRING\u0027:"},{"line_number":542,"context_line":"            \u0027temp_url_sig\u003d%s\u0026temp_url_expires\u003d%s\u0027 % (s, e)}), (s, 0, None))"},{"line_number":543,"context_line":""},{"line_number":544,"context_line":"    def test_get_key_memcache(self):"},{"line_number":545,"context_line":"        self.app.status_headers_body_iter \u003d iter([(\u0027404 Not Found\u0027, {}, \u0027\u0027)])"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAM3%2F%2Bjd0%3D","line":542,"updated":"2013-02-27 16:22:24.000000000","message":"Not that it\u0027s lacking test coverage (test_get_valid_with_filename gets it), but it seems like a good idea to have a case here in this unit test where the \"filename\" query param is set.","commit_id":"2944bd4c1f4456d82ba2475ee78917c2eedb161b"}]}
