)]}'
{"keystone/common/controller.py":[{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"ec3b2f32bfa245e202c3747f1253f651364b0bda","unresolved":false,"context_lines":[{"line_number":93,"context_line":"        url \u003d endpoint + \u0027v3\u0027"},{"line_number":94,"context_line":""},{"line_number":95,"context_line":"        if path:"},{"line_number":96,"context_line":"            return url + path"},{"line_number":97,"context_line":"        else:"},{"line_number":98,"context_line":"            return url + \u0027/\u0027 + cls.collection_name"},{"line_number":99,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAM3%2F%2FDgc%3D","line":96,"updated":"2013-02-08 19:37:42.000000000","message":"does this code need to escape special characters in path? (special characters are any characters not valid in a URL.)","commit_id":"15739739419781128a9994eb28c1ab0ac0bf5e87"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"7a0d2bd7969655429302370957ba6d41bfc81731","unresolved":false,"context_lines":[{"line_number":93,"context_line":"        url \u003d endpoint + \u0027v3\u0027"},{"line_number":94,"context_line":""},{"line_number":95,"context_line":"        if path:"},{"line_number":96,"context_line":"            return url + path"},{"line_number":97,"context_line":"        else:"},{"line_number":98,"context_line":"            return url + \u0027/\u0027 + cls.collection_name"},{"line_number":99,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAM3%2F%2FDMg%3D","line":96,"in_reply_to":"AAAAM3%2F%2FDRA%3D","updated":"2013-02-09 00:07:12.000000000","message":"ok.","commit_id":"15739739419781128a9994eb28c1ab0ac0bf5e87"},{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"9a70f1114b2d28a47123c78edf6e36a44486c801","unresolved":false,"context_lines":[{"line_number":93,"context_line":"        url \u003d endpoint + \u0027v3\u0027"},{"line_number":94,"context_line":""},{"line_number":95,"context_line":"        if path:"},{"line_number":96,"context_line":"            return url + path"},{"line_number":97,"context_line":"        else:"},{"line_number":98,"context_line":"            return url + \u0027/\u0027 + cls.collection_name"},{"line_number":99,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAM3%2F%2FDRA%3D","line":96,"in_reply_to":"AAAAM3%2F%2FDSQ%3D","updated":"2013-02-08 23:02:25.000000000","message":"well, it should be a properly encoded URL in either case. however, \u0027path\u0027 will always be a string we control (either something hardcoded as a class attribute (e.g. collection_name) or an ID, which we define to be URL-friendly (and guarantee such by using UUID\u0027s).","commit_id":"15739739419781128a9994eb28c1ab0ac0bf5e87"},{"author":{"_account_id":1916,"name":"Guang Yee","email":"gyee@suse.com","username":"guang-yee"},"change_message_id":"04bc8dd7ebf737df97aaca4c75a2c9d0ff64625e","unresolved":false,"context_lines":[{"line_number":93,"context_line":"        url \u003d endpoint + \u0027v3\u0027"},{"line_number":94,"context_line":""},{"line_number":95,"context_line":"        if path:"},{"line_number":96,"context_line":"            return url + path"},{"line_number":97,"context_line":"        else:"},{"line_number":98,"context_line":"            return url + \u0027/\u0027 + cls.collection_name"},{"line_number":99,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAM3%2F%2FDSQ%3D","line":96,"in_reply_to":"AAAAM3%2F%2FDgc%3D","updated":"2013-02-08 22:48:08.000000000","message":"I think in this case, base_url is part of the HTTP response data. No escaping is needed.","commit_id":"15739739419781128a9994eb28c1ab0ac0bf5e87"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"ec3b2f32bfa245e202c3747f1253f651364b0bda","unresolved":false,"context_lines":[{"line_number":95,"context_line":"        if path:"},{"line_number":96,"context_line":"            return url + path"},{"line_number":97,"context_line":"        else:"},{"line_number":98,"context_line":"            return url + \u0027/\u0027 + cls.collection_name"},{"line_number":99,"context_line":""},{"line_number":100,"context_line":"    @classmethod"},{"line_number":101,"context_line":"    def _add_self_referential_link(cls, ref):"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAM3%2F%2FDgM%3D","line":98,"updated":"2013-02-08 19:37:42.000000000","message":"does this code need to escape special characters in collection_name?","commit_id":"15739739419781128a9994eb28c1ab0ac0bf5e87"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"ec3b2f32bfa245e202c3747f1253f651364b0bda","unresolved":false,"context_lines":[{"line_number":100,"context_line":"    @classmethod"},{"line_number":101,"context_line":"    def _add_self_referential_link(cls, ref):"},{"line_number":102,"context_line":"        ref.setdefault(\u0027links\u0027, {})"},{"line_number":103,"context_line":"        ref[\u0027links\u0027][\u0027self\u0027] \u003d cls.base_url() + \u0027/\u0027 + ref[\u0027id\u0027]"},{"line_number":104,"context_line":""},{"line_number":105,"context_line":"    @classmethod"},{"line_number":106,"context_line":"    def wrap_member(cls, context, ref):"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAM3%2F%2FDgA%3D","line":103,"updated":"2013-02-08 19:37:42.000000000","message":"escaping a url again.","commit_id":"15739739419781128a9994eb28c1ab0ac0bf5e87"}]}
