)]}'
{"swift/common/middleware/formpost.py":[{"author":{"_account_id":6198,"name":"Peter Portante","email":"peter.a.portante@gmail.com","username":"peter-a-portante"},"change_message_id":"a91df53c44543ce5ec77b415e2010883b50ccc0a","unresolved":false,"context_lines":[{"line_number":332,"context_line":"                    ((\u0027Content-Type\u0027, \u0027text/plain\u0027),"},{"line_number":333,"context_line":"                     (\u0027Content-Length\u0027, str(len(body)))))"},{"line_number":334,"context_line":"                return [body]"},{"line_number":335,"context_line":"            except FormUnauthorized, err:"},{"line_number":336,"context_line":"                message \u003d \u0027FormPost: %s\u0027 % str(err).title()"},{"line_number":337,"context_line":"                return HTTPUnauthorized(body\u003dmessage)("},{"line_number":338,"context_line":"                    env, start_response)"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAAS3%2F%2FQkc%3D","line":335,"updated":"2013-10-01 12:45:56.000000000","message":"Should be using \"as\" exception syntax, like line 328 above.","commit_id":"6a4981f287c641b7f28762f97c19a626d36d0f2e"},{"author":{"_account_id":860,"name":"Donagh McCabe","email":"donagh.mccabe@gmail.com","username":"donagh-mccabe"},"change_message_id":"dc752765614426712849a028e7c3822c35129de7","unresolved":false,"context_lines":[{"line_number":332,"context_line":"                    ((\u0027Content-Type\u0027, \u0027text/plain\u0027),"},{"line_number":333,"context_line":"                     (\u0027Content-Length\u0027, str(len(body)))))"},{"line_number":334,"context_line":"                return [body]"},{"line_number":335,"context_line":"            except FormUnauthorized, err:"},{"line_number":336,"context_line":"                message \u003d \u0027FormPost: %s\u0027 % str(err).title()"},{"line_number":337,"context_line":"                return HTTPUnauthorized(body\u003dmessage)("},{"line_number":338,"context_line":"                    env, start_response)"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAAS3%2F%2FQLM%3D","line":335,"in_reply_to":"AAAAS3%2F%2FQkc%3D","updated":"2013-10-01 14:22:58.000000000","message":"will fix","commit_id":"6a4981f287c641b7f28762f97c19a626d36d0f2e"}],"swift/common/middleware/tempauth.py":[{"author":{"_account_id":860,"name":"Donagh McCabe","email":"donagh.mccabe@gmail.com","username":"donagh-mccabe"},"change_message_id":"8909d6091e02fe07bd48160c6d5b8d4cf232c27c","unresolved":false,"context_lines":[{"line_number":443,"context_line":"        else:"},{"line_number":444,"context_line":"            return HTTPBadRequest(request\u003dreq)"},{"line_number":445,"context_line":"        if not all((account, user, key)):"},{"line_number":446,"context_line":"            self.logger.increment(\u0027token_denied\u0027)"},{"line_number":447,"context_line":"            realm \u003d account or \u0027bad-requestunknown\u0027"},{"line_number":448,"context_line":"            return HTTPUnauthorized(request\u003dreq, headers\u003d{\u0027Www-Authenticate\u0027:"},{"line_number":449,"context_line":"                                                          \u0027Swift realm\u003d\"%s\"\u0027 %"}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAATH%2F%2FVrI%3D","line":446,"updated":"2013-10-17 15:17:11.000000000","message":"Opps -- looks like I left some tracing in place (bad-requestunknown\" should be simply \"unknown\"","commit_id":"f05b1644bf08a76fc3e067c4ccdc609deb5da7ac"},{"author":{"_account_id":6198,"name":"Peter Portante","email":"peter.a.portante@gmail.com","username":"peter-a-portante"},"change_message_id":"a8c869c34275e9fb7fe7d9b864438b4502ac3bd2","unresolved":false,"context_lines":[{"line_number":157,"context_line":"                    # can deny it outright."},{"line_number":158,"context_line":"                    self.logger.increment(\u0027unauthorized\u0027)"},{"line_number":159,"context_line":"                    try:"},{"line_number":160,"context_line":"                        vrs, realm, rest \u003d split_path(env[\u0027PATH_INFO\u0027],"},{"line_number":161,"context_line":"                                                      2, 3, True)"},{"line_number":162,"context_line":"                    except ValueError:"},{"line_number":163,"context_line":"                        realm \u003d \u0027unknown\u0027"}],"source_content_type":"text/x-python","patch_set":13,"id":"AAAATH%2F%2FK2k%3D","line":160,"updated":"2013-10-22 03:45:55.000000000","message":"This looks an a lot like the www_authenticate of swob... just sayin\u0027","commit_id":"cd835bb4165880cd6f952230d9e4d2b7a572e031"},{"author":{"_account_id":860,"name":"Donagh McCabe","email":"donagh.mccabe@gmail.com","username":"donagh-mccabe"},"change_message_id":"79ceb812a0667c96f54a5ca0efa50ac8e236aab0","unresolved":false,"context_lines":[{"line_number":157,"context_line":"                    # can deny it outright."},{"line_number":158,"context_line":"                    self.logger.increment(\u0027unauthorized\u0027)"},{"line_number":159,"context_line":"                    try:"},{"line_number":160,"context_line":"                        vrs, realm, rest \u003d split_path(env[\u0027PATH_INFO\u0027],"},{"line_number":161,"context_line":"                                                      2, 3, True)"},{"line_number":162,"context_line":"                    except ValueError:"},{"line_number":163,"context_line":"                        realm \u003d \u0027unknown\u0027"}],"source_content_type":"text/x-python","patch_set":13,"id":"AAAATH%2F%2FJXo%3D","line":160,"in_reply_to":"AAAATH%2F%2FK2k%3D","updated":"2013-10-22 14:32:42.000000000","message":"It\u0027s needed here because we don\u0027t have the request object to pass to HTTPUnauthorized(). If we didn\u0027t set www-authenticate here, we would end up with realm\u003dunknown becuuse swob has no path to parse.","commit_id":"cd835bb4165880cd6f952230d9e4d2b7a572e031"}],"swift/common/middleware/tempurl.py":[{"author":{"_account_id":597,"name":"Pete Zaitcev","email":"zaitcev@kotori.zaitcev.us","username":"zaitcev"},"change_message_id":"49ad2200e466de158017bf4bc74a62f5e380a830","unresolved":false,"context_lines":[{"line_number":415,"context_line":"        :returns: 401 response as per WSGI."},{"line_number":416,"context_line":"        \"\"\""},{"line_number":417,"context_line":"        body \u003d \u0027401 Unauthorized: Temp URL invalid\\n\u0027"},{"line_number":418,"context_line":"        return HTTPUnauthorized(environ\u003denv, body\u003dbody)(env, start_response)"},{"line_number":419,"context_line":""},{"line_number":420,"context_line":"    def _clean_incoming_headers(self, env):"},{"line_number":421,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAASn%2F%2FAEI%3D","line":418,"updated":"2013-09-13 18:23:02.000000000","message":"Are you sure you do not want to keep the check for HEAD anymore? It looks to me that swob performs that check by using request.method, but in this case there\u0027s no request (which is why you added env argument) and thus the check isn\u0027t going to be performed in swob either.","commit_id":"b987685630979615e7b37318c64de5817dd5692e"},{"author":{"_account_id":6198,"name":"Peter Portante","email":"peter.a.portante@gmail.com","username":"peter-a-portante"},"change_message_id":"a91df53c44543ce5ec77b415e2010883b50ccc0a","unresolved":false,"context_lines":[{"line_number":417,"context_line":"        if env[\u0027REQUEST_METHOD\u0027] \u003d\u003d \u0027HEAD\u0027:"},{"line_number":418,"context_line":"            return HTTPUnauthorized()(env, start_response)"},{"line_number":419,"context_line":"        else:"},{"line_number":420,"context_line":"            return HTTPUnauthorized(body\u003dbody)(env, start_response)"},{"line_number":421,"context_line":""},{"line_number":422,"context_line":"    def _clean_incoming_headers(self, env):"},{"line_number":423,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAAS3%2F%2FQkE%3D","line":420,"updated":"2013-10-01 12:45:56.000000000","message":"Perhaps you might consider the following to get one return statement:\n\n  if env[\u0027REQUEST_METHOD\u0027] \u003d\u003d \u0027HEAD\u0027:\n      body \u003d None\n  else:\n      body \u003d \u0027401 Unauthorized: Temp URL invalid\\n\u0027\n  return HTTPUnauthorized(body\u003dbody)(env, start_response)","commit_id":"6a4981f287c641b7f28762f97c19a626d36d0f2e"},{"author":{"_account_id":860,"name":"Donagh McCabe","email":"donagh.mccabe@gmail.com","username":"donagh-mccabe"},"change_message_id":"dc752765614426712849a028e7c3822c35129de7","unresolved":false,"context_lines":[{"line_number":417,"context_line":"        if env[\u0027REQUEST_METHOD\u0027] \u003d\u003d \u0027HEAD\u0027:"},{"line_number":418,"context_line":"            return HTTPUnauthorized()(env, start_response)"},{"line_number":419,"context_line":"        else:"},{"line_number":420,"context_line":"            return HTTPUnauthorized(body\u003dbody)(env, start_response)"},{"line_number":421,"context_line":""},{"line_number":422,"context_line":"    def _clean_incoming_headers(self, env):"},{"line_number":423,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAAS3%2F%2FQK8%3D","line":420,"in_reply_to":"AAAAS3%2F%2FQkE%3D","updated":"2013-10-01 14:22:58.000000000","message":"will do","commit_id":"6a4981f287c641b7f28762f97c19a626d36d0f2e"}],"swift/common/swob.py":[{"author":{"_account_id":2622,"name":"Samuel Merritt","email":"spam+launchpad@andcheese.org","username":"torgomatic"},"change_message_id":"f160cbee9d25e70fc9574098218a29142e7a3aea","unresolved":false,"context_lines":[{"line_number":212,"context_line":"    if scheme \u003d\u003d \u0027http\u0027 and host.endswith(\u0027:80\u0027):"},{"line_number":213,"context_line":"        host, port \u003d host.rsplit(\u0027:\u0027, 1)"},{"line_number":214,"context_line":"    elif scheme \u003d\u003d \u0027https\u0027 and host.endswith(\u0027:443\u0027):"},{"line_number":215,"context_line":"        host, port \u003d host.rsplit(\u0027:\u0027, 1)"},{"line_number":216,"context_line":"    return \u0027%s uri\u003d%s://%s\u0027 % (relm, scheme, host)"},{"line_number":217,"context_line":""},{"line_number":218,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAASn%2F%2F8VY%3D","line":215,"updated":"2013-08-27 18:28:21.000000000","message":"All this logic seems duplicated with swob.Request\u0027s host_url property. Either make and use Request objects, or pull that logic out into a module-level helper that this guy can call, please.","commit_id":"7b12ae84bb50b37d6704205e5b3f8dc3ef189b19"},{"author":{"_account_id":6198,"name":"Peter Portante","email":"peter.a.portante@gmail.com","username":"peter-a-portante"},"change_message_id":"a91df53c44543ce5ec77b415e2010883b50ccc0a","unresolved":false,"context_lines":[{"line_number":1162,"context_line":"            # If we have a request and a valid-looking path, the realm"},{"line_number":1163,"context_line":"            # is the account."},{"line_number":1164,"context_line":"            vrs, realm, rest \u003d self.request.split_path(2, 3, True)"},{"line_number":1165,"context_line":"        except Exception:"},{"line_number":1166,"context_line":"            realm \u003d \u0027unknown\u0027"},{"line_number":1167,"context_line":"        return \u0027Swift realm\u003d\"%s\"\u0027 % realm"},{"line_number":1168,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAAS3%2F%2FQjg%3D","line":1165,"updated":"2013-10-01 12:45:56.000000000","message":"I think you only need to catch ValueError here.","commit_id":"6a4981f287c641b7f28762f97c19a626d36d0f2e"},{"author":{"_account_id":860,"name":"Donagh McCabe","email":"donagh.mccabe@gmail.com","username":"donagh-mccabe"},"change_message_id":"dc752765614426712849a028e7c3822c35129de7","unresolved":false,"context_lines":[{"line_number":1162,"context_line":"            # If we have a request and a valid-looking path, the realm"},{"line_number":1163,"context_line":"            # is the account."},{"line_number":1164,"context_line":"            vrs, realm, rest \u003d self.request.split_path(2, 3, True)"},{"line_number":1165,"context_line":"        except Exception:"},{"line_number":1166,"context_line":"            realm \u003d \u0027unknown\u0027"},{"line_number":1167,"context_line":"        return \u0027Swift realm\u003d\"%s\"\u0027 % realm"},{"line_number":1168,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAAS3%2F%2FQJA%3D","line":1165,"in_reply_to":"AAAAS3%2F%2FQjg%3D","updated":"2013-10-01 14:22:58.000000000","message":"I probably need:\n\n    except (AttributeError, ValueError):\n\nbecause self.request may be None","commit_id":"6a4981f287c641b7f28762f97c19a626d36d0f2e"},{"author":{"_account_id":330,"name":"John Dickinson","email":"me@not.mn","username":"notmyname"},"change_message_id":"613671f968f8ecf9a198f4e4284cdabc32fd4de6","unresolved":false,"context_lines":[{"line_number":1162,"context_line":"        is the account; otherwise we set it to \u0027unknown\u0027"},{"line_number":1163,"context_line":"        \"\"\""},{"line_number":1164,"context_line":"        try:"},{"line_number":1165,"context_line":"            vrs, realm, rest \u003d self.request.split_path(2, 3, True)"},{"line_number":1166,"context_line":"        except (AttributeError, ValueError):"},{"line_number":1167,"context_line":"            realm \u003d \u0027unknown\u0027"},{"line_number":1168,"context_line":"        return \u0027Swift realm\u003d\"%s\"\u0027 % realm"}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAATH%2F%2F1x0%3D","line":1165,"updated":"2013-10-09 05:48:49.000000000","message":"This doesn\u0027t always make sense. In a tempauth token request, \"vrs\" ends up being \"auth\" and realm ends up being \"v1.0\".\n\nAnd a because of the way tempauth handles a bad token (ie not passing a request object to HTTPUnauthorized), a bad token gets an \"unknown\" realm while a missing token gets the swift account as the realm.\n\nJust seems inconsistent. Is this what\u0027s intended?","commit_id":"9b6c4b84fc39e689c227d2496202bbb6904f04ab"}],"test/unit/common/test_swob.py":[{"author":{"_account_id":6198,"name":"Peter Portante","email":"peter.a.portante@gmail.com","username":"peter-a-portante"},"change_message_id":"a8c869c34275e9fb7fe7d9b864438b4502ac3bd2","unresolved":false,"context_lines":[{"line_number":518,"context_line":"        self.assertEquals(resp.status_int, 200)"},{"line_number":519,"context_line":"        self.assertEquals(resp.body, \u0027hi\u0027)"},{"line_number":520,"context_line":""},{"line_number":521,"context_line":"    def test_401_unauthorized(self):"},{"line_number":522,"context_line":"        # No request environment"},{"line_number":523,"context_line":"        resp \u003d swift.common.swob.HTTPUnauthorized()"},{"line_number":524,"context_line":"        self.assertEquals(resp.status_int, 401)"}],"source_content_type":"text/x-python","patch_set":13,"id":"AAAATH%2F%2FK2Y%3D","line":521,"updated":"2013-10-22 03:45:55.000000000","message":"Could we break this up into individual tests? We don\u0027t do this too often, but it is nice to separate test per scenario tested so that we can run a lot of different tests and not have a series of tests dropped because of earlier failed tests.","commit_id":"cd835bb4165880cd6f952230d9e4d2b7a572e031"}]}
