{"action":"created","comment":{"url":"https://api.github.com/repos/Azure-Samples/azure-iot-samples-csharp/pulls/comments/219245472","pull_request_review_id":157061319,"id":219245472,"node_id":"MDI0OlB1bGxSZXF1ZXN0UmV2aWV3Q29tbWVudDIxOTI0NTQ3Mg==","diff_hunk":"@@ -0,0 +1,131 @@\n+﻿// Copyright (c) Microsoft. All rights reserved.\n+// Licensed under the MIT license. See LICENSE file in the project root for full license information.\n+\n+using System;\n+using System.Globalization;\n+using System.IO;\n+using System.Text;\n+using System.Threading.Tasks;\n+using System.Security.Cryptography.X509Certificates;\n+\n+using Microsoft.Azure.Devices.Client;\n+\n+namespace Microsoft.Azure.Devices.Client.Samples\n+{\n+    class Program\n+    {\n+\n+        // 1) Obtain the connection string for your downstream device and to it\n+        //    append this string GatewayHostName=<edge device hostname>;\n+        // 2) The edge device hostname is the hostname set in the config.yaml of the Edge device\n+        //    to which this sample will connect to.\n+        //\n+        // The resulting string should look like the following\n+        //  \"HostName=<iothub_host_name>;DeviceId=<device_id>;SharedAccessKey=<device_key>;GatewayHostName=<edge device hostname>\"\n+        //\n+        // Either set the DEVICE_CONNECTION_STRING environment variable with this connection string\n+        // or set it in the launchSettings.json.\n+        private static string DeviceConnectionString = Environment.GetEnvironmentVariable(\"DEVICE_CONNECTION_STRING\");\n+\n+        private static int MESSAGE_COUNT = 10;\n+        private const int TEMPERATURE_THRESHOLD = 30;\n+\n+        private static float temperature;\n+        private static float humidity;\n+\n+        /// <summary>\n+        /// First install any CA certificate provided by the user to connect to the Edge device.\n+        /// Next attempt to connect to the Edge device and send it DEVICE_MESSAGE_COUNT\n+        /// number of telemetry data messages.\n+        ///\n+        /// Note: Either set the DEVICE_MESSAGE_COUNT environment variable with the number of\n+        /// messages to be sent to the IoT Edge runtime or set it in the launchSettings.json.\n+        /// </summary>\n+        static void Main()\n+        {\n+            InstallCACert();\n+\n+            try\n+            {\n+                MESSAGE_COUNT = Int32.Parse(Environment.GetEnvironmentVariable(\"DEVICE_MESSAGE_COUNT\"), NumberStyles.None, new CultureInfo(\"en-US\"));\n+            }\n+            catch (Exception)\n+            {\n+                Console.WriteLine(\"Invalid number of messages in env variable DEVICE_MESSAGE_COUNT. MESSAGE_COUNT set to {0}\\n\", MESSAGE_COUNT);\n+            }\n+\n+            DeviceClient deviceClient = DeviceClient.CreateFromConnectionString(DeviceConnectionString);\n+\n+            if (deviceClient == null)\n+            {\n+                Console.WriteLine(\"Failed to create DeviceClient!\");\n+            }\n+            else\n+            {\n+                SendEvents(deviceClient).Wait();\n+            }\n+\n+            Console.WriteLine(\"Exiting!\\n\");\n+        }\n+\n+        /// <summary>\n+        /// Add certificate in local cert store for use by downstream device\n+        /// client for secure connection to IoT Edge runtime.\n+        ///\n+        ///    Note: On Windows machines, if you have not run this from an Administrator prompt,\n+        ///    a prompt will likely come up to confirm the installation of the certificate.\n+        ///    This usually happens the first time a certificate will be installed.\n+        /// </summary>\n+        static void InstallCACert()\n+        {\n+            string certPath = Environment.GetEnvironmentVariable(\"EDGE_DEVICE_CA_CERTIFICATE_PATH\");\n+            if (!string.IsNullOrWhiteSpace(certPath))\n+            {\n+                Console.WriteLine(\"User configured CA certificate path: {0}\", certPath);\n+                if (!File.Exists(certPath))\n+                {\n+                    // cannot proceed further without a proper cert file\n+                    Console.WriteLine(\"Invalid certificate file: {0}\", certPath);\n+                    throw new InvalidOperationException(\"Invalid certificate file.\");","path":"iot-hub/Samples/device/EdgeDownstreamDevice/Program.cs","position":89,"original_position":89,"commit_id":"299eb6f47375d2c33a62d1d2b0e54c9cb6273548","original_commit_id":"299eb6f47375d2c33a62d1d2b0e54c9cb6273548","user":{"login":"CIPop","id":8635911,"node_id":"MDQ6VXNlcjg2MzU5MTE=","avatar_url":"https://avatars2.githubusercontent.com/u/8635911?v=4","gravatar_id":"","url":"https://api.github.com/users/CIPop","html_url":"https://github.com/CIPop","followers_url":"https://api.github.com/users/CIPop/followers","following_url":"https://api.github.com/users/CIPop/following{/other_user}","gists_url":"https://api.github.com/users/CIPop/gists{/gist_id}","starred_url":"https://api.github.com/users/CIPop/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/CIPop/subscriptions","organizations_url":"https://api.github.com/users/CIPop/orgs","repos_url":"https://api.github.com/users/CIPop/repos","events_url":"https://api.github.com/users/CIPop/events{/privacy}","received_events_url":"https://api.github.com/users/CIPop/received_events","type":"User","site_admin":false},"body":"`FileNotFoundException` - the file doesn't exist, it's not that the file exists and it's invalid.","created_at":"2018-09-20T17:09:19Z","updated_at":"2018-09-20T17:15:59Z","html_url":"https://github.com/Azure-Samples/azure-iot-samples-csharp/pull/20#discussion_r219245472","pull_request_url":"https://api.github.com/repos/Azure-Samples/azure-iot-samples-csharp/pulls/20","author_association":"NONE","_links":{"self":{"href":"https://api.github.com/repos/Azure-Samples/azure-iot-samples-csharp/pulls/comments/219245472"},"html":{"href":"https://github.com/Azure-Samples/azure-iot-samples-csharp/pull/20#discussion_r219245472"},"pull_request":{"href":"https://api.github.com/repos/Azure-Samples/azure-iot-samples-csharp/pulls/20"}}},"pull_request":{"url":"https://api.github.com/repos/Azure-Samples/azure-iot-samples-csharp/pulls/20","id":216201865,"node_id":"MDExOlB1bGxSZXF1ZXN0MjE2MjAxODY1","html_url":"https://github.com/Azure-Samples/azure-iot-samples-csharp/pull/20","diff_url":"https://github.com/Azure-Samples/azure-iot-samples-csharp/pull/20.diff","patch_url":"https://github.com/Azure-Samples/azure-iot-samples-csharp/pull/20.patch","issue_url":"https://api.github.com/repos/Azure-Samples/azure-iot-samples-csharp/issues/20","number":20,"state":"open","locked":false,"title":"Sample code for a downstream device that connects to an IoT Edge device","user":{"login":"mrohera","id":22642794,"node_id":"MDQ6VXNlcjIyNjQyNzk0","avatar_url":"https://avatars2.githubusercontent.com/u/22642794?v=4","gravatar_id":"","url":"https://api.github.com/users/mrohera","html_url":"https://github.com/mrohera","followers_url":"https://api.github.com/users/mrohera/followers","following_url":"https://api.github.com/users/mrohera/following{/other_user}","gists_url":"https://api.github.com/users/mrohera/gists{/gist_id}","starred_url":"https://api.github.com/users/mrohera/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mrohera/subscriptions","organizations_url":"https://api.github.com/users/mrohera/orgs","repos_url":"https://api.github.com/users/mrohera/repos","events_url":"https://api.github.com/users/mrohera/events{/privacy}","received_events_url":"https://api.github.com/users/mrohera/received_events","type":"User","site_admin":false},"body":"## Purpose\r\n<!-- Describe the intention of the changes being proposed. What problem does it solve or functionality does it add? -->\r\n* Adding a sample to make it easier for users to connect downstream devices to an Azure IoT Edge device,\r\n\r\n## Does this introduce a breaking change?\r\n<!-- Mark one with an \"x\". -->\r\n```\r\n[ ] Yes\r\n[x ] No\r\n```\r\n\r\n## Pull Request Type\r\nWhat kind of change does this Pull Request introduce?\r\n\r\nThe sample highlights how a developer should put together a connection string for the Edge and install the relevant CA certificate required to authenticate the Azure IoT Edge server certificate. The sample was based off https://github.com/Azure/azure-iot-sdk-csharp/tree/master/iothub/device/samples/DeviceClientMqttSample with the required pieces to connect to an Edge.\r\n\r\n<!-- Please check the one that applies to this PR using \"x\". -->\r\n```\r\n[ ] Bugfix\r\n[ ] Feature\r\n[ ] Code style update (formatting, local variables)\r\n[ ] Refactoring (no functional changes, no api changes)\r\n[ ] Documentation content changes\r\n[ x] Other... Please describe:\r\n```\r\nSample\r\n\r\n## How to Test\r\n* Start an Edge device in the transparent gateway. See [https://docs.microsoft.com/en-us/azure/iot-edge/how-to-create-transparent-gateway-linux](https://docs.microsoft.com/en-us/azure/iot-edge/how-to-create-transparent-gateway-linux) for more information\r\n*  Get the code and build the sample.\r\n* Add the Edge connection string and path to the CA certificate in the launchSettings.json\r\n* Watch the sample client send telemetry through to the Edge.\r\n\r\n* Test the code\r\n<!-- Add steps to run the tests suite and/or manually test -->\r\n```\r\n```\r\n\r\n## What to Check\r\nVerify that the CA certificate was installed correctly and telemetry messages were sent by checking the \r\nSuccessfully added certificate: C:\\git\\tg_scripts\\wsl\\certs\\certs\\azure-iot-test-only.root.ca.cert.pem\r\nEdge downstream device attempting to send 10 messages to Edge Hub...\r\n\r\n9/17/2018 11:50:20 PM> Sending message: 0, Data: [{MyFirstDownstreamDevice \"messageId\":0,\"temperature\":29,\"humidity\":77}]\r\n9/17/2018 11:50:28 PM> Sending message: 1, Data: [{MyFirstDownstreamDevice \"messageId\":1,\"temperature\":23,\"humidity\":61}]\r\n...\r\n....\r\n\r\n## Other Information\r\n<!-- Add any other helpful information that may be needed here. -->","created_at":"2018-09-18T06:59:14Z","updated_at":"2018-09-20T17:15:59Z","closed_at":null,"merged_at":null,"merge_commit_sha":"f693aa817c3282c282ce8549ce86defc66b75a74","assignee":null,"assignees":[],"requested_reviewers":[],"requested_teams":[],"labels":[],"milestone":null,"commits_url":"https://api.github.com/repos/Azure-Samples/azure-iot-samples-csharp/pulls/20/commits","review_comments_url":"https://api.github.com/repos/Azure-Samples/azure-iot-samples-csharp/pulls/20/comments","review_comment_url":"https://api.github.com/repos/Azure-Samples/azure-iot-samples-csharp/pulls/comments{/number}","comments_url":"https://api.github.com/repos/Azure-Samples/azure-iot-samples-csharp/issues/20/comments","statuses_url":"https://api.github.com/repos/Azure-Samples/azure-iot-samples-csharp/statuses/299eb6f47375d2c33a62d1d2b0e54c9cb6273548","head":{"label":"mrohera:edge_downstream_sample","ref":"edge_downstream_sample","sha":"299eb6f47375d2c33a62d1d2b0e54c9cb6273548","user":{"login":"mrohera","id":22642794,"node_id":"MDQ6VXNlcjIyNjQyNzk0","avatar_url":"https://avatars2.githubusercontent.com/u/22642794?v=4","gravatar_id":"","url":"https://api.github.com/users/mrohera","html_url":"https://github.com/mrohera","followers_url":"https://api.github.com/users/mrohera/followers","following_url":"https://api.github.com/users/mrohera/following{/other_user}","gists_url":"https://api.github.com/users/mrohera/gists{/gist_id}","starred_url":"https://api.github.com/users/mrohera/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mrohera/subscriptions","organizations_url":"https://api.github.com/users/mrohera/orgs","repos_url":"https://api.github.com/users/mrohera/repos","events_url":"https://api.github.com/users/mrohera/events{/privacy}","received_events_url":"https://api.github.com/users/mrohera/received_events","type":"User","site_admin":false},"repo":{"id":149236896,"node_id":"MDEwOlJlcG9zaXRvcnkxNDkyMzY4OTY=","name":"azure-iot-samples-csharp","full_name":"mrohera/azure-iot-samples-csharp","private":false,"owner":{"login":"mrohera","id":22642794,"node_id":"MDQ6VXNlcjIyNjQyNzk0","avatar_url":"https://avatars2.githubusercontent.com/u/22642794?v=4","gravatar_id":"","url":"https://api.github.com/users/mrohera","html_url":"https://github.com/mrohera","followers_url":"https://api.github.com/users/mrohera/followers","following_url":"https://api.github.com/users/mrohera/following{/other_user}","gists_url":"https://api.github.com/users/mrohera/gists{/gist_id}","starred_url":"https://api.github.com/users/mrohera/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mrohera/subscriptions","organizations_url":"https://api.github.com/users/mrohera/orgs","repos_url":"https://api.github.com/users/mrohera/repos","events_url":"https://api.github.com/users/mrohera/events{/privacy}","received_events_url":"https://api.github.com/users/mrohera/received_events","type":"User","site_admin":false},"html_url":"https://github.com/mrohera/azure-iot-samples-csharp","description":"azure-iot-samples-csharp provides a set of easy-to-understand, continuously-tested samples for using Azure IoT Hub and Azure IoT Hub Device Provisioning Service using C# SDK.","fork":true,"url":"https://api.github.com/repos/mrohera/azure-iot-samples-csharp","forks_url":"https://api.github.com/repos/mrohera/azure-iot-samples-csharp/forks","keys_url":"https://api.github.com/repos/mrohera/azure-iot-samples-csharp/keys{/key_id}","collaborators_url":"https://api.github.com/repos/mrohera/azure-iot-samples-csharp/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/mrohera/azure-iot-samples-csharp/teams","hooks_url":"https://api.github.com/repos/mrohera/azure-iot-samples-csharp/hooks","issue_events_url":"https://api.github.com/repos/mrohera/azure-iot-samples-csharp/issues/events{/number}","events_url":"https://api.github.com/repos/mrohera/azure-iot-samples-csharp/events","assignees_url":"https://api.github.com/repos/mrohera/azure-iot-samples-csharp/assignees{/user}","branches_url":"https://api.github.com/repos/mrohera/azure-iot-samples-csharp/branches{/branch}","tags_url":"https://api.github.com/repos/mrohera/azure-iot-samples-csharp/tags","blobs_url":"https://api.github.com/repos/mrohera/azure-iot-samples-csharp/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/mrohera/azure-iot-samples-csharp/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/mrohera/azure-iot-samples-csharp/git/refs{/sha}","trees_url":"https://api.github.com/repos/mrohera/azure-iot-samples-csharp/git/trees{/sha}","statuses_url":"https://api.github.com/repos/mrohera/azure-iot-samples-csharp/statuses/{sha}","languages_url":"https://api.github.com/repos/mrohera/azure-iot-samples-csharp/languages","stargazers_url":"https://api.github.com/repos/mrohera/azure-iot-samples-csharp/stargazers","contributors_url":"https://api.github.com/repos/mrohera/azure-iot-samples-csharp/contributors","subscribers_url":"https://api.github.com/repos/mrohera/azure-iot-samples-csharp/subscribers","subscription_url":"https://api.github.com/repos/mrohera/azure-iot-samples-csharp/subscription","commits_url":"https://api.github.com/repos/mrohera/azure-iot-samples-csharp/commits{/sha}","git_commits_url":"https://api.github.com/repos/mrohera/azure-iot-samples-csharp/git/commits{/sha}","comments_url":"https://api.github.com/repos/mrohera/azure-iot-samples-csharp/comments{/number}","issue_comment_url":"https://api.github.com/repos/mrohera/azure-iot-samples-csharp/issues/comments{/number}","contents_url":"https://api.github.com/repos/mrohera/azure-iot-samples-csharp/contents/{+path}","compare_url":"https://api.github.com/repos/mrohera/azure-iot-samples-csharp/compare/{base}...{head}","merges_url":"https://api.github.com/repos/mrohera/azure-iot-samples-csharp/merges","archive_url":"https://api.github.com/repos/mrohera/azure-iot-samples-csharp/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/mrohera/azure-iot-samples-csharp/downloads","issues_url":"https://api.github.com/repos/mrohera/azure-iot-samples-csharp/issues{/number}","pulls_url":"https://api.github.com/repos/mrohera/azure-iot-samples-csharp/pulls{/number}","milestones_url":"https://api.github.com/repos/mrohera/azure-iot-samples-csharp/milestones{/number}","notifications_url":"https://api.github.com/repos/mrohera/azure-iot-samples-csharp/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/mrohera/azure-iot-samples-csharp/labels{/name}","releases_url":"https://api.github.com/repos/mrohera/azure-iot-samples-csharp/releases{/id}","deployments_url":"https://api.github.com/repos/mrohera/azure-iot-samples-csharp/deployments","created_at":"2018-09-18T06:05:29Z","updated_at":"2018-09-18T06:05:32Z","pushed_at":"2018-09-18T06:23:42Z","git_url":"git://github.com/mrohera/azure-iot-samples-csharp.git","ssh_url":"git@github.com:mrohera/azure-iot-samples-csharp.git","clone_url":"https://github.com/mrohera/azure-iot-samples-csharp.git","svn_url":"https://github.com/mrohera/azure-iot-samples-csharp","homepage":null,"size":576,"stargazers_count":0,"watchers_count":0,"language":"C#","has_issues":false,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":0,"mirror_url":null,"archived":false,"open_issues_count":0,"license":{"key":"mit","name":"MIT License","spdx_id":"MIT","url":"https://api.github.com/licenses/mit","node_id":"MDc6TGljZW5zZTEz"},"forks":0,"open_issues":0,"watchers":0,"default_branch":"master"}},"base":{"label":"Azure-Samples:master","ref":"master","sha":"f45e6e118bf4ec9ed9ecc694af59bedc3a3aa6ae","user":{"login":"Azure-Samples","id":1844662,"node_id":"MDEyOk9yZ2FuaXphdGlvbjE4NDQ2NjI=","avatar_url":"https://avatars2.githubusercontent.com/u/1844662?v=4","gravatar_id":"","url":"https://api.github.com/users/Azure-Samples","html_url":"https://github.com/Azure-Samples","followers_url":"https://api.github.com/users/Azure-Samples/followers","following_url":"https://api.github.com/users/Azure-Samples/following{/other_user}","gists_url":"https://api.github.com/users/Azure-Samples/gists{/gist_id}","starred_url":"https://api.github.com/users/Azure-Samples/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Azure-Samples/subscriptions","organizations_url":"https://api.github.com/users/Azure-Samples/orgs","repos_url":"https://api.github.com/users/Azure-Samples/repos","events_url":"https://api.github.com/users/Azure-Samples/events{/privacy}","received_events_url":"https://api.github.com/users/Azure-Samples/received_events","type":"Organization","site_admin":false},"repo":{"id":130910581,"node_id":"MDEwOlJlcG9zaXRvcnkxMzA5MTA1ODE=","name":"azure-iot-samples-csharp","full_name":"Azure-Samples/azure-iot-samples-csharp","private":false,"owner":{"login":"Azure-Samples","id":1844662,"node_id":"MDEyOk9yZ2FuaXphdGlvbjE4NDQ2NjI=","avatar_url":"https://avatars2.githubusercontent.com/u/1844662?v=4","gravatar_id":"","url":"https://api.github.com/users/Azure-Samples","html_url":"https://github.com/Azure-Samples","followers_url":"https://api.github.com/users/Azure-Samples/followers","following_url":"https://api.github.com/users/Azure-Samples/following{/other_user}","gists_url":"https://api.github.com/users/Azure-Samples/gists{/gist_id}","starred_url":"https://api.github.com/users/Azure-Samples/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Azure-Samples/subscriptions","organizations_url":"https://api.github.com/users/Azure-Samples/orgs","repos_url":"https://api.github.com/users/Azure-Samples/repos","events_url":"https://api.github.com/users/Azure-Samples/events{/privacy}","received_events_url":"https://api.github.com/users/Azure-Samples/received_events","type":"Organization","site_admin":false},"html_url":"https://github.com/Azure-Samples/azure-iot-samples-csharp","description":"azure-iot-samples-csharp provides a set of easy-to-understand, continuously-tested samples for using Azure IoT Hub and Azure IoT Hub Device Provisioning Service using C# SDK.","fork":false,"url":"https://api.github.com/repos/Azure-Samples/azure-iot-samples-csharp","forks_url":"https://api.github.com/repos/Azure-Samples/azure-iot-samples-csharp/forks","keys_url":"https://api.github.com/repos/Azure-Samples/azure-iot-samples-csharp/keys{/key_id}","collaborators_url":"https://api.github.com/repos/Azure-Samples/azure-iot-samples-csharp/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/Azure-Samples/azure-iot-samples-csharp/teams","hooks_url":"https://api.github.com/repos/Azure-Samples/azure-iot-samples-csharp/hooks","issue_events_url":"https://api.github.com/repos/Azure-Samples/azure-iot-samples-csharp/issues/events{/number}","events_url":"https://api.github.com/repos/Azure-Samples/azure-iot-samples-csharp/events","assignees_url":"https://api.github.com/repos/Azure-Samples/azure-iot-samples-csharp/assignees{/user}","branches_url":"https://api.github.com/repos/Azure-Samples/azure-iot-samples-csharp/branches{/branch}","tags_url":"https://api.github.com/repos/Azure-Samples/azure-iot-samples-csharp/tags","blobs_url":"https://api.github.com/repos/Azure-Samples/azure-iot-samples-csharp/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/Azure-Samples/azure-iot-samples-csharp/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/Azure-Samples/azure-iot-samples-csharp/git/refs{/sha}","trees_url":"https://api.github.com/repos/Azure-Samples/azure-iot-samples-csharp/git/trees{/sha}","statuses_url":"https://api.github.com/repos/Azure-Samples/azure-iot-samples-csharp/statuses/{sha}","languages_url":"https://api.github.com/repos/Azure-Samples/azure-iot-samples-csharp/languages","stargazers_url":"https://api.github.com/repos/Azure-Samples/azure-iot-samples-csharp/stargazers","contributors_url":"https://api.github.com/repos/Azure-Samples/azure-iot-samples-csharp/contributors","subscribers_url":"https://api.github.com/repos/Azure-Samples/azure-iot-samples-csharp/subscribers","subscription_url":"https://api.github.com/repos/Azure-Samples/azure-iot-samples-csharp/subscription","commits_url":"https://api.github.com/repos/Azure-Samples/azure-iot-samples-csharp/commits{/sha}","git_commits_url":"https://api.github.com/repos/Azure-Samples/azure-iot-samples-csharp/git/commits{/sha}","comments_url":"https://api.github.com/repos/Azure-Samples/azure-iot-samples-csharp/comments{/number}","issue_comment_url":"https://api.github.com/repos/Azure-Samples/azure-iot-samples-csharp/issues/comments{/number}","contents_url":"https://api.github.com/repos/Azure-Samples/azure-iot-samples-csharp/contents/{+path}","compare_url":"https://api.github.com/repos/Azure-Samples/azure-iot-samples-csharp/compare/{base}...{head}","merges_url":"https://api.github.com/repos/Azure-Samples/azure-iot-samples-csharp/merges","archive_url":"https://api.github.com/repos/Azure-Samples/azure-iot-samples-csharp/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/Azure-Samples/azure-iot-samples-csharp/downloads","issues_url":"https://api.github.com/repos/Azure-Samples/azure-iot-samples-csharp/issues{/number}","pulls_url":"https://api.github.com/repos/Azure-Samples/azure-iot-samples-csharp/pulls{/number}","milestones_url":"https://api.github.com/repos/Azure-Samples/azure-iot-samples-csharp/milestones{/number}","notifications_url":"https://api.github.com/repos/Azure-Samples/azure-iot-samples-csharp/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/Azure-Samples/azure-iot-samples-csharp/labels{/name}","releases_url":"https://api.github.com/repos/Azure-Samples/azure-iot-samples-csharp/releases{/id}","deployments_url":"https://api.github.com/repos/Azure-Samples/azure-iot-samples-csharp/deployments","created_at":"2018-04-24T20:33:52Z","updated_at":"2018-09-20T08:58:51Z","pushed_at":"2018-09-18T06:59:15Z","git_url":"git://github.com/Azure-Samples/azure-iot-samples-csharp.git","ssh_url":"git@github.com:Azure-Samples/azure-iot-samples-csharp.git","clone_url":"https://github.com/Azure-Samples/azure-iot-samples-csharp.git","svn_url":"https://github.com/Azure-Samples/azure-iot-samples-csharp","homepage":null,"size":573,"stargazers_count":15,"watchers_count":15,"language":"C#","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":20,"mirror_url":null,"archived":false,"open_issues_count":7,"license":{"key":"mit","name":"MIT License","spdx_id":"MIT","url":"https://api.github.com/licenses/mit","node_id":"MDc6TGljZW5zZTEz"},"forks":20,"open_issues":7,"watchers":15,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/Azure-Samples/azure-iot-samples-csharp/pulls/20"},"html":{"href":"https://github.com/Azure-Samples/azure-iot-samples-csharp/pull/20"},"issue":{"href":"https://api.github.com/repos/Azure-Samples/azure-iot-samples-csharp/issues/20"},"comments":{"href":"https://api.github.com/repos/Azure-Samples/azure-iot-samples-csharp/issues/20/comments"},"review_comments":{"href":"https://api.github.com/repos/Azure-Samples/azure-iot-samples-csharp/pulls/20/comments"},"review_comment":{"href":"https://api.github.com/repos/Azure-Samples/azure-iot-samples-csharp/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/Azure-Samples/azure-iot-samples-csharp/pulls/20/commits"},"statuses":{"href":"https://api.github.com/repos/Azure-Samples/azure-iot-samples-csharp/statuses/299eb6f47375d2c33a62d1d2b0e54c9cb6273548"}},"author_association":"NONE"}}
{"actor":{"display_login":"CIPop"}}