{"action":"created","comment":{"url":"https://api.github.com/repos/Microsoft/ApplicationInsights-dotnet/pulls/comments/105270446","pull_request_review_id":26141469,"id":105270446,"diff_hunk":"@@ -0,0 +1,169 @@\n+﻿using System;\n+\n+using Microsoft.ApplicationInsights.Channel;\n+using Microsoft.ApplicationInsights.DataContracts;\n+using System.Collections.Generic;\n+\n+namespace Microsoft.ApplicationInsights.Extensibility.Metrics\n+{\n+    public class DependencyMetricExtractor : MetricExtractorTelemetryProcessorBase\n+    {\n+        private const string Version = \"1.0\";\n+\n+        private IDictionary<string, Metric> successDurationMetricsByType = null;\n+        private IDictionary<string, Metric> failureDurationMetricsByType = null;\n+\n+        private Metric successDurationMetricDefault = null;\n+        private Metric failureDurationMetricDefault = null;\n+\n+        private string[] dependencyTypes = null;\n+        private string dependenccyTypesString = String.Empty;\n+\n+        public DependencyMetricExtractor(ITelemetryProcessor nextProcessorInPipeline)\n+            :base(nextProcessorInPipeline, MetricTerms.Autocollection.Moniker.Key, MetricTerms.Autocollection.Moniker.Value)\n+        {\n+        }\n+\n+        protected override string ExtractorVersion { get { return Version; } }\n+\n+        public string DependencyTypes\n+        {\n+            get\n+            {\n+                return dependenccyTypesString;\n+            }\n+\n+            set\n+            {\n+                // This setter is not thread safe. However, we expect it to be called rarely.\n+                // Worst case: queryable config and actual list of types briefly mismatch. Nothing breaks.\n+\n+                if (value == null)\n+                {\n+                    this.dependenccyTypesString = String.Empty;\n+                    this.dependencyTypes = null;\n+                }\n+                else\n+                {\n+                    string[] depTypes = value.Split(new[] { \"|\" }, StringSplitOptions.RemoveEmptyEntries);\n+                    for (int i = 0; i < depTypes.Length; i++)\n+                    {\n+                        depTypes[i] = depTypes[i].Trim();\n+                    }\n+                    Array.Sort(depTypes);\n+\n+                    this.dependenccyTypesString = String.Join(\"|\", depTypes);\n+                    this.dependencyTypes = (depTypes.Length == 0) ? null : depTypes;\n+                }\n+\n+                InitializeExtractor(unusedConfiguration: null);\n+            }\n+        }\n+\n+        public override void InitializeExtractor(TelemetryConfiguration unusedConfiguration)\n+        {\n+            // This initializer is not thread safe. However, we expect it to be called rarely.\n+            // Worst case: metric containers briefly mismatch. Nothing breaks.\n+\n+            string[] depTypes = this.dependencyTypes;\n+\n+            if (depTypes == null || depTypes.Length == 0)\n+            {\n+                this.successDurationMetricsByType = null;\n+                this.failureDurationMetricsByType = null;\n+\n+                this.successDurationMetricDefault = MetricManager.CreateMetric(\n+                        MetricTerms.Autocollection.MetricNames.DependencyCall.Duration,\n+                        new Dictionary<string, string>() {\n+                            [MetricTerms.Autocollection.DependencyCall.PropertyName.Success] = Boolean.TrueString,\n+                        });\n+\n+                this.failureDurationMetricDefault = MetricManager.CreateMetric(\n+                        MetricTerms.Autocollection.MetricNames.DependencyCall.Duration,\n+                        new Dictionary<string, string>() {\n+                            [MetricTerms.Autocollection.DependencyCall.PropertyName.Success] = Boolean.FalseString,\n+                        });\n+            }\n+            else\n+            {\n+                var successDurationsByType = new Dictionary<string, Metric>();\n+                var failureDurationsByType = new Dictionary<string, Metric>();\n+\n+                for (int i = 0; i < depTypes.Length; i++)\n+                {\n+                    successDurationsByType[depTypes[i]] = MetricManager.CreateMetric(\n+                            MetricTerms.Autocollection.MetricNames.DependencyCall.Duration,\n+                            new Dictionary<string, string>() {\n+                                [MetricTerms.Autocollection.DependencyCall.PropertyName.Success] = Boolean.TrueString,\n+                                [MetricTerms.Autocollection.DependencyCall.PropertyName.TypeName] = depTypes[i],\n+                            });\n+\n+                    failureDurationsByType[depTypes[i]] = MetricManager.CreateMetric(\n+                            MetricTerms.Autocollection.MetricNames.DependencyCall.Duration,\n+                            new Dictionary<string, string>() {\n+                                [MetricTerms.Autocollection.DependencyCall.PropertyName.Success] = Boolean.FalseString,\n+                                [MetricTerms.Autocollection.DependencyCall.PropertyName.TypeName] = depTypes[i],\n+                            });\n+                }\n+\n+                this.successDurationMetricsByType = successDurationsByType;\n+                this.failureDurationMetricsByType = failureDurationsByType;\n+\n+                this.successDurationMetricDefault = MetricManager.CreateMetric(\n+                        MetricTerms.Autocollection.MetricNames.DependencyCall.Duration,\n+                        new Dictionary<string, string>() {\n+                            [MetricTerms.Autocollection.DependencyCall.PropertyName.Success] = Boolean.TrueString,\n+                            [MetricTerms.Autocollection.DependencyCall.PropertyName.TypeName] = MetricTerms.Autocollection.DependencyCall.TypeName.Other,\n+                        });\n+\n+                this.failureDurationMetricDefault = MetricManager.CreateMetric(\n+                        MetricTerms.Autocollection.MetricNames.DependencyCall.Duration,\n+                        new Dictionary<string, string>() {\n+                            [MetricTerms.Autocollection.DependencyCall.PropertyName.Success] = Boolean.FalseString,\n+                            [MetricTerms.Autocollection.DependencyCall.PropertyName.TypeName] = MetricTerms.Autocollection.DependencyCall.TypeName.Other,\n+                        });\n+            }\n+        }\n+\n+        public override void ExtractMetrics(ITelemetry fromItem, out bool isItemProcessed)\n+        {\n+            DependencyTelemetry dependencyCall = fromItem as DependencyTelemetry;\n+            if (dependencyCall == null)\n+            {\n+                isItemProcessed = false;\n+                return;\n+            }\n+\n+            bool isFailed = (dependencyCall.Success != null) && (dependencyCall.Success == false);\n+            Metric metric = null;\n+            string dependencyType = dependencyCall.Type;\n+\n+            IDictionary<string, Metric> durationMetricsByType = (isFailed)\n+                                                                    ? this.failureDurationMetricsByType\n+                                                                    : this.successDurationMetricsByType;\n+\n+            if (durationMetricsByType == null || dependencyType == null)\n+            {\n+                metric = (isFailed ? this.failureDurationMetricDefault : this.successDurationMetricDefault);\n+            }\n+            else\n+            {\n+                bool isKnownType = durationMetricsByType.TryGetValue(dependencyType, out metric);\n+                if (! isKnownType)\n+                {\n+                    metric = (isFailed ? this.failureDurationMetricDefault : this.successDurationMetricDefault);","path":"src/Core/Managed/Shared/Extensibility/Metrics/DependencyMetricExtractor.cs","position":154,"original_position":154,"commit_id":"be4997e6c9bde9b451f084c20bfaf838239060be","original_commit_id":"be4997e6c9bde9b451f084c20bfaf838239060be","user":{"login":"SergeyKanzhelev","id":9950081,"avatar_url":"https://avatars1.githubusercontent.com/u/9950081?v=3","gravatar_id":"","url":"https://api.github.com/users/SergeyKanzhelev","html_url":"https://github.com/SergeyKanzhelev","followers_url":"https://api.github.com/users/SergeyKanzhelev/followers","following_url":"https://api.github.com/users/SergeyKanzhelev/following{/other_user}","gists_url":"https://api.github.com/users/SergeyKanzhelev/gists{/gist_id}","starred_url":"https://api.github.com/users/SergeyKanzhelev/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/SergeyKanzhelev/subscriptions","organizations_url":"https://api.github.com/users/SergeyKanzhelev/orgs","repos_url":"https://api.github.com/users/SergeyKanzhelev/repos","events_url":"https://api.github.com/users/SergeyKanzhelev/events{/privacy}","received_events_url":"https://api.github.com/users/SergeyKanzhelev/received_events","type":"User","site_admin":false},"body":"this will not going to fly. Pre-configuring dependency types is not a good approach - we do not want this extra configuration problem for our customers","created_at":"2017-03-09T21:03:57Z","updated_at":"2017-03-09T21:08:31Z","html_url":"https://github.com/Microsoft/ApplicationInsights-dotnet/pull/444#discussion_r105270446","pull_request_url":"https://api.github.com/repos/Microsoft/ApplicationInsights-dotnet/pulls/444","_links":{"self":{"href":"https://api.github.com/repos/Microsoft/ApplicationInsights-dotnet/pulls/comments/105270446"},"html":{"href":"https://github.com/Microsoft/ApplicationInsights-dotnet/pull/444#discussion_r105270446"},"pull_request":{"href":"https://api.github.com/repos/Microsoft/ApplicationInsights-dotnet/pulls/444"}}},"pull_request":{"url":"https://api.github.com/repos/Microsoft/ApplicationInsights-dotnet/pulls/444","id":108059132,"html_url":"https://github.com/Microsoft/ApplicationInsights-dotnet/pull/444","diff_url":"https://github.com/Microsoft/ApplicationInsights-dotnet/pull/444.diff","patch_url":"https://github.com/Microsoft/ApplicationInsights-dotnet/pull/444.patch","issue_url":"https://api.github.com/repos/Microsoft/ApplicationInsights-dotnet/issues/444","number":444,"state":"open","locked":false,"title":"Introduce Metric Extractors and use them to Auto-Collect some default metrics.","user":{"login":"macrogreg","id":20691812,"avatar_url":"https://avatars0.githubusercontent.com/u/20691812?v=3","gravatar_id":"","url":"https://api.github.com/users/macrogreg","html_url":"https://github.com/macrogreg","followers_url":"https://api.github.com/users/macrogreg/followers","following_url":"https://api.github.com/users/macrogreg/following{/other_user}","gists_url":"https://api.github.com/users/macrogreg/gists{/gist_id}","starred_url":"https://api.github.com/users/macrogreg/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/macrogreg/subscriptions","organizations_url":"https://api.github.com/users/macrogreg/orgs","repos_url":"https://api.github.com/users/macrogreg/repos","events_url":"https://api.github.com/users/macrogreg/events{/privacy}","received_events_url":"https://api.github.com/users/macrogreg/received_events","type":"User","site_admin":false},"body":"","created_at":"2017-02-27T07:19:08Z","updated_at":"2017-03-09T21:08:31Z","closed_at":null,"merged_at":null,"merge_commit_sha":"d714ee2db492122d57e4979743ef4eaf35f7e24c","assignee":null,"assignees":[],"milestone":null,"commits_url":"https://api.github.com/repos/Microsoft/ApplicationInsights-dotnet/pulls/444/commits","review_comments_url":"https://api.github.com/repos/Microsoft/ApplicationInsights-dotnet/pulls/444/comments","review_comment_url":"https://api.github.com/repos/Microsoft/ApplicationInsights-dotnet/pulls/comments{/number}","comments_url":"https://api.github.com/repos/Microsoft/ApplicationInsights-dotnet/issues/444/comments","statuses_url":"https://api.github.com/repos/Microsoft/ApplicationInsights-dotnet/statuses/be4997e6c9bde9b451f084c20bfaf838239060be","head":{"label":"Microsoft:features/PreAggMetrics-AutoCollection-gregp","ref":"features/PreAggMetrics-AutoCollection-gregp","sha":"be4997e6c9bde9b451f084c20bfaf838239060be","user":{"login":"Microsoft","id":6154722,"avatar_url":"https://avatars1.githubusercontent.com/u/6154722?v=3","gravatar_id":"","url":"https://api.github.com/users/Microsoft","html_url":"https://github.com/Microsoft","followers_url":"https://api.github.com/users/Microsoft/followers","following_url":"https://api.github.com/users/Microsoft/following{/other_user}","gists_url":"https://api.github.com/users/Microsoft/gists{/gist_id}","starred_url":"https://api.github.com/users/Microsoft/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Microsoft/subscriptions","organizations_url":"https://api.github.com/users/Microsoft/orgs","repos_url":"https://api.github.com/users/Microsoft/repos","events_url":"https://api.github.com/users/Microsoft/events{/privacy}","received_events_url":"https://api.github.com/users/Microsoft/received_events","type":"Organization","site_admin":false},"repo":{"id":37284654,"name":"ApplicationInsights-dotnet","full_name":"Microsoft/ApplicationInsights-dotnet","owner":{"login":"Microsoft","id":6154722,"avatar_url":"https://avatars1.githubusercontent.com/u/6154722?v=3","gravatar_id":"","url":"https://api.github.com/users/Microsoft","html_url":"https://github.com/Microsoft","followers_url":"https://api.github.com/users/Microsoft/followers","following_url":"https://api.github.com/users/Microsoft/following{/other_user}","gists_url":"https://api.github.com/users/Microsoft/gists{/gist_id}","starred_url":"https://api.github.com/users/Microsoft/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Microsoft/subscriptions","organizations_url":"https://api.github.com/users/Microsoft/orgs","repos_url":"https://api.github.com/users/Microsoft/repos","events_url":"https://api.github.com/users/Microsoft/events{/privacy}","received_events_url":"https://api.github.com/users/Microsoft/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/Microsoft/ApplicationInsights-dotnet","description":"ApplicationInsights-dotnet","fork":false,"url":"https://api.github.com/repos/Microsoft/ApplicationInsights-dotnet","forks_url":"https://api.github.com/repos/Microsoft/ApplicationInsights-dotnet/forks","keys_url":"https://api.github.com/repos/Microsoft/ApplicationInsights-dotnet/keys{/key_id}","collaborators_url":"https://api.github.com/repos/Microsoft/ApplicationInsights-dotnet/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/Microsoft/ApplicationInsights-dotnet/teams","hooks_url":"https://api.github.com/repos/Microsoft/ApplicationInsights-dotnet/hooks","issue_events_url":"https://api.github.com/repos/Microsoft/ApplicationInsights-dotnet/issues/events{/number}","events_url":"https://api.github.com/repos/Microsoft/ApplicationInsights-dotnet/events","assignees_url":"https://api.github.com/repos/Microsoft/ApplicationInsights-dotnet/assignees{/user}","branches_url":"https://api.github.com/repos/Microsoft/ApplicationInsights-dotnet/branches{/branch}","tags_url":"https://api.github.com/repos/Microsoft/ApplicationInsights-dotnet/tags","blobs_url":"https://api.github.com/repos/Microsoft/ApplicationInsights-dotnet/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/Microsoft/ApplicationInsights-dotnet/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/Microsoft/ApplicationInsights-dotnet/git/refs{/sha}","trees_url":"https://api.github.com/repos/Microsoft/ApplicationInsights-dotnet/git/trees{/sha}","statuses_url":"https://api.github.com/repos/Microsoft/ApplicationInsights-dotnet/statuses/{sha}","languages_url":"https://api.github.com/repos/Microsoft/ApplicationInsights-dotnet/languages","stargazers_url":"https://api.github.com/repos/Microsoft/ApplicationInsights-dotnet/stargazers","contributors_url":"https://api.github.com/repos/Microsoft/ApplicationInsights-dotnet/contributors","subscribers_url":"https://api.github.com/repos/Microsoft/ApplicationInsights-dotnet/subscribers","subscription_url":"https://api.github.com/repos/Microsoft/ApplicationInsights-dotnet/subscription","commits_url":"https://api.github.com/repos/Microsoft/ApplicationInsights-dotnet/commits{/sha}","git_commits_url":"https://api.github.com/repos/Microsoft/ApplicationInsights-dotnet/git/commits{/sha}","comments_url":"https://api.github.com/repos/Microsoft/ApplicationInsights-dotnet/comments{/number}","issue_comment_url":"https://api.github.com/repos/Microsoft/ApplicationInsights-dotnet/issues/comments{/number}","contents_url":"https://api.github.com/repos/Microsoft/ApplicationInsights-dotnet/contents/{+path}","compare_url":"https://api.github.com/repos/Microsoft/ApplicationInsights-dotnet/compare/{base}...{head}","merges_url":"https://api.github.com/repos/Microsoft/ApplicationInsights-dotnet/merges","archive_url":"https://api.github.com/repos/Microsoft/ApplicationInsights-dotnet/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/Microsoft/ApplicationInsights-dotnet/downloads","issues_url":"https://api.github.com/repos/Microsoft/ApplicationInsights-dotnet/issues{/number}","pulls_url":"https://api.github.com/repos/Microsoft/ApplicationInsights-dotnet/pulls{/number}","milestones_url":"https://api.github.com/repos/Microsoft/ApplicationInsights-dotnet/milestones{/number}","notifications_url":"https://api.github.com/repos/Microsoft/ApplicationInsights-dotnet/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/Microsoft/ApplicationInsights-dotnet/labels{/name}","releases_url":"https://api.github.com/repos/Microsoft/ApplicationInsights-dotnet/releases{/id}","deployments_url":"https://api.github.com/repos/Microsoft/ApplicationInsights-dotnet/deployments","created_at":"2015-06-11T20:34:21Z","updated_at":"2017-03-06T14:34:41Z","pushed_at":"2017-03-07T09:36:36Z","git_url":"git://github.com/Microsoft/ApplicationInsights-dotnet.git","ssh_url":"git@github.com:Microsoft/ApplicationInsights-dotnet.git","clone_url":"https://github.com/Microsoft/ApplicationInsights-dotnet.git","svn_url":"https://github.com/Microsoft/ApplicationInsights-dotnet","homepage":null,"size":5946,"stargazers_count":87,"watchers_count":87,"language":"C#","has_issues":true,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":62,"mirror_url":null,"open_issues_count":27,"forks":62,"open_issues":27,"watchers":87,"default_branch":"develop"}},"base":{"label":"Microsoft:features/PreAggMetrics-AutoCollection","ref":"features/PreAggMetrics-AutoCollection","sha":"2173c627c12679aafcdf7e0e60d90cac6d59edd6","user":{"login":"Microsoft","id":6154722,"avatar_url":"https://avatars1.githubusercontent.com/u/6154722?v=3","gravatar_id":"","url":"https://api.github.com/users/Microsoft","html_url":"https://github.com/Microsoft","followers_url":"https://api.github.com/users/Microsoft/followers","following_url":"https://api.github.com/users/Microsoft/following{/other_user}","gists_url":"https://api.github.com/users/Microsoft/gists{/gist_id}","starred_url":"https://api.github.com/users/Microsoft/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Microsoft/subscriptions","organizations_url":"https://api.github.com/users/Microsoft/orgs","repos_url":"https://api.github.com/users/Microsoft/repos","events_url":"https://api.github.com/users/Microsoft/events{/privacy}","received_events_url":"https://api.github.com/users/Microsoft/received_events","type":"Organization","site_admin":false},"repo":{"id":37284654,"name":"ApplicationInsights-dotnet","full_name":"Microsoft/ApplicationInsights-dotnet","owner":{"login":"Microsoft","id":6154722,"avatar_url":"https://avatars1.githubusercontent.com/u/6154722?v=3","gravatar_id":"","url":"https://api.github.com/users/Microsoft","html_url":"https://github.com/Microsoft","followers_url":"https://api.github.com/users/Microsoft/followers","following_url":"https://api.github.com/users/Microsoft/following{/other_user}","gists_url":"https://api.github.com/users/Microsoft/gists{/gist_id}","starred_url":"https://api.github.com/users/Microsoft/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Microsoft/subscriptions","organizations_url":"https://api.github.com/users/Microsoft/orgs","repos_url":"https://api.github.com/users/Microsoft/repos","events_url":"https://api.github.com/users/Microsoft/events{/privacy}","received_events_url":"https://api.github.com/users/Microsoft/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/Microsoft/ApplicationInsights-dotnet","description":"ApplicationInsights-dotnet","fork":false,"url":"https://api.github.com/repos/Microsoft/ApplicationInsights-dotnet","forks_url":"https://api.github.com/repos/Microsoft/ApplicationInsights-dotnet/forks","keys_url":"https://api.github.com/repos/Microsoft/ApplicationInsights-dotnet/keys{/key_id}","collaborators_url":"https://api.github.com/repos/Microsoft/ApplicationInsights-dotnet/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/Microsoft/ApplicationInsights-dotnet/teams","hooks_url":"https://api.github.com/repos/Microsoft/ApplicationInsights-dotnet/hooks","issue_events_url":"https://api.github.com/repos/Microsoft/ApplicationInsights-dotnet/issues/events{/number}","events_url":"https://api.github.com/repos/Microsoft/ApplicationInsights-dotnet/events","assignees_url":"https://api.github.com/repos/Microsoft/ApplicationInsights-dotnet/assignees{/user}","branches_url":"https://api.github.com/repos/Microsoft/ApplicationInsights-dotnet/branches{/branch}","tags_url":"https://api.github.com/repos/Microsoft/ApplicationInsights-dotnet/tags","blobs_url":"https://api.github.com/repos/Microsoft/ApplicationInsights-dotnet/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/Microsoft/ApplicationInsights-dotnet/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/Microsoft/ApplicationInsights-dotnet/git/refs{/sha}","trees_url":"https://api.github.com/repos/Microsoft/ApplicationInsights-dotnet/git/trees{/sha}","statuses_url":"https://api.github.com/repos/Microsoft/ApplicationInsights-dotnet/statuses/{sha}","languages_url":"https://api.github.com/repos/Microsoft/ApplicationInsights-dotnet/languages","stargazers_url":"https://api.github.com/repos/Microsoft/ApplicationInsights-dotnet/stargazers","contributors_url":"https://api.github.com/repos/Microsoft/ApplicationInsights-dotnet/contributors","subscribers_url":"https://api.github.com/repos/Microsoft/ApplicationInsights-dotnet/subscribers","subscription_url":"https://api.github.com/repos/Microsoft/ApplicationInsights-dotnet/subscription","commits_url":"https://api.github.com/repos/Microsoft/ApplicationInsights-dotnet/commits{/sha}","git_commits_url":"https://api.github.com/repos/Microsoft/ApplicationInsights-dotnet/git/commits{/sha}","comments_url":"https://api.github.com/repos/Microsoft/ApplicationInsights-dotnet/comments{/number}","issue_comment_url":"https://api.github.com/repos/Microsoft/ApplicationInsights-dotnet/issues/comments{/number}","contents_url":"https://api.github.com/repos/Microsoft/ApplicationInsights-dotnet/contents/{+path}","compare_url":"https://api.github.com/repos/Microsoft/ApplicationInsights-dotnet/compare/{base}...{head}","merges_url":"https://api.github.com/repos/Microsoft/ApplicationInsights-dotnet/merges","archive_url":"https://api.github.com/repos/Microsoft/ApplicationInsights-dotnet/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/Microsoft/ApplicationInsights-dotnet/downloads","issues_url":"https://api.github.com/repos/Microsoft/ApplicationInsights-dotnet/issues{/number}","pulls_url":"https://api.github.com/repos/Microsoft/ApplicationInsights-dotnet/pulls{/number}","milestones_url":"https://api.github.com/repos/Microsoft/ApplicationInsights-dotnet/milestones{/number}","notifications_url":"https://api.github.com/repos/Microsoft/ApplicationInsights-dotnet/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/Microsoft/ApplicationInsights-dotnet/labels{/name}","releases_url":"https://api.github.com/repos/Microsoft/ApplicationInsights-dotnet/releases{/id}","deployments_url":"https://api.github.com/repos/Microsoft/ApplicationInsights-dotnet/deployments","created_at":"2015-06-11T20:34:21Z","updated_at":"2017-03-06T14:34:41Z","pushed_at":"2017-03-07T09:36:36Z","git_url":"git://github.com/Microsoft/ApplicationInsights-dotnet.git","ssh_url":"git@github.com:Microsoft/ApplicationInsights-dotnet.git","clone_url":"https://github.com/Microsoft/ApplicationInsights-dotnet.git","svn_url":"https://github.com/Microsoft/ApplicationInsights-dotnet","homepage":null,"size":5946,"stargazers_count":87,"watchers_count":87,"language":"C#","has_issues":true,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":62,"mirror_url":null,"open_issues_count":27,"forks":62,"open_issues":27,"watchers":87,"default_branch":"develop"}},"_links":{"self":{"href":"https://api.github.com/repos/Microsoft/ApplicationInsights-dotnet/pulls/444"},"html":{"href":"https://github.com/Microsoft/ApplicationInsights-dotnet/pull/444"},"issue":{"href":"https://api.github.com/repos/Microsoft/ApplicationInsights-dotnet/issues/444"},"comments":{"href":"https://api.github.com/repos/Microsoft/ApplicationInsights-dotnet/issues/444/comments"},"review_comments":{"href":"https://api.github.com/repos/Microsoft/ApplicationInsights-dotnet/pulls/444/comments"},"review_comment":{"href":"https://api.github.com/repos/Microsoft/ApplicationInsights-dotnet/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/Microsoft/ApplicationInsights-dotnet/pulls/444/commits"},"statuses":{"href":"https://api.github.com/repos/Microsoft/ApplicationInsights-dotnet/statuses/be4997e6c9bde9b451f084c20bfaf838239060be"}}}}
{"actor":{"display_login":"SergeyKanzhelev"}}