)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":860,"name":"Donagh McCabe","email":"donagh.mccabe@gmail.com","username":"donagh-mccabe"},"change_message_id":"60a3b776e40bfbddc520aa707e7c4e17cb60de2e","unresolved":false,"context_lines":[{"line_number":16,"context_line":""},{"line_number":17,"context_line":"To be inline with the other form imput names, x-delete-at/after has"},{"line_number":18,"context_line":"changed to x_delete_at/after."},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"Change-Id: Ib1cc0bcf1dd7d2b689f2f26d100f9bab36880c81"},{"line_number":21,"context_line":"Closes-Bug: #1065522"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"baada198_61b20c08","line":19,"updated":"2014-07-15 17:32:18.000000000","message":"Add a line with the word \"DocImpact\" to this commit message","commit_id":"466cb3c104493d919aaf10bec64542fca140a6b7"},{"author":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"change_message_id":"982a1a7762f9aad6a34298c55303842de834b6cd","unresolved":false,"context_lines":[{"line_number":16,"context_line":""},{"line_number":17,"context_line":"To be inline with the other form imput names, x-delete-at/after has"},{"line_number":18,"context_line":"changed to x_delete_at/after."},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"Change-Id: Ib1cc0bcf1dd7d2b689f2f26d100f9bab36880c81"},{"line_number":21,"context_line":"Closes-Bug: #1065522"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"baada198_94e2e02d","line":19,"in_reply_to":"baada198_61b20c08","updated":"2014-07-16 10:00:26.000000000","message":"Done","commit_id":"466cb3c104493d919aaf10bec64542fca140a6b7"}],"swift/common/middleware/formpost.py":[{"author":{"_account_id":860,"name":"Donagh McCabe","email":"donagh.mccabe@gmail.com","username":"donagh-mccabe"},"change_message_id":"60a3b776e40bfbddc520aa707e7c4e17cb60de2e","unresolved":false,"context_lines":[{"line_number":93,"context_line":"The key is the value of the X-Account-Meta-Temp-URL-Key header on the"},{"line_number":94,"context_line":"account."},{"line_number":95,"context_line":""},{"line_number":96,"context_line":"Be certain to use the full path, from the /v1/ onward."},{"line_number":97,"context_line":""},{"line_number":98,"context_line":"The command line tool ``swift-form-signature`` may be used (mostly"},{"line_number":99,"context_line":"just when testing) to compute expires and signature."}],"source_content_type":"text/x-python","patch_set":2,"id":"baada198_e12c5caf","line":96,"updated":"2014-07-15 17:32:18.000000000","message":"Add a note that x_delete_at and x_delete_after are *not* used in the signature generation.","commit_id":"466cb3c104493d919aaf10bec64542fca140a6b7"},{"author":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"change_message_id":"982a1a7762f9aad6a34298c55303842de834b6cd","unresolved":false,"context_lines":[{"line_number":93,"context_line":"The key is the value of the X-Account-Meta-Temp-URL-Key header on the"},{"line_number":94,"context_line":"account."},{"line_number":95,"context_line":""},{"line_number":96,"context_line":"Be certain to use the full path, from the /v1/ onward."},{"line_number":97,"context_line":""},{"line_number":98,"context_line":"The command line tool ``swift-form-signature`` may be used (mostly"},{"line_number":99,"context_line":"just when testing) to compute expires and signature."}],"source_content_type":"text/x-python","patch_set":2,"id":"baada198_945d8018","line":96,"in_reply_to":"baada198_e12c5caf","updated":"2014-07-16 10:00:26.000000000","message":"Done","commit_id":"466cb3c104493d919aaf10bec64542fca140a6b7"},{"author":{"_account_id":2622,"name":"Samuel Merritt","email":"spam+launchpad@andcheese.org","username":"torgomatic"},"change_message_id":"f1486dc86ea887e5edd55f5566efc2e26bf614f0","unresolved":false,"context_lines":[{"line_number":453,"context_line":"        if \u0027x_delete_at\u0027 in attributes:"},{"line_number":454,"context_line":"            subenv[\u0027HTTP_X_DELETE_AT\u0027] \u003d int(attributes[\u0027x_delete_at\u0027])"},{"line_number":455,"context_line":"        if \u0027x_delete_after\u0027 in attributes:"},{"line_number":456,"context_line":"            subenv[\u0027HTTP_X_DELETE_AFTER\u0027] \u003d int(attributes[\u0027x_delete_after\u0027])"},{"line_number":457,"context_line":"        if \u0027content-type\u0027 in attributes:"},{"line_number":458,"context_line":"            subenv[\u0027CONTENT_TYPE\u0027] \u003d \\"},{"line_number":459,"context_line":"                attributes[\u0027content-type\u0027] or \u0027application/octet-stream\u0027"}],"source_content_type":"text/x-python","patch_set":3,"id":"baada198_7cc88a75","line":456,"updated":"2014-07-17 18:25:20.000000000","message":"This looks like unprotected int() calls on user input here; if someone types in \n\n    \u003cinput type\u003d\"hidden\" name\u003d\"x_delete_after\" value\u003d\"7 days\" /\u003e\n\nthen they\u0027ll get 500s. I think you\u0027ll need to wrap this in a try/except and translate the ValueError into a FormInvalid (probably a pair of try/excepts so you can name the form field that\u0027s bogus) so that the user gets a somewhat-helpful 400 response.","commit_id":"837f9c4a2dfae7c33a04f6b52029a532417b5a68"},{"author":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"change_message_id":"a61af999957808e09af387a853cbfce3789fe017","unresolved":false,"context_lines":[{"line_number":453,"context_line":"        if \u0027x_delete_at\u0027 in attributes:"},{"line_number":454,"context_line":"            subenv[\u0027HTTP_X_DELETE_AT\u0027] \u003d int(attributes[\u0027x_delete_at\u0027])"},{"line_number":455,"context_line":"        if \u0027x_delete_after\u0027 in attributes:"},{"line_number":456,"context_line":"            subenv[\u0027HTTP_X_DELETE_AFTER\u0027] \u003d int(attributes[\u0027x_delete_after\u0027])"},{"line_number":457,"context_line":"        if \u0027content-type\u0027 in attributes:"},{"line_number":458,"context_line":"            subenv[\u0027CONTENT_TYPE\u0027] \u003d \\"},{"line_number":459,"context_line":"                attributes[\u0027content-type\u0027] or \u0027application/octet-stream\u0027"}],"source_content_type":"text/x-python","patch_set":3,"id":"baada198_6fe35234","line":456,"in_reply_to":"baada198_7cc88a75","updated":"2014-07-18 11:27:28.000000000","message":"Done","commit_id":"837f9c4a2dfae7c33a04f6b52029a532417b5a68"}]}
