)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":2537,"name":"Nikhil Komawar","email":"nik.komawar@gmail.com","username":"nikhil-komawar"},"change_message_id":"51d10fedc262bc4cc9082c334adbe2b9958b30aa","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Fixes content-type checking for image uploading in API v1 and v2"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"wsgi.Request.get_content_type() need a list or set for"},{"line_number":10,"context_line":"allowed_content_types parameter, but API controller pass request\u0027s"},{"line_number":11,"context_line":"content type string into it directly. This caused \u0027in\u0027 testing failure."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Fixes bug: 1241387"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"AAAATn%2F%2FOL0%3D","line":10,"updated":"2013-11-12 17:23:06.000000000","message":"may be you omit parameter here or can say, allowed_content_types as parameter\n\ns/pass/passes/\n\npasses request\u0027s content type as a string\n\nMay be you can omit the part \"This caused \u0027in\u0027 testing failure.\" and say that it allows content type of the form \"application/octet-st\" which should be disallowed.","commit_id":"ac6582fe8cfa8a2d816ce4ad0ef38b07595b8a96"},{"author":{"_account_id":6549,"name":"Zhi Yan Liu","email":"lzy.dev@gmail.com","username":"lzy-dev"},"change_message_id":"4b4a7faa3a14c15125921080f60c4f14bd3757aa","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Fixes content-type checking for image uploading in API v1 and v2"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"wsgi.Request.get_content_type() need a list or set for"},{"line_number":10,"context_line":"allowed_content_types parameter, but API controller pass request\u0027s"},{"line_number":11,"context_line":"content type string into it directly. This caused \u0027in\u0027 testing failure."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Fixes bug: 1241387"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"AAAATn%2F%2FOFE%3D","line":10,"in_reply_to":"AAAATn%2F%2FOL0%3D","updated":"2013-11-12 17:47:53.000000000","message":"Thanks for your English :)","commit_id":"ac6582fe8cfa8a2d816ce4ad0ef38b07595b8a96"}],"glance/api/v1/images.py":[{"author":{"_account_id":6484,"name":"Feilong Wang","email":"hustemb@gmail.com","username":"flwang"},"change_message_id":"f59e24a668a4db33b3c81aeeda5a3fd2c752cfad","unresolved":false,"context_lines":[{"line_number":525,"context_line":"            image_meta[\u0027size\u0027] \u003d image_size or image_meta[\u0027size\u0027]"},{"line_number":526,"context_line":"        else:"},{"line_number":527,"context_line":"            try:"},{"line_number":528,"context_line":"                req.get_content_type([\u0027application/octet-stream\u0027])"},{"line_number":529,"context_line":"            except exception.InvalidContentType:"},{"line_number":530,"context_line":"                upload_utils.safe_kill(req, image_meta[\u0027id\u0027])"},{"line_number":531,"context_line":"                msg \u003d _(\"Content-Type must be application/octet-stream\")"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAATn%2F%2FO8s%3D","line":528,"updated":"2013-11-12 14:22:36.000000000","message":"(nit): I saw in glance/tests/unit/common/test_wsgi.py we\u0027re using tuple, but here we\u0027re using list, so do you think we should be consistent?","commit_id":"f1386ffdc289553894691766ab85dbcb1c2de698"},{"author":{"_account_id":6549,"name":"Zhi Yan Liu","email":"lzy.dev@gmail.com","username":"lzy-dev"},"change_message_id":"83daf84eb512f7b6ee845dcd9cac5dcfbcddd4d6","unresolved":false,"context_lines":[{"line_number":525,"context_line":"            image_meta[\u0027size\u0027] \u003d image_size or image_meta[\u0027size\u0027]"},{"line_number":526,"context_line":"        else:"},{"line_number":527,"context_line":"            try:"},{"line_number":528,"context_line":"                req.get_content_type([\u0027application/octet-stream\u0027])"},{"line_number":529,"context_line":"            except exception.InvalidContentType:"},{"line_number":530,"context_line":"                upload_utils.safe_kill(req, image_meta[\u0027id\u0027])"},{"line_number":531,"context_line":"                msg \u003d _(\"Content-Type must be application/octet-stream\")"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAATn%2F%2FOUk%3D","line":528,"in_reply_to":"AAAATn%2F%2FO8s%3D","updated":"2013-11-12 16:55:52.000000000","message":"Sure thing. Actually I just try to save a chart and prevent confuse (like you asked for the comma).","commit_id":"f1386ffdc289553894691766ab85dbcb1c2de698"}],"glance/tests/unit/common/test_wsgi.py":[{"author":{"_account_id":6484,"name":"Feilong Wang","email":"hustemb@gmail.com","username":"flwang"},"change_message_id":"dd078ae664c0ed26618ee3be8d8387aff1d3e4ee","unresolved":false,"context_lines":[{"line_number":42,"context_line":"        self.assertRaises(exception.InvalidContentType,"},{"line_number":43,"context_line":"                          request.get_content_type, (\u0027application/xml\u0027,))"},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"    def test_content_type_uncompleted(self):"},{"line_number":46,"context_line":"        request \u003d wsgi.Request.blank(\u0027/tests/123\u0027)"},{"line_number":47,"context_line":"        request.headers[\"Content-Type\"] \u003d \"application/octet-st\""},{"line_number":48,"context_line":"        self.assertRaises(exception.InvalidContentType,"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAATn%2F%2F2kY%3D","line":45,"updated":"2013-10-27 09:32:07.000000000","message":"Seems this case it\u0027s not necessary given above test case.","commit_id":"1ef0f9a1b2aec32706720bbbc222ca681a655a1c"},{"author":{"_account_id":6549,"name":"Zhi Yan Liu","email":"lzy.dev@gmail.com","username":"lzy-dev"},"change_message_id":"e5abae77881105df06f674dd52d43e6166d7d080","unresolved":false,"context_lines":[{"line_number":42,"context_line":"        self.assertRaises(exception.InvalidContentType,"},{"line_number":43,"context_line":"                          request.get_content_type, (\u0027application/xml\u0027,))"},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"    def test_content_type_uncompleted(self):"},{"line_number":46,"context_line":"        request \u003d wsgi.Request.blank(\u0027/tests/123\u0027)"},{"line_number":47,"context_line":"        request.headers[\"Content-Type\"] \u003d \"application/octet-st\""},{"line_number":48,"context_line":"        self.assertRaises(exception.InvalidContentType,"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAATn%2F%2FkGs%3D","line":45,"in_reply_to":"AAAATn%2F%2F1ZU%3D","updated":"2013-11-01 09:02:32.000000000","message":"\u003e\u003e\u003e \"text/html\" not in \u0027application/xml\u0027\n\nTrue\n\n\u003e\u003e\u003e \"application/octet-st\" not in \u0027application/octet-stream\u0027\n\nFalse\n\nI will going to talk this with you in irc later.","commit_id":"1ef0f9a1b2aec32706720bbbc222ca681a655a1c"},{"author":{"_account_id":6484,"name":"Feilong Wang","email":"hustemb@gmail.com","username":"flwang"},"change_message_id":"6f98c80248bddaae0de4b96999846b6d7e3300a7","unresolved":false,"context_lines":[{"line_number":42,"context_line":"        self.assertRaises(exception.InvalidContentType,"},{"line_number":43,"context_line":"                          request.get_content_type, (\u0027application/xml\u0027,))"},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"    def test_content_type_uncompleted(self):"},{"line_number":46,"context_line":"        request \u003d wsgi.Request.blank(\u0027/tests/123\u0027)"},{"line_number":47,"context_line":"        request.headers[\"Content-Type\"] \u003d \"application/octet-st\""},{"line_number":48,"context_line":"        self.assertRaises(exception.InvalidContentType,"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAATn%2F%2F1ZU%3D","line":45,"in_reply_to":"AAAATn%2F%2F2j8%3D","updated":"2013-10-28 09:06:47.000000000","message":"Actually, you\u0027re determining if a string is in a listIn other words, the \u0027not in\u0027 in line https://github.com/openstack/glance/blob/master/glance/common/wsgi.py#L513 is determining if the content type extracted from request is in the given allowed list. It\u0027s not a simple string comparison.","commit_id":"1ef0f9a1b2aec32706720bbbc222ca681a655a1c"},{"author":{"_account_id":6549,"name":"Zhi Yan Liu","email":"lzy.dev@gmail.com","username":"lzy-dev"},"change_message_id":"5f039c206603422b99a599989a8f017ff15fb091","unresolved":false,"context_lines":[{"line_number":42,"context_line":"        self.assertRaises(exception.InvalidContentType,"},{"line_number":43,"context_line":"                          request.get_content_type, (\u0027application/xml\u0027,))"},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"    def test_content_type_uncompleted(self):"},{"line_number":46,"context_line":"        request \u003d wsgi.Request.blank(\u0027/tests/123\u0027)"},{"line_number":47,"context_line":"        request.headers[\"Content-Type\"] \u003d \"application/octet-st\""},{"line_number":48,"context_line":"        self.assertRaises(exception.InvalidContentType,"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAATn%2F%2F2j8%3D","line":45,"in_reply_to":"AAAATn%2F%2F2kY%3D","updated":"2013-10-27 09:44:05.000000000","message":"I don\u0027t think so since in above test case, the given content-type string is different from begin position (\u0027text\u0027 vs \u0027application\u0027), but in this case (this bug catches) the given content-type is being part of required content-type string, says \"application/octet-steam\u0027 contains \u0027application/octet-st\u0027.","commit_id":"1ef0f9a1b2aec32706720bbbc222ca681a655a1c"},{"author":{"_account_id":6484,"name":"Feilong Wang","email":"hustemb@gmail.com","username":"flwang"},"change_message_id":"f59e24a668a4db33b3c81aeeda5a3fd2c752cfad","unresolved":false,"context_lines":[{"line_number":34,"context_line":"    def test_content_type_missing(self):"},{"line_number":35,"context_line":"        request \u003d wsgi.Request.blank(\u0027/tests/123\u0027)"},{"line_number":36,"context_line":"        self.assertRaises(exception.InvalidContentType,"},{"line_number":37,"context_line":"                          request.get_content_type, (\u0027application/xml\u0027,))"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"    def test_content_type_unsupported(self):"},{"line_number":40,"context_line":"        request \u003d wsgi.Request.blank(\u0027/tests/123\u0027)"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAATn%2F%2FO9I%3D","line":37,"updated":"2013-11-12 14:22:36.000000000","message":"So this comma is just used to highlight it\u0027s a tuple, right?","commit_id":"f1386ffdc289553894691766ab85dbcb1c2de698"},{"author":{"_account_id":6549,"name":"Zhi Yan Liu","email":"lzy.dev@gmail.com","username":"lzy-dev"},"change_message_id":"83daf84eb512f7b6ee845dcd9cac5dcfbcddd4d6","unresolved":false,"context_lines":[{"line_number":34,"context_line":"    def test_content_type_missing(self):"},{"line_number":35,"context_line":"        request \u003d wsgi.Request.blank(\u0027/tests/123\u0027)"},{"line_number":36,"context_line":"        self.assertRaises(exception.InvalidContentType,"},{"line_number":37,"context_line":"                          request.get_content_type, (\u0027application/xml\u0027,))"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"    def test_content_type_unsupported(self):"},{"line_number":40,"context_line":"        request \u003d wsgi.Request.blank(\u0027/tests/123\u0027)"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAATn%2F%2FOVY%3D","line":37,"in_reply_to":"AAAATn%2F%2FO9I%3D","updated":"2013-11-12 16:55:52.000000000","message":"Correct.","commit_id":"f1386ffdc289553894691766ab85dbcb1c2de698"},{"author":{"_account_id":6484,"name":"Feilong Wang","email":"hustemb@gmail.com","username":"flwang"},"change_message_id":"a9c89e900b7a0fbcdfe0813c20d6c833aa02bdd6","unresolved":false,"context_lines":[{"line_number":34,"context_line":"    def test_content_type_missing(self):"},{"line_number":35,"context_line":"        request \u003d wsgi.Request.blank(\u0027/tests/123\u0027)"},{"line_number":36,"context_line":"        self.assertRaises(exception.InvalidContentType,"},{"line_number":37,"context_line":"                          request.get_content_type, (\u0027application/xml\u0027,))"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"    def test_content_type_unsupported(self):"},{"line_number":40,"context_line":"        request \u003d wsgi.Request.blank(\u0027/tests/123\u0027)"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAATn%2F%2FKms%3D","line":37,"updated":"2013-11-13 14:02:15.000000000","message":"Do we really need this change? Given it\u0027s doing correctly. But this isn\u0027t blocker.","commit_id":"b316059835798875403b4e60fddad8e2976c0b28"}]}
