{"action":"created","comment":{"url":"https://api.github.com/repos/PowerShell/xNetworking/pulls/comments/40991729","id":40991729,"diff_hunk":"@@ -89,175 +212,171 @@ function Test-TargetResource\n         [String]$InterfaceAlias,\n \n         [Parameter(Mandatory)]\n-        [ValidateSet(\"IPv4\", \"IPv6\")]\n+        [ValidateSet('IPv4', 'IPv6')]\n         [String]$AddressFamily\n     )\n+    # Flag to signal whether settings are correct\n+    [Boolean] $desiredConfigurationMatch = $true\n \n-    Test-Properties @PSBoundParameters\n-}\n+    Write-Verbose -Message ( @(\"$($MyInvocation.MyCommand): \"\n+        $($LocalizedData.CheckingDefaultGatewayAddressMessage)\n+        ) -join '' )\n \n+    Test-ResourceProperty @PSBoundParameters\n \n-#######################################################################################\n-#  Helper function that validates the Gateway Address property. If the switch parameter\n-# \"Apply\" is set, then it will set the properties after a test\n-#######################################################################################\n-function Test-Properties\n-{\n-    param\n-    (\n-        [String]$Address,\n-\n-        [Parameter(Mandatory)]\n-        [ValidateNotNullOrEmpty()]\n-        [String]$InterfaceAlias,\n-\n-        [Parameter(Mandatory)]\n-        [ValidateSet(\"IPv4\", \"IPv6\")]\n-        [String]$AddressFamily,\n-\n-        [Switch]$Apply\n-    )\n-    # Validate the parameters\n-    \n-    If ($Address) {\n-        if(!([System.Net.Ipaddress]::TryParse($Address, [ref]0)))\n-             {\n-                 throw \"Address *$Address* is not in the correct format. Please correct the Address in the configuration and try again\"\n-             }\n-             if (([System.Net.IPAddress]$Address).AddressFamily.ToString() -eq [System.Net.Sockets.AddressFamily]::InterNetwork.ToString())\n-             {\n-                if ($AddressFamily -ne \"IPv4\")\n-                {\n-                    throw \"Server address $Address is in IPv4 format, which does not match server address family $AddressFamily. Please correct either of them in the configuration and try again\"\n-                }\n-             }\n-             else\n-             {\n-                if ($AddressFamily -ne \"IPv6\")\n-                {\n-                    throw \"Server address $Address is in IPv6 format, which does not match server address family $AddressFamily. Please correct either of them in the configuration and try again\"\n-                }\n-             }\n-         }\n-    try\n-    {        \n-        # Flag to signal whether settings are correct\n-        $requiresChanges = $false\n-\n-        Write-Verbose -Message \"Checking the Default Gateway Address ...\"\n-\n-        # Use $AddressFamily to select the IPv4 or IPv6 destination prefix\n-        $DestinationPrefix = \"0.0.0.0/0\"\n-        if($AddressFamily -eq \"IPv6\")\n-        {\n-            $DestinationPrefix = \"::/0\"\n-        }\n-        # Get all the default routes\n+    # Use $AddressFamily to select the IPv4 or IPv6 destination prefix\n+    $DestinationPrefix = '0.0.0.0/0'\n+    if ($AddressFamily -eq 'IPv6')\n+    {\n+        $DestinationPrefix = '::/0'\n+    }\n+    # Get all the default routes\n+    try {\n         $defaultRoutes = @(Get-NetRoute `\n             -InterfaceAlias $InterfaceAlias `\n             -AddressFamily $AddressFamily `\n             -ErrorAction Stop).Where( { $_.DestinationPrefix -eq $DestinationPrefix } )\n+    }\n+    catch\n+    {\n+        $errorId = 'DefaultRouteGetFailure'\n+        $errorCategory = [System.Management.Automation.ErrorCategory]::InvalidOperation\n+        $errorMessage = \"$($MyInvocation.MyCommand): \"\n+        $errorMessage += $($LocalizedData.DefaultGatewayGetError) -f $InterfaceAlias,$AddressFamily\n+        $errorMessage += $_.Exception.Message\n+        $exception = New-Object -TypeName System.InvalidOperationException `\n+            -ArgumentList $errorMessage\n+        $errorRecord = New-Object -TypeName System.Management.Automation.ErrorRecord `\n+            -ArgumentList $exception, $errorId, $errorCategory, $null\n \n-        # Test if the Default Gateway passed is equal to the current default gateway\n-        if($Address)\n-        {\n-            if($defaultRoutes) {\n-                if(-not $defaultRoutes.Where( { $_.NextHop -eq $Address } ))\n-                {\n-                    Write-Verbose -Message ( @(\n-                        \"Default gateway does NOT match desired state. Expected $Address, \"\n-                        \"actual $($defaultRoutes.NextHop).\"\n-                        ) -join \"\"\n-                    )\n-                    $requiresChanges = $true\n-                }\n-                else\n-                {\n-                    Write-Verbose -Message \"Default gateway is correct.\"\n-                }\n+        $PSCmdlet.ThrowTerminatingError($errorRecord)\n+    }\n+\n+    # Test if the Default Gateway passed is equal to the current default gateway\n+    if ($Address)\n+    {\n+        if ($defaultRoutes) {\n+            if (-not $defaultRoutes.Where( { $_.NextHop -eq $Address } ))\n+            {\n+                Write-Verbose -Message ( @(\"$($MyInvocation.MyCommand): \"\n+                     $($LocalizedData.DefaultGatewayNotMatchMessage) -f $Address,$defaultRoutes.NextHop\n+                    ) -join '' )\n+                $desiredConfigurationMatch = $false\n             }\n             else\n             {\n-                Write-Verbose -Message \"Default gateway does not exist. Expected $Address .\"\n-                $requiresChanges = $true\n+                Write-Verbose -Message ( @(\"$($MyInvocation.MyCommand): \"\n+                     $($LocalizedData.DefaultGatewayCorrectMessage)\n+                    ) -join '' )\n             }\n         }\n         else\n         {\n-            # Is a default gateway address set?\n-            if ($defaultRoutes)\n-            {\n-                Write-Verbose -Message \"Default gateway exists but it should not.\"\n-                $requiresChanges = $true\n-            }\n-            else\n-            {\n-                Write-Verbose -Message \"Default Gateway does not exist which is correct.\"\n-            }\n+            Write-Verbose -Message ( @(\"$($MyInvocation.MyCommand): \"\n+                $($LocalizedData.DefaultGatewayDoesNotExistMessage) -f $Address\n+                ) -join '' )\n+            $desiredConfigurationMatch = $false\n         }\n-\n-        if($requiresChanges)\n+    }\n+    else\n+    {\n+        # Is a default gateway address set?\n+        if ($defaultRoutes)\n         {\n-            # Apply is true in the case of set - target resource - in which case, it will apply the\n-            # required IP configuration\n-            if($Apply)\n-            {\n-                Write-Verbose -Message ( @(\n-                    \"At least one setting differs from the passed parameters. Applying \"\n-                    \"configuration...\"\n-                    ) -join \"\"\n-                )\n-\n-                # Remove any existing default route\n-                foreach ($defaultRoute in $defaultRoutes) {\n-                    Remove-NetRoute `\n-                        -DestinationPrefix $defaultRoute.DestinationPrefix `\n-                        -NextHop $defaultRoute.NextHop `\n-                        -InterfaceIndex $defaultRoute.InterfaceIndex `\n-                        -AddressFamily $defaultRoute.AddressFamily `\n-                        -Confirm:$false -ErrorAction Stop\n-                }\n-\n-                if ($Address)\n-                {\n-                    # Set the correct Default Route\n-                    # Build parameter hash table\n-                    $parameters = @{\n-                        DestinationPrefix = $DestinationPrefix\n-                        InterfaceAlias = $InterfaceAlias\n-                        AddressFamily = $AddressFamily\n-                        NextHop = $Address\n-                    }\n-                    New-NetRoute @Parameters\n-                }\n-\n-                Write-Verbose -Message \"Default Gateway address was set to the desired state.\"\n-                return $true\n-            }\n-            else\n-            {\n-                return $false\n-            }\n+            Write-Verbose -Message ( @(\"$($MyInvocation.MyCommand): \"\n+                $($LocalizedData.DefaultGatewayExistsButShouldNotMessage)\n+                ) -join '' )\n+            $desiredConfigurationMatch = $false\n         }\n         else\n         {\n-            Write-Verbose -Message \"Default Gateway address is in the desired state.\"\n-            return $true\n+            Write-Verbose -Message ( @(\"$($MyInvocation.MyCommand): \"\n+                $($LocalizedData.DefaultGatewayExistsAndShouldMessage)\n+                'Default Gateway does not exist which is correct.'\n+                ) -join '' )\n         }\n-\n     }\n-    catch\n+\n+    return $desiredConfigurationMatch\n+}\n+\n+#######################################################################################\n+#  Helper functions\n+#######################################################################################\n+function Test-ResourceProperty {\n+    # Function will check the Address details are valid and do not conflict with\n+    # Address family. Ensures interface exists.\n+    # If any problems are detected an exception will be thrown.\n+    [CmdletBinding()]\n+    param\n+    (\n+        [String]$Address,\n+\n+        [Parameter(Mandatory)]\n+        [ValidateNotNullOrEmpty()]\n+        [String]$InterfaceAlias,\n+\n+        [ValidateSet('IPv4', 'IPv6')]\n+        [String]$AddressFamily = 'IPv4'\n+    )\n+\n+    if (-not (Get-NetAdapter | Where-Object -Property Name -EQ $InterfaceAlias ))\n     {\n-        Write-Verbose -Message ( @(\n-            \"Can not set or find valid Default Gateway address using InterfaceAlias $InterfaceAlias and \"\n-            \"AddressFamily $AddressFamily\"\n-            ) -join \"\"\n-        )\n-        throw $_.Exception\n+        $errorId = 'InterfaceNotAvailable'\n+        $errorCategory = [System.Management.Automation.ErrorCategory]::DeviceError\n+        $errorMessage = $($LocalizedData.InterfaceNotAvailableError) -f $InterfaceAlias\n+        $exception = New-Object -TypeName System.InvalidOperationException `\n+            -ArgumentList $errorMessage\n+        $errorRecord = New-Object -TypeName System.Management.Automation.ErrorRecord `\n+            -ArgumentList $exception, $errorId, $errorCategory, $null\n+\n+        $PSCmdlet.ThrowTerminatingError($errorRecord)\n     }\n-}\n+    if ($Address)\n+    {\n+        if (-not ([System.Net.Ipaddress]::TryParse($Address, [ref]0)))","path":"DSCResources/MSFT_xDefaultGatewayAddress/MSFT_xDefaultGatewayAddress.psm1","position":472,"original_position":457,"commit_id":"8e5b4a34c1eb5065d992ab1a66b5fd2b86b845a5","original_commit_id":"e1273d65560ae4fca707decb811d1b75fe6ba990","user":{"login":"tysonjhayes","id":651851,"avatar_url":"https://avatars.githubusercontent.com/u/651851?v=3","gravatar_id":"","url":"https://api.github.com/users/tysonjhayes","html_url":"https://github.com/tysonjhayes","followers_url":"https://api.github.com/users/tysonjhayes/followers","following_url":"https://api.github.com/users/tysonjhayes/following{/other_user}","gists_url":"https://api.github.com/users/tysonjhayes/gists{/gist_id}","starred_url":"https://api.github.com/users/tysonjhayes/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/tysonjhayes/subscriptions","organizations_url":"https://api.github.com/users/tysonjhayes/orgs","repos_url":"https://api.github.com/users/tysonjhayes/repos","events_url":"https://api.github.com/users/tysonjhayes/events{/privacy}","received_events_url":"https://api.github.com/users/tysonjhayes/received_events","type":"User","site_admin":false},"body":"nit: Capitilzation should be IPAddress","created_at":"2015-10-02T04:59:34Z","updated_at":"2015-10-02T04:59:34Z","html_url":"https://github.com/PowerShell/xNetworking/pull/29#discussion_r40991729","pull_request_url":"https://api.github.com/repos/PowerShell/xNetworking/pulls/29","_links":{"self":{"href":"https://api.github.com/repos/PowerShell/xNetworking/pulls/comments/40991729"},"html":{"href":"https://github.com/PowerShell/xNetworking/pull/29#discussion_r40991729"},"pull_request":{"href":"https://api.github.com/repos/PowerShell/xNetworking/pulls/29"}}},"pull_request":{"url":"https://api.github.com/repos/PowerShell/xNetworking/pulls/29","id":46223785,"html_url":"https://github.com/PowerShell/xNetworking/pull/29","diff_url":"https://github.com/PowerShell/xNetworking/pull/29.diff","patch_url":"https://github.com/PowerShell/xNetworking/pull/29.patch","issue_url":"https://api.github.com/repos/PowerShell/xNetworking/issues/29","number":29,"state":"open","locked":false,"title":"Rearchitect xIPAddress, xDNSServerAddress and xDefaultGatewayAddress","user":{"login":"PlagueHO","id":7589164,"avatar_url":"https://avatars.githubusercontent.com/u/7589164?v=3","gravatar_id":"","url":"https://api.github.com/users/PlagueHO","html_url":"https://github.com/PlagueHO","followers_url":"https://api.github.com/users/PlagueHO/followers","following_url":"https://api.github.com/users/PlagueHO/following{/other_user}","gists_url":"https://api.github.com/users/PlagueHO/gists{/gist_id}","starred_url":"https://api.github.com/users/PlagueHO/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/PlagueHO/subscriptions","organizations_url":"https://api.github.com/users/PlagueHO/orgs","repos_url":"https://api.github.com/users/PlagueHO/repos","events_url":"https://api.github.com/users/PlagueHO/events{/privacy}","received_events_url":"https://api.github.com/users/PlagueHO/received_events","type":"User","site_admin":false},"body":"The resources were modified in the following ways:\r\n1. Test-Properties function removed and logic moved into Test-TargetResource and/or Set-TargetResource so that code to test state is not called twice. As per recommendation from @tysonjhayes in #22.\r\n2. Parameter test logic removed into Test-ResourceProperties function with additional checking for IPv6 parameters.\r\n3. Additional Pester tests added to each resource - including some IPv6 specific tests.\r\n4. \"Lightbulb\" changes suggested by ISESteroids interface.\r\n5. Attempt to mimic code style of new xFirewall resource.\r\nCode reviews gratefully accepted :)\r\n","created_at":"2015-09-29T00:16:21Z","updated_at":"2015-10-02T04:59:34Z","closed_at":null,"merged_at":null,"merge_commit_sha":"ce83d1e94aec1b21ca33df28cf029bf455feea67","assignee":null,"milestone":null,"commits_url":"https://api.github.com/repos/PowerShell/xNetworking/pulls/29/commits","review_comments_url":"https://api.github.com/repos/PowerShell/xNetworking/pulls/29/comments","review_comment_url":"https://api.github.com/repos/PowerShell/xNetworking/pulls/comments{/number}","comments_url":"https://api.github.com/repos/PowerShell/xNetworking/issues/29/comments","statuses_url":"https://api.github.com/repos/PowerShell/xNetworking/statuses/8e5b4a34c1eb5065d992ab1a66b5fd2b86b845a5","head":{"label":"PlagueHO:Rearchitect-xIPAddress-xDefaultGatewayAddress","ref":"Rearchitect-xIPAddress-xDefaultGatewayAddress","sha":"8e5b4a34c1eb5065d992ab1a66b5fd2b86b845a5","user":{"login":"PlagueHO","id":7589164,"avatar_url":"https://avatars.githubusercontent.com/u/7589164?v=3","gravatar_id":"","url":"https://api.github.com/users/PlagueHO","html_url":"https://github.com/PlagueHO","followers_url":"https://api.github.com/users/PlagueHO/followers","following_url":"https://api.github.com/users/PlagueHO/following{/other_user}","gists_url":"https://api.github.com/users/PlagueHO/gists{/gist_id}","starred_url":"https://api.github.com/users/PlagueHO/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/PlagueHO/subscriptions","organizations_url":"https://api.github.com/users/PlagueHO/orgs","repos_url":"https://api.github.com/users/PlagueHO/repos","events_url":"https://api.github.com/users/PlagueHO/events{/privacy}","received_events_url":"https://api.github.com/users/PlagueHO/received_events","type":"User","site_admin":false},"repo":{"id":41977867,"name":"xNetworking","full_name":"PlagueHO/xNetworking","owner":{"login":"PlagueHO","id":7589164,"avatar_url":"https://avatars.githubusercontent.com/u/7589164?v=3","gravatar_id":"","url":"https://api.github.com/users/PlagueHO","html_url":"https://github.com/PlagueHO","followers_url":"https://api.github.com/users/PlagueHO/followers","following_url":"https://api.github.com/users/PlagueHO/following{/other_user}","gists_url":"https://api.github.com/users/PlagueHO/gists{/gist_id}","starred_url":"https://api.github.com/users/PlagueHO/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/PlagueHO/subscriptions","organizations_url":"https://api.github.com/users/PlagueHO/orgs","repos_url":"https://api.github.com/users/PlagueHO/repos","events_url":"https://api.github.com/users/PlagueHO/events{/privacy}","received_events_url":"https://api.github.com/users/PlagueHO/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/PlagueHO/xNetworking","description":null,"fork":true,"url":"https://api.github.com/repos/PlagueHO/xNetworking","forks_url":"https://api.github.com/repos/PlagueHO/xNetworking/forks","keys_url":"https://api.github.com/repos/PlagueHO/xNetworking/keys{/key_id}","collaborators_url":"https://api.github.com/repos/PlagueHO/xNetworking/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/PlagueHO/xNetworking/teams","hooks_url":"https://api.github.com/repos/PlagueHO/xNetworking/hooks","issue_events_url":"https://api.github.com/repos/PlagueHO/xNetworking/issues/events{/number}","events_url":"https://api.github.com/repos/PlagueHO/xNetworking/events","assignees_url":"https://api.github.com/repos/PlagueHO/xNetworking/assignees{/user}","branches_url":"https://api.github.com/repos/PlagueHO/xNetworking/branches{/branch}","tags_url":"https://api.github.com/repos/PlagueHO/xNetworking/tags","blobs_url":"https://api.github.com/repos/PlagueHO/xNetworking/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/PlagueHO/xNetworking/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/PlagueHO/xNetworking/git/refs{/sha}","trees_url":"https://api.github.com/repos/PlagueHO/xNetworking/git/trees{/sha}","statuses_url":"https://api.github.com/repos/PlagueHO/xNetworking/statuses/{sha}","languages_url":"https://api.github.com/repos/PlagueHO/xNetworking/languages","stargazers_url":"https://api.github.com/repos/PlagueHO/xNetworking/stargazers","contributors_url":"https://api.github.com/repos/PlagueHO/xNetworking/contributors","subscribers_url":"https://api.github.com/repos/PlagueHO/xNetworking/subscribers","subscription_url":"https://api.github.com/repos/PlagueHO/xNetworking/subscription","commits_url":"https://api.github.com/repos/PlagueHO/xNetworking/commits{/sha}","git_commits_url":"https://api.github.com/repos/PlagueHO/xNetworking/git/commits{/sha}","comments_url":"https://api.github.com/repos/PlagueHO/xNetworking/comments{/number}","issue_comment_url":"https://api.github.com/repos/PlagueHO/xNetworking/issues/comments{/number}","contents_url":"https://api.github.com/repos/PlagueHO/xNetworking/contents/{+path}","compare_url":"https://api.github.com/repos/PlagueHO/xNetworking/compare/{base}...{head}","merges_url":"https://api.github.com/repos/PlagueHO/xNetworking/merges","archive_url":"https://api.github.com/repos/PlagueHO/xNetworking/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/PlagueHO/xNetworking/downloads","issues_url":"https://api.github.com/repos/PlagueHO/xNetworking/issues{/number}","pulls_url":"https://api.github.com/repos/PlagueHO/xNetworking/pulls{/number}","milestones_url":"https://api.github.com/repos/PlagueHO/xNetworking/milestones{/number}","notifications_url":"https://api.github.com/repos/PlagueHO/xNetworking/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/PlagueHO/xNetworking/labels{/name}","releases_url":"https://api.github.com/repos/PlagueHO/xNetworking/releases{/id}","created_at":"2015-09-05T22:37:55Z","updated_at":"2015-09-05T22:37:56Z","pushed_at":"2015-10-02T04:53:10Z","git_url":"git://github.com/PlagueHO/xNetworking.git","ssh_url":"git@github.com:PlagueHO/xNetworking.git","clone_url":"https://github.com/PlagueHO/xNetworking.git","svn_url":"https://github.com/PlagueHO/xNetworking","homepage":null,"size":291,"stargazers_count":0,"watchers_count":0,"language":"PowerShell","has_issues":false,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":0,"mirror_url":null,"open_issues_count":0,"forks":0,"open_issues":0,"watchers":0,"default_branch":"dev"}},"base":{"label":"PowerShell:dev","ref":"dev","sha":"d4de7bc2d43210e49de4cdc11fb1f0d4c7352f02","user":{"login":"PowerShell","id":11524380,"avatar_url":"https://avatars.githubusercontent.com/u/11524380?v=3","gravatar_id":"","url":"https://api.github.com/users/PowerShell","html_url":"https://github.com/PowerShell","followers_url":"https://api.github.com/users/PowerShell/followers","following_url":"https://api.github.com/users/PowerShell/following{/other_user}","gists_url":"https://api.github.com/users/PowerShell/gists{/gist_id}","starred_url":"https://api.github.com/users/PowerShell/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/PowerShell/subscriptions","organizations_url":"https://api.github.com/users/PowerShell/orgs","repos_url":"https://api.github.com/users/PowerShell/repos","events_url":"https://api.github.com/users/PowerShell/events{/privacy}","received_events_url":"https://api.github.com/users/PowerShell/received_events","type":"Organization","site_admin":false},"repo":{"id":34022240,"name":"xNetworking","full_name":"PowerShell/xNetworking","owner":{"login":"PowerShell","id":11524380,"avatar_url":"https://avatars.githubusercontent.com/u/11524380?v=3","gravatar_id":"","url":"https://api.github.com/users/PowerShell","html_url":"https://github.com/PowerShell","followers_url":"https://api.github.com/users/PowerShell/followers","following_url":"https://api.github.com/users/PowerShell/following{/other_user}","gists_url":"https://api.github.com/users/PowerShell/gists{/gist_id}","starred_url":"https://api.github.com/users/PowerShell/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/PowerShell/subscriptions","organizations_url":"https://api.github.com/users/PowerShell/orgs","repos_url":"https://api.github.com/users/PowerShell/repos","events_url":"https://api.github.com/users/PowerShell/events{/privacy}","received_events_url":"https://api.github.com/users/PowerShell/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/PowerShell/xNetworking","description":null,"fork":false,"url":"https://api.github.com/repos/PowerShell/xNetworking","forks_url":"https://api.github.com/repos/PowerShell/xNetworking/forks","keys_url":"https://api.github.com/repos/PowerShell/xNetworking/keys{/key_id}","collaborators_url":"https://api.github.com/repos/PowerShell/xNetworking/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/PowerShell/xNetworking/teams","hooks_url":"https://api.github.com/repos/PowerShell/xNetworking/hooks","issue_events_url":"https://api.github.com/repos/PowerShell/xNetworking/issues/events{/number}","events_url":"https://api.github.com/repos/PowerShell/xNetworking/events","assignees_url":"https://api.github.com/repos/PowerShell/xNetworking/assignees{/user}","branches_url":"https://api.github.com/repos/PowerShell/xNetworking/branches{/branch}","tags_url":"https://api.github.com/repos/PowerShell/xNetworking/tags","blobs_url":"https://api.github.com/repos/PowerShell/xNetworking/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/PowerShell/xNetworking/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/PowerShell/xNetworking/git/refs{/sha}","trees_url":"https://api.github.com/repos/PowerShell/xNetworking/git/trees{/sha}","statuses_url":"https://api.github.com/repos/PowerShell/xNetworking/statuses/{sha}","languages_url":"https://api.github.com/repos/PowerShell/xNetworking/languages","stargazers_url":"https://api.github.com/repos/PowerShell/xNetworking/stargazers","contributors_url":"https://api.github.com/repos/PowerShell/xNetworking/contributors","subscribers_url":"https://api.github.com/repos/PowerShell/xNetworking/subscribers","subscription_url":"https://api.github.com/repos/PowerShell/xNetworking/subscription","commits_url":"https://api.github.com/repos/PowerShell/xNetworking/commits{/sha}","git_commits_url":"https://api.github.com/repos/PowerShell/xNetworking/git/commits{/sha}","comments_url":"https://api.github.com/repos/PowerShell/xNetworking/comments{/number}","issue_comment_url":"https://api.github.com/repos/PowerShell/xNetworking/issues/comments{/number}","contents_url":"https://api.github.com/repos/PowerShell/xNetworking/contents/{+path}","compare_url":"https://api.github.com/repos/PowerShell/xNetworking/compare/{base}...{head}","merges_url":"https://api.github.com/repos/PowerShell/xNetworking/merges","archive_url":"https://api.github.com/repos/PowerShell/xNetworking/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/PowerShell/xNetworking/downloads","issues_url":"https://api.github.com/repos/PowerShell/xNetworking/issues{/number}","pulls_url":"https://api.github.com/repos/PowerShell/xNetworking/pulls{/number}","milestones_url":"https://api.github.com/repos/PowerShell/xNetworking/milestones{/number}","notifications_url":"https://api.github.com/repos/PowerShell/xNetworking/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/PowerShell/xNetworking/labels{/name}","releases_url":"https://api.github.com/repos/PowerShell/xNetworking/releases{/id}","created_at":"2015-04-15T22:43:02Z","updated_at":"2015-09-08T17:19:19Z","pushed_at":"2015-10-02T04:53:12Z","git_url":"git://github.com/PowerShell/xNetworking.git","ssh_url":"git@github.com:PowerShell/xNetworking.git","clone_url":"https://github.com/PowerShell/xNetworking.git","svn_url":"https://github.com/PowerShell/xNetworking","homepage":null,"size":557,"stargazers_count":5,"watchers_count":5,"language":"PowerShell","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":10,"mirror_url":null,"open_issues_count":9,"forks":10,"open_issues":9,"watchers":5,"default_branch":"dev"}},"_links":{"self":{"href":"https://api.github.com/repos/PowerShell/xNetworking/pulls/29"},"html":{"href":"https://github.com/PowerShell/xNetworking/pull/29"},"issue":{"href":"https://api.github.com/repos/PowerShell/xNetworking/issues/29"},"comments":{"href":"https://api.github.com/repos/PowerShell/xNetworking/issues/29/comments"},"review_comments":{"href":"https://api.github.com/repos/PowerShell/xNetworking/pulls/29/comments"},"review_comment":{"href":"https://api.github.com/repos/PowerShell/xNetworking/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/PowerShell/xNetworking/pulls/29/commits"},"statuses":{"href":"https://api.github.com/repos/PowerShell/xNetworking/statuses/8e5b4a34c1eb5065d992ab1a66b5fd2b86b845a5"}}}}