)]}'
{"OpenStack/OpenStack/Common/Http/HttpAbstractionClient.cs":[{"author":{"_account_id":8505,"name":"Sam Harwell","email":"sam@tunnelvisionlabs.com","username":"sharwell"},"change_message_id":"92c73a1a97a7563d2191ac6bb41be2e61f05778e","unresolved":false,"context_lines":[{"line_number":29,"context_line":"    public class HttpAbstractionClient : DisposableClass, IHttpAbstractionClient"},{"line_number":30,"context_line":"    {"},{"line_number":31,"context_line":"        private readonly HttpClient _client;"},{"line_number":32,"context_line":"        //private readonly ProgressMessageHandler _handler;"},{"line_number":33,"context_line":"        private CancellationToken _cancellationToken \u003d CancellationToken.None;"},{"line_number":34,"context_line":"        private static readonly TimeSpan _defaultTimeout \u003d new TimeSpan(0, 5, 0);"},{"line_number":35,"context_line":""}],"source_content_type":"text/x-csharp","patch_set":1,"id":"AAAAW3%2F%2FvSo%3D","line":32,"updated":"2014-04-10 18:21:13.000000000","message":"Why was this just commented out? It should either be included, or removed completely.","commit_id":"52ca59f4fa6f9eee8993870a3596b7878c4769c3"},{"author":{"_account_id":10523,"name":"Wayne Foley","email":"wayne.foley@hp.com","username":"wfoley"},"change_message_id":"e961c656b6370d08e3a302b12d81c08be2826f42","unresolved":false,"context_lines":[{"line_number":29,"context_line":"    public class HttpAbstractionClient : DisposableClass, IHttpAbstractionClient"},{"line_number":30,"context_line":"    {"},{"line_number":31,"context_line":"        private readonly HttpClient _client;"},{"line_number":32,"context_line":"        //private readonly ProgressMessageHandler _handler;"},{"line_number":33,"context_line":"        private CancellationToken _cancellationToken \u003d CancellationToken.None;"},{"line_number":34,"context_line":"        private static readonly TimeSpan _defaultTimeout \u003d new TimeSpan(0, 5, 0);"},{"line_number":35,"context_line":""}],"source_content_type":"text/x-csharp","patch_set":1,"id":"AAAAW3%2F%2FvFE%3D","line":32,"in_reply_to":"AAAAW3%2F%2FvSo%3D","updated":"2014-04-10 18:45:43.000000000","message":"Currently the ProgressMessageHandler is not supported in the PCL (even with the BCL bits). So I commented it out. I will actually delete the lines (an oversite on my part).","commit_id":"52ca59f4fa6f9eee8993870a3596b7878c4769c3"}],"OpenStack/OpenStack/Common/ObjectExtentions.cs":[{"author":{"_account_id":8505,"name":"Sam Harwell","email":"sam@tunnelvisionlabs.com","username":"sharwell"},"change_message_id":"92c73a1a97a7563d2191ac6bb41be2e61f05778e","unresolved":false,"context_lines":[{"line_number":111,"context_line":"        /// \u003c/summary\u003e"},{"line_number":112,"context_line":"        /// \u003cparam name\u003d\"password\"\u003eThe string to convert.\u003c/param\u003e"},{"line_number":113,"context_line":"        /// \u003creturns\u003eThe converted SecureString object.\u003c/returns\u003e"},{"line_number":114,"context_line":"        //public static SecureString ConvertToSecureString(this string password)"},{"line_number":115,"context_line":"        //{"},{"line_number":116,"context_line":"        //    if (password \u003d\u003d null)"},{"line_number":117,"context_line":"        //    {"}],"source_content_type":"text/x-csharp","patch_set":1,"id":"AAAAW3%2F%2FvRo%3D","line":114,"updated":"2014-04-10 18:21:13.000000000","message":"This method should be removed completely.","commit_id":"52ca59f4fa6f9eee8993870a3596b7878c4769c3"},{"author":{"_account_id":10523,"name":"Wayne Foley","email":"wayne.foley@hp.com","username":"wfoley"},"change_message_id":"e961c656b6370d08e3a302b12d81c08be2826f42","unresolved":false,"context_lines":[{"line_number":111,"context_line":"        /// \u003c/summary\u003e"},{"line_number":112,"context_line":"        /// \u003cparam name\u003d\"password\"\u003eThe string to convert.\u003c/param\u003e"},{"line_number":113,"context_line":"        /// \u003creturns\u003eThe converted SecureString object.\u003c/returns\u003e"},{"line_number":114,"context_line":"        //public static SecureString ConvertToSecureString(this string password)"},{"line_number":115,"context_line":"        //{"},{"line_number":116,"context_line":"        //    if (password \u003d\u003d null)"},{"line_number":117,"context_line":"        //    {"}],"source_content_type":"text/x-csharp","patch_set":1,"id":"AAAAW3%2F%2FvEw%3D","line":114,"in_reply_to":"AAAAW3%2F%2FvRo%3D","updated":"2014-04-10 18:45:43.000000000","message":"Agreed","commit_id":"52ca59f4fa6f9eee8993870a3596b7878c4769c3"},{"author":{"_account_id":8505,"name":"Sam Harwell","email":"sam@tunnelvisionlabs.com","username":"sharwell"},"change_message_id":"92c73a1a97a7563d2191ac6bb41be2e61f05778e","unresolved":false,"context_lines":[{"line_number":129,"context_line":"        /// \u003c/summary\u003e"},{"line_number":130,"context_line":"        /// \u003cparam name\u003d\"securePassword\"\u003eThe SecureString object.\u003c/param\u003e"},{"line_number":131,"context_line":"        /// \u003creturns\u003eThe plain-text version of the given SecureString.\u003c/returns\u003e"},{"line_number":132,"context_line":"        //public static string ConvertToUnsecureString(this SecureString securePassword)"},{"line_number":133,"context_line":"        //{"},{"line_number":134,"context_line":"        //    if (securePassword \u003d\u003d null)"},{"line_number":135,"context_line":"        //    {"}],"source_content_type":"text/x-csharp","patch_set":1,"id":"AAAAW3%2F%2FvRU%3D","line":132,"updated":"2014-04-10 18:21:13.000000000","message":"This method should be removed completely.","commit_id":"52ca59f4fa6f9eee8993870a3596b7878c4769c3"},{"author":{"_account_id":10523,"name":"Wayne Foley","email":"wayne.foley@hp.com","username":"wfoley"},"change_message_id":"e961c656b6370d08e3a302b12d81c08be2826f42","unresolved":false,"context_lines":[{"line_number":129,"context_line":"        /// \u003c/summary\u003e"},{"line_number":130,"context_line":"        /// \u003cparam name\u003d\"securePassword\"\u003eThe SecureString object.\u003c/param\u003e"},{"line_number":131,"context_line":"        /// \u003creturns\u003eThe plain-text version of the given SecureString.\u003c/returns\u003e"},{"line_number":132,"context_line":"        //public static string ConvertToUnsecureString(this SecureString securePassword)"},{"line_number":133,"context_line":"        //{"},{"line_number":134,"context_line":"        //    if (securePassword \u003d\u003d null)"},{"line_number":135,"context_line":"        //    {"}],"source_content_type":"text/x-csharp","patch_set":1,"id":"AAAAW3%2F%2FvEs%3D","line":132,"in_reply_to":"AAAAW3%2F%2FvRU%3D","updated":"2014-04-10 18:45:43.000000000","message":"Agreed (oversite)","commit_id":"52ca59f4fa6f9eee8993870a3596b7878c4769c3"}],"OpenStack/OpenStack/Identity/IdentityServiceClientDefinition.cs":[{"author":{"_account_id":8505,"name":"Sam Harwell","email":"sam@tunnelvisionlabs.com","username":"sharwell"},"change_message_id":"92c73a1a97a7563d2191ac6bb41be2e61f05778e","unresolved":false,"context_lines":[{"line_number":54,"context_line":"            {"},{"line_number":55,"context_line":"                //https://someidentityendpoint:35357/v2.0/tokens"},{"line_number":56,"context_line":"                var endpointSegs \u003d credential.AuthenticationEndpoint.Segments;"},{"line_number":57,"context_line":"                if (endpointSegs.Count() \u003d\u003d 3 \u0026\u0026 string.Compare(endpointSegs[1].Trim(\u0027/\u0027), \"v2.0\", StringComparison.OrdinalIgnoreCase) \u003d\u003d 0)"},{"line_number":58,"context_line":"                {"},{"line_number":59,"context_line":"                    return true;"},{"line_number":60,"context_line":"                }"}],"source_content_type":"text/x-csharp","patch_set":1,"id":"AAAAW3%2F%2FvOM%3D","line":57,"updated":"2014-04-10 18:21:13.000000000","message":"This should use StringComparison.Ordinal, per RFC 3986 §6.2.2.1 and RFC 2616 §3.2.3.","commit_id":"52ca59f4fa6f9eee8993870a3596b7878c4769c3"},{"author":{"_account_id":10523,"name":"Wayne Foley","email":"wayne.foley@hp.com","username":"wfoley"},"change_message_id":"e961c656b6370d08e3a302b12d81c08be2826f42","unresolved":false,"context_lines":[{"line_number":54,"context_line":"            {"},{"line_number":55,"context_line":"                //https://someidentityendpoint:35357/v2.0/tokens"},{"line_number":56,"context_line":"                var endpointSegs \u003d credential.AuthenticationEndpoint.Segments;"},{"line_number":57,"context_line":"                if (endpointSegs.Count() \u003d\u003d 3 \u0026\u0026 string.Compare(endpointSegs[1].Trim(\u0027/\u0027), \"v2.0\", StringComparison.OrdinalIgnoreCase) \u003d\u003d 0)"},{"line_number":58,"context_line":"                {"},{"line_number":59,"context_line":"                    return true;"},{"line_number":60,"context_line":"                }"}],"source_content_type":"text/x-csharp","patch_set":1,"id":"AAAAW3%2F%2FvEY%3D","line":57,"in_reply_to":"AAAAW3%2F%2FvOM%3D","updated":"2014-04-10 18:45:43.000000000","message":"Thx for the heads up. I will make this change.","commit_id":"52ca59f4fa6f9eee8993870a3596b7878c4769c3"}],"OpenStack/OpenStack/Identity/OpenStackRegionResolver.cs":[{"author":{"_account_id":8505,"name":"Sam Harwell","email":"sam@tunnelvisionlabs.com","username":"sharwell"},"change_message_id":"92c73a1a97a7563d2191ac6bb41be2e61f05778e","unresolved":false,"context_lines":[{"line_number":31,"context_line":""},{"line_number":32,"context_line":"            var ret \u003d string.Empty;"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"            var identService \u003d catalog.FirstOrDefault(s \u003d\u003e string.Compare(s.Name, serviceName, StringComparison.Ordinal) \u003d\u003d 0);"},{"line_number":35,"context_line":"            "},{"line_number":36,"context_line":"            if (identService \u003d\u003d null)"},{"line_number":37,"context_line":"            {"}],"source_content_type":"text/x-csharp","patch_set":1,"id":"AAAAW3%2F%2FvMk%3D","line":34,"updated":"2014-04-10 18:21:13.000000000","message":"This should probably use StringComparison.OrdinalIgnoreCase, for consistency with how Json.NET deserializes property names. OpenStack does not define whether or not service names are case-sensitive, but it\u0027s unlikely a provider would ever distinguish on case because they would then need to explain to all users what the difference between the two apparently equivalent services is.","commit_id":"52ca59f4fa6f9eee8993870a3596b7878c4769c3"},{"author":{"_account_id":10523,"name":"Wayne Foley","email":"wayne.foley@hp.com","username":"wfoley"},"change_message_id":"e961c656b6370d08e3a302b12d81c08be2826f42","unresolved":false,"context_lines":[{"line_number":31,"context_line":""},{"line_number":32,"context_line":"            var ret \u003d string.Empty;"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"            var identService \u003d catalog.FirstOrDefault(s \u003d\u003e string.Compare(s.Name, serviceName, StringComparison.Ordinal) \u003d\u003d 0);"},{"line_number":35,"context_line":"            "},{"line_number":36,"context_line":"            if (identService \u003d\u003d null)"},{"line_number":37,"context_line":"            {"}],"source_content_type":"text/x-csharp","patch_set":1,"id":"AAAAW3%2F%2FvDk%3D","line":34,"in_reply_to":"AAAAW3%2F%2FvMk%3D","updated":"2014-04-10 18:45:43.000000000","message":"Good point, I was debating on this as well, but went with this first.","commit_id":"52ca59f4fa6f9eee8993870a3596b7878c4769c3"}],"OpenStack/OpenStack/Identity/OpenStackServiceCatalog.cs":[{"author":{"_account_id":8505,"name":"Sam Harwell","email":"sam@tunnelvisionlabs.com","username":"sharwell"},"change_message_id":"92c73a1a97a7563d2191ac6bb41be2e61f05778e","unresolved":false,"context_lines":[{"line_number":34,"context_line":"        /// \u003cinheritdoc/\u003e"},{"line_number":35,"context_line":"        public bool Exists(string serviceName)"},{"line_number":36,"context_line":"        {"},{"line_number":37,"context_line":"            return this.Any(s \u003d\u003e string.Compare(s.Name, serviceName, StringComparison.Ordinal) \u003d\u003d 0);"},{"line_number":38,"context_line":"        }"},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"        /// \u003cinheritdoc/\u003e"}],"source_content_type":"text/x-csharp","patch_set":1,"id":"AAAAW3%2F%2FvME%3D","line":37,"updated":"2014-04-10 18:21:13.000000000","message":"See my comment in OpenStackRegionResolver.cs.","commit_id":"52ca59f4fa6f9eee8993870a3596b7878c4769c3"}],"OpenStack/OpenStack/Storage/StorageServiceClientDefinition.cs":[{"author":{"_account_id":8505,"name":"Sam Harwell","email":"sam@tunnelvisionlabs.com","username":"sharwell"},"change_message_id":"92c73a1a97a7563d2191ac6bb41be2e61f05778e","unresolved":false,"context_lines":[{"line_number":57,"context_line":"                return"},{"line_number":58,"context_line":"                    catalog.Any("},{"line_number":59,"context_line":"                        s \u003d\u003e"},{"line_number":60,"context_line":"                            string.Compare(s.Name, StorageServiceClient.StorageServiceName, StringComparison.Ordinal) \u003d\u003d 0 \u0026\u0026"},{"line_number":61,"context_line":"                            s.Endpoints.Any(e \u003d\u003e this.ListSupportedVersions().Contains(e.Version)));"},{"line_number":62,"context_line":"            }"},{"line_number":63,"context_line":"            return false;"}],"source_content_type":"text/x-csharp","patch_set":1,"id":"AAAAW3%2F%2FvJw%3D","line":60,"updated":"2014-04-10 18:21:13.000000000","message":"See my comment in OpenStackRegionResolver.cs","commit_id":"52ca59f4fa6f9eee8993870a3596b7878c4769c3"}],"OpenStack/OpenStack/Storage/StorageServiceRestClient.cs":[{"author":{"_account_id":8505,"name":"Sam Harwell","email":"sam@tunnelvisionlabs.com","username":"sharwell"},"change_message_id":"92c73a1a97a7563d2191ac6bb41be2e61f05778e","unresolved":false,"context_lines":[{"line_number":316,"context_line":"        internal void AddItemMetadata( IDictionary\u003cstring, string\u003e metadata, IHttpAbstractionClient client)"},{"line_number":317,"context_line":"        {"},{"line_number":318,"context_line":"             var metaHeaders \u003d metadata.Keys.ToList();"},{"line_number":319,"context_line":"            foreach (var header in metaHeaders)"},{"line_number":320,"context_line":"            {"},{"line_number":321,"context_line":"                client.Headers.Add(string.Format(\"X-Object-Meta-{0}\", header), metadata[header]);"},{"line_number":322,"context_line":"            }"}],"source_content_type":"text/x-csharp","patch_set":1,"id":"AAAAW3%2F%2FvUI%3D","line":319,"updated":"2014-04-10 18:21:13.000000000","message":"This should iterate over KeyValuePair\u003cstring, string\u003e instead of just the keys.","commit_id":"52ca59f4fa6f9eee8993870a3596b7878c4769c3"},{"author":{"_account_id":10523,"name":"Wayne Foley","email":"wayne.foley@hp.com","username":"wfoley"},"change_message_id":"e961c656b6370d08e3a302b12d81c08be2826f42","unresolved":false,"context_lines":[{"line_number":316,"context_line":"        internal void AddItemMetadata( IDictionary\u003cstring, string\u003e metadata, IHttpAbstractionClient client)"},{"line_number":317,"context_line":"        {"},{"line_number":318,"context_line":"             var metaHeaders \u003d metadata.Keys.ToList();"},{"line_number":319,"context_line":"            foreach (var header in metaHeaders)"},{"line_number":320,"context_line":"            {"},{"line_number":321,"context_line":"                client.Headers.Add(string.Format(\"X-Object-Meta-{0}\", header), metadata[header]);"},{"line_number":322,"context_line":"            }"}],"source_content_type":"text/x-csharp","patch_set":1,"id":"AAAAW3%2F%2FvAM%3D","line":319,"in_reply_to":"AAAAW3%2F%2FvUI%3D","updated":"2014-04-10 18:45:43.000000000","message":"Yeah, not sure why I did it this way... At one point I think the code was a little different, and then I was able to simply it, and guess I could have gone further.","commit_id":"52ca59f4fa6f9eee8993870a3596b7878c4769c3"}]}
