)]}'
{"doc/source/middleware.rst":[{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"19e128838bec7fa2be126ec9fdf2fe1ca652e122","unresolved":false,"context_lines":[{"line_number":65,"context_line":"    The roles associated with that user"},{"line_number":66,"context_line":""},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"Configuration"},{"line_number":69,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"The middleware is configured within the config file of the main application as"}],"source_content_type":"text/x-rst","patch_set":2,"id":"AAAAC3%2F%2F%2Fhk%3D","line":68,"updated":"2011-12-02 19:30:32.000000000","message":"Configuration docs are great, but apply to admins... this document should be for contributors \u0026 developers. A) The configuringservices.rst is a better place for this information, B) the admin guide is an *even better* place for all that whole document, and will need to be moved there eventually (NOT just copied).","commit_id":"49d408f8962c98752a0109ecd5b41281e5d64090"},{"author":{"_account_id":5,"name":"Ziad Sawalha","email":"ziad.sawalha@rackspace.com","username":"ziad-sawalha"},"change_message_id":"781dccd6891fc051883af73b22754fc2a056dc65","unresolved":false,"context_lines":[{"line_number":65,"context_line":"    The roles associated with that user"},{"line_number":66,"context_line":""},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"Configuration"},{"line_number":69,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"The middleware is configured within the config file of the main application as"}],"source_content_type":"text/x-rst","patch_set":2,"id":"AAAAC3%2F%2F%2Fg8%3D","line":68,"in_reply_to":"AAAAC3%2F%2F%2Fhk%3D","updated":"2011-12-02 21:53:33.000000000","message":"OK. Will move when I take on the task of updating the admin books.","commit_id":"49d408f8962c98752a0109ecd5b41281e5d64090"}],"keystone/middleware/auth_token.py":[{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"19e128838bec7fa2be126ec9fdf2fe1ca652e122","unresolved":false,"context_lines":[{"line_number":320,"context_line":"            else:"},{"line_number":321,"context_line":"                # normal memcache client"},{"line_number":322,"context_line":"                expires \u003d time.strptime(claims[\u0027expires\u0027],"},{"line_number":323,"context_line":"                                            \"%Y-%m-%dT%H:%M:%S.%f\")"},{"line_number":324,"context_line":"                delta \u003d time.mktime(expires) - time.time()"},{"line_number":325,"context_line":"                if delta \u003e 86400 or not valid:"},{"line_number":326,"context_line":"                    # Limit cache to one day (and cache bad tokens for a day)"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAC3%2F%2F%2Fhs%3D","line":323,"updated":"2011-12-02 19:30:32.000000000","message":"Time format again (see below).","commit_id":"49d408f8962c98752a0109ecd5b41281e5d64090"},{"author":{"_account_id":5,"name":"Ziad Sawalha","email":"ziad.sawalha@rackspace.com","username":"ziad-sawalha"},"change_message_id":"781dccd6891fc051883af73b22754fc2a056dc65","unresolved":false,"context_lines":[{"line_number":320,"context_line":"            else:"},{"line_number":321,"context_line":"                # normal memcache client"},{"line_number":322,"context_line":"                expires \u003d time.strptime(claims[\u0027expires\u0027],"},{"line_number":323,"context_line":"                                            \"%Y-%m-%dT%H:%M:%S.%f\")"},{"line_number":324,"context_line":"                delta \u003d time.mktime(expires) - time.time()"},{"line_number":325,"context_line":"                if delta \u003e 86400 or not valid:"},{"line_number":326,"context_line":"                    # Limit cache to one day (and cache bad tokens for a day)"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAC3%2F%2F%2Fgo%3D","line":323,"in_reply_to":"AAAAC3%2F%2F%2Fhs%3D","updated":"2011-12-02 21:53:33.000000000","message":"Done","commit_id":"49d408f8962c98752a0109ecd5b41281e5d64090"},{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"19e128838bec7fa2be126ec9fdf2fe1ca652e122","unresolved":false,"context_lines":[{"line_number":328,"context_line":"                memCache.set(key, (expires, claims, valid), time\u003dint(delta))"},{"line_number":329,"context_line":""},{"line_number":330,"context_line":"    def _cache_get(self, env, token):"},{"line_number":331,"context_line":"        \"\"\" Return a claim ande information on expiration and validity from"},{"line_number":332,"context_line":"        cache \"\"\""},{"line_number":333,"context_line":"        memCache \u003d self._cache(env)"},{"line_number":334,"context_line":"        if (memCache):"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAC3%2F%2F%2Fh8%3D","line":331,"updated":"2011-12-02 19:30:32.000000000","message":"Typo and a bit of a run-on sentence\n\nAlso, if claims is the important part, the returned tuple order is non-intuitive ;)","commit_id":"49d408f8962c98752a0109ecd5b41281e5d64090"},{"author":{"_account_id":5,"name":"Ziad Sawalha","email":"ziad.sawalha@rackspace.com","username":"ziad-sawalha"},"change_message_id":"781dccd6891fc051883af73b22754fc2a056dc65","unresolved":false,"context_lines":[{"line_number":328,"context_line":"                memCache.set(key, (expires, claims, valid), time\u003dint(delta))"},{"line_number":329,"context_line":""},{"line_number":330,"context_line":"    def _cache_get(self, env, token):"},{"line_number":331,"context_line":"        \"\"\" Return a claim ande information on expiration and validity from"},{"line_number":332,"context_line":"        cache \"\"\""},{"line_number":333,"context_line":"        memCache \u003d self._cache(env)"},{"line_number":334,"context_line":"        if (memCache):"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAC3%2F%2F%2Fgk%3D","line":331,"in_reply_to":"AAAAC3%2F%2F%2Fh8%3D","updated":"2011-12-02 21:53:33.000000000","message":"Done","commit_id":"49d408f8962c98752a0109ecd5b41281e5d64090"},{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"19e128838bec7fa2be126ec9fdf2fe1ca652e122","unresolved":false,"context_lines":[{"line_number":409,"context_line":"            if self.cache:"},{"line_number":410,"context_line":"                self._cache_put(env, claims,"},{"line_number":411,"context_line":"                                claims\u003d{\u0027expires\u0027:"},{"line_number":412,"context_line":"                                time.strftime(\"%Y-%m-%dT%H:%M:%S.%f\","},{"line_number":413,"context_line":"                                            time.gmtime())},"},{"line_number":414,"context_line":"                                valid\u003dFalse)"},{"line_number":415,"context_line":"            # Keystone rejected claim"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAC3%2F%2F%2Fhw%3D","line":412,"updated":"2011-12-02 19:30:32.000000000","message":"Time format should be a constant somewhere.","commit_id":"49d408f8962c98752a0109ecd5b41281e5d64090"},{"author":{"_account_id":5,"name":"Ziad Sawalha","email":"ziad.sawalha@rackspace.com","username":"ziad-sawalha"},"change_message_id":"781dccd6891fc051883af73b22754fc2a056dc65","unresolved":false,"context_lines":[{"line_number":409,"context_line":"            if self.cache:"},{"line_number":410,"context_line":"                self._cache_put(env, claims,"},{"line_number":411,"context_line":"                                claims\u003d{\u0027expires\u0027:"},{"line_number":412,"context_line":"                                time.strftime(\"%Y-%m-%dT%H:%M:%S.%f\","},{"line_number":413,"context_line":"                                            time.gmtime())},"},{"line_number":414,"context_line":"                                valid\u003dFalse)"},{"line_number":415,"context_line":"            # Keystone rejected claim"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAC3%2F%2F%2Fgw%3D","line":412,"in_reply_to":"AAAAC3%2F%2F%2Fhw%3D","updated":"2011-12-02 21:53:33.000000000","message":"Done","commit_id":"49d408f8962c98752a0109ecd5b41281e5d64090"},{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"19e128838bec7fa2be126ec9fdf2fe1ca652e122","unresolved":false,"context_lines":[{"line_number":444,"context_line":"            \u0027expires\u0027: token_info[\u0027access\u0027][\u0027token\u0027][\u0027expires\u0027]}"},{"line_number":445,"context_line":""},{"line_number":446,"context_line":"        expires \u003d time.strptime(verified_claims[\u0027expires\u0027],"},{"line_number":447,"context_line":"                                    \"%Y-%m-%dT%H:%M:%S.%f\")"},{"line_number":448,"context_line":"        if time.mktime(expires) \u003c\u003d time.time():"},{"line_number":449,"context_line":"            # Cache it if there is a cache available (we also cached bad"},{"line_number":450,"context_line":"            # claims)"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAC3%2F%2F%2Fh0%3D","line":447,"updated":"2011-12-02 19:30:32.000000000","message":"Time format again.","commit_id":"49d408f8962c98752a0109ecd5b41281e5d64090"},{"author":{"_account_id":5,"name":"Ziad Sawalha","email":"ziad.sawalha@rackspace.com","username":"ziad-sawalha"},"change_message_id":"781dccd6891fc051883af73b22754fc2a056dc65","unresolved":false,"context_lines":[{"line_number":444,"context_line":"            \u0027expires\u0027: token_info[\u0027access\u0027][\u0027token\u0027][\u0027expires\u0027]}"},{"line_number":445,"context_line":""},{"line_number":446,"context_line":"        expires \u003d time.strptime(verified_claims[\u0027expires\u0027],"},{"line_number":447,"context_line":"                                    \"%Y-%m-%dT%H:%M:%S.%f\")"},{"line_number":448,"context_line":"        if time.mktime(expires) \u003c\u003d time.time():"},{"line_number":449,"context_line":"            # Cache it if there is a cache available (we also cached bad"},{"line_number":450,"context_line":"            # claims)"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAC3%2F%2F%2Fgg%3D","line":447,"in_reply_to":"AAAAC3%2F%2F%2Fh0%3D","updated":"2011-12-02 21:53:33.000000000","message":"Done","commit_id":"49d408f8962c98752a0109ecd5b41281e5d64090"}]}
