{"action":"created","comment":{"url":"https://api.github.com/repos/Microsoft/vsts-tasks/pulls/comments/167953922","pull_request_review_id":96241777,"id":167953922,"diff_hunk":"@@ -0,0 +1,320 @@\n+import msRestAzure = require(\"./azure-arm-common\");\n+import webClient = require(\"./webClient\");\n+import tl = require('vsts-task-lib/task');\n+import util = require(\"util\");\n+import azureServiceClient = require(\"./AzureServiceClient\");\n+import Q = require(\"q\");\n+\n+export class AzureMysqlManagementClient extends azureServiceClient.ServiceClient {\n+    public firewallRules: FirewallRules;\n+    public mysqlServers: MysqlServers;\n+\n+    constructor(credentials: msRestAzure.ApplicationTokenCredentials, subscriptionId, baseUri?: any, options?: any) {\n+        super(credentials, subscriptionId);\n+\n+        this.apiVersion = '2017-04-30-preview';\n+        this.acceptLanguage = 'en-US';\n+        this.generateClientRequestId = true;\n+\n+        if (!options) options = {};\n+\n+        if (baseUri) {\n+            this.baseUri = baseUri;\n+        }\n+\n+        if (options.apiVersion) {\n+            this.apiVersion = options.apiVersion;\n+        }\n+        if (options.acceptLanguage) {\n+            this.acceptLanguage = options.acceptLanguage;\n+        }\n+        if (options.longRunningOperationRetryTimeout) {\n+            this.longRunningOperationRetryTimeout = options.longRunningOperationRetryTimeout;\n+        }\n+        if (options.generateClientRequestId) {\n+            this.generateClientRequestId = options.generateClientRequestId;\n+        }\n+\n+        this.firewallRules = new FirewallRules(this);\n+        this.mysqlServers = new MysqlServers(this);\n+    }\n+}\n+\n+export class FirewallRules {\n+    private client: AzureMysqlManagementClient;\n+\n+    constructor(client) {\n+        this.client = client;\n+    }\n+    \n+    /**\n+     * Create or update firewall rule for mysql server \n+     * @param resourceGroupName     resource group name of mysql server \n+     * @param serverName            mysql server name\n+     * @param firewallRuleName      rule name to be added or updated\n+     * @param parameters            optional parameter like start and end ip address\n+     * @param callback              response callback \n+     */\n+    public createOrUpdate(resourceGroupName: string, serverName: string, firewallRuleName: string, parameters, callback?:  azureServiceClient.ApiCallback) {\n+        var client = this.client;\n+        if (!callback) {\n+            throw new Error(tl.loc(\"CallbackCannotBeNull\"));\n+        }\n+\n+        // Validate\n+        try {\n+            this.client.isValidResourceGroupName(resourceGroupName);\n+            if(!this.isNameValid(serverName)){\n+                throw new Error(tl.loc(\"MysqlServerNameCannotBeEmpty\"));\n+            }\n+            if(!this.isNameValid(firewallRuleName)){\n+                throw new Error(tl.loc(\"FirewallRuleNameCannotBeNull\"));\n+            }\n+        }\n+        catch (error) {\n+            return callback(error);\n+        }\n+\n+        var httpRequest = new webClient.WebRequest();\n+        httpRequest.method = 'PUT';\n+        httpRequest.headers = {};\n+        httpRequest.uri = this.client.getRequestUri(\n+            '//subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DBforMySQL/servers/{serverName}/firewallRules/{firewallRuleName}',\n+            {\n+                '{resourceGroupName}': resourceGroupName,\n+                '{serverName}': serverName,\n+                '{firewallRuleName}': firewallRuleName\n+            });\n+            \n+        if (parameters !== null && parameters !== undefined) {\n+            httpRequest.body = JSON.stringify(parameters);\n+        }\n+\n+        this.client.beginRequest(httpRequest).then(async (response) => {\n+            var deferred = Q.defer<azureServiceClient.ApiResult>();\n+            var statusCode = response.statusCode;\n+            tl.debug(\"Response for add firewall rule \" +statusCode);\n+            if (statusCode != 200 && statusCode != 201 && statusCode != 202) {\n+                // Generate Error\n+                deferred.reject(new azureServiceClient.ApiResult(azureServiceClient.ToError(response)));\n+            }\n+            else if(statusCode === 202){\n+                this._recursiveGetCall(resourceGroupName, serverName, firewallRuleName, 3).then((response) => {\n+                    deferred.resolve(new azureServiceClient.ApiResult(null, response));\n+                },(error) => {\n+                    deferred.reject(error);\n+                });\n+            }\n+            else {\n+                // Generate Response\n+                deferred.resolve(new azureServiceClient.ApiResult(null, response.body));\n+            }\n+            return deferred.promise;\n+        }).then((apiResult: azureServiceClient.ApiResult) => callback(apiResult.error, apiResult.result),\n+            (error) => callback(error));\n+    }\n+\n+    /**\n+     * Delete firewall rule of mysql server\n+     * @param resourceGroupName     resource group name of mysql server \n+     * @param serverName            mysql server name\n+     * @param firewallRuleName      firewall rule name to be deleted \n+     * @param callback              response callback \n+     */\n+    public delete(resourceGroupName: string, serverName: string, firewallRuleName: string, callback?:  azureServiceClient.ApiCallback) {\n+        var client = this.client;\n+        if (!callback) {\n+            throw new Error(tl.loc(\"CallbackCannotBeNull\"));\n+        }\n+\n+        // Validate\n+        try {\n+            this.client.isValidResourceGroupName(resourceGroupName);\n+            if(!this.isNameValid(serverName)){\n+                throw new Error(tl.loc(\"MysqlServerNameCannotBeEmpty\"));\n+            }\n+            if(!this.isNameValid(firewallRuleName)){\n+                throw new Error(tl.loc(\"FirewallRuleNameCannotBeNull\"));\n+            }\n+        }\n+        catch (error) {\n+            return callback(error);\n+        }\n+\n+        var httpRequest = new webClient.WebRequest();\n+        httpRequest.method = 'DELETE';\n+        httpRequest.headers = {};\n+        httpRequest.uri = this.client.getRequestUri(\n+            '//subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DBforMySQL/servers/{serverName}/firewallRules/{firewallRuleName}',\n+            {\n+                '{resourceGroupName}': resourceGroupName,\n+                '{serverName}': serverName,\n+                '{firewallRuleName}': firewallRuleName\n+            });\n+\n+        this.client.beginRequest(httpRequest).then(async (response) => {\n+            var deferred = Q.defer<azureServiceClient.ApiResult>();\n+            var statusCode = response.statusCode;\n+            tl.debug(\"Response for delete firewall rule \" +statusCode);\n+            if (statusCode != 200 && statusCode != 202 && statusCode !=204) {\n+                // Generate Error\n+                deferred.reject(new azureServiceClient.ApiResult(azureServiceClient.ToError(response)));\n+            }\n+            else {\n+                // Generate Response\n+                deferred.resolve(new azureServiceClient.ApiResult(null, response.body));\n+            }\n+            return deferred.promise;\n+        }).then((apiResult: azureServiceClient.ApiResult) => callback(apiResult.error, apiResult.result),\n+            (error) => callback(error));\n+    }\n+\n+    /**\n+     * Get firewall rule of mysql server\n+     * @param resourceGroupName     resource group name of mysql server \n+     * @param serverName            mysql server name\n+     * @param firewallRuleName      firewall rule name to be deleted \n+     * @param callback              response callback \n+     */\n+    public get(resourceGroupName: string, serverName: string, firewallRuleName: string, callback?:  azureServiceClient.ApiCallback) {\n+        var client = this.client;\n+        if (!callback) {\n+            throw new Error(tl.loc(\"CallbackCannotBeNull\"));\n+        }\n+\n+        // Validate\n+        try {\n+            this.client.isValidResourceGroupName(resourceGroupName);\n+            if(!this.isNameValid(serverName)){\n+                throw new Error(tl.loc(\"MysqlServerNameCannotBeEmpty\"));\n+            }\n+            if(!this.isNameValid(firewallRuleName)){\n+                throw new Error(tl.loc(\"FirewallRuleNameCannotBeNull\"));\n+            }\n+        }\n+        catch (error) {\n+            return callback(error);\n+        }\n+\n+        var httpRequest = new webClient.WebRequest();\n+        httpRequest.method = 'GET';\n+        httpRequest.headers = {};\n+        httpRequest.uri = this.client.getRequestUri(\n+            '//subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DBforMySQL/servers/{serverName}/firewallRules/{firewallRuleName}',\n+            {\n+                '{resourceGroupName}': resourceGroupName,\n+                '{serverName}': serverName,\n+                '{firewallRuleName}': firewallRuleName\n+            });\n+        tl.debug(\"Calling get firewall \");\n+        this.client.beginRequest(httpRequest).then(async (response) => {\n+            var deferred = Q.defer<azureServiceClient.ApiResult>();\n+            var statusCode = response.statusCode;\n+            tl.debug(\"Response for get firewall rule \" +statusCode);\n+            if (statusCode === 200) {\n+                // Generate Response\n+                tl.debug(\"Response for get firewall rule \" + JSON.stringify(response));\n+                deferred.resolve(new azureServiceClient.ApiResult(null, response));\n+            }\n+            else {\n+                // Generate exception\n+                deferred.reject(new azureServiceClient.ApiResult(azureServiceClient.ToError(response)));\n+            }\n+            return deferred.promise;\n+        }).then((apiResult: azureServiceClient.ApiResult) => callback(apiResult.error, apiResult.result),\n+            (error) => callback(error));\n+    }\n+\n+\n+    /**\n+     * Retry get call to check firewall rule has added or not\n+     * @param resourceGroupName     resource group name of mysql server \n+     * @param serverName            mysql server name\n+     * @param firewallRuleName      firewall rule name to be deleted \n+     * @param retryOption           no of time to retry\n+     */\n+    private _recursiveGetCall(resourceGroupName: string, serverName: string, firewallRuleName: string, retryOption: number) : Q.Promise<azureServiceClient.ApiResult>{\n+        var deferred = Q.defer<azureServiceClient.ApiResult>();\n+        setTimeout(() => {\n+            this.get(resourceGroupName, serverName, firewallRuleName, (error, result, request, response) => {\n+                if(error){\n+                    if(retryOption > 0){\n+                        deferred.resolve(this._recursiveGetCall(resourceGroupName, serverName, firewallRuleName, retryOption--));","path":"Tasks/Common/azure-arm-rest/azure-arm-mysql.ts","position":242,"original_position":242,"commit_id":"9fef13b57738ff922f4a6018fcce50c9bea5b244","original_commit_id":"9fef13b57738ff922f4a6018fcce50c9bea5b244","user":{"login":"vincentdass","id":20121508,"avatar_url":"https://avatars3.githubusercontent.com/u/20121508?v=4","gravatar_id":"","url":"https://api.github.com/users/vincentdass","html_url":"https://github.com/vincentdass","followers_url":"https://api.github.com/users/vincentdass/followers","following_url":"https://api.github.com/users/vincentdass/following{/other_user}","gists_url":"https://api.github.com/users/vincentdass/gists{/gist_id}","starred_url":"https://api.github.com/users/vincentdass/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/vincentdass/subscriptions","organizations_url":"https://api.github.com/users/vincentdass/orgs","repos_url":"https://api.github.com/users/vincentdass/repos","events_url":"https://api.github.com/users/vincentdass/events{/privacy}","received_events_url":"https://api.github.com/users/vincentdass/received_events","type":"User","site_admin":false},"body":"not sure about this line.\r\nWe are resolving a promise with a promise.\r\nshouldn't we have like `defer.resolve(await this._recursiveCall)`?","created_at":"2018-02-13T18:15:45Z","updated_at":"2018-02-13T18:27:51Z","html_url":"https://github.com/Microsoft/vsts-tasks/pull/6251#discussion_r167953922","pull_request_url":"https://api.github.com/repos/Microsoft/vsts-tasks/pulls/6251","author_association":"MEMBER","_links":{"self":{"href":"https://api.github.com/repos/Microsoft/vsts-tasks/pulls/comments/167953922"},"html":{"href":"https://github.com/Microsoft/vsts-tasks/pull/6251#discussion_r167953922"},"pull_request":{"href":"https://api.github.com/repos/Microsoft/vsts-tasks/pulls/6251"}}},"pull_request":{"url":"https://api.github.com/repos/Microsoft/vsts-tasks/pulls/6251","id":163738255,"html_url":"https://github.com/Microsoft/vsts-tasks/pull/6251","diff_url":"https://github.com/Microsoft/vsts-tasks/pull/6251.diff","patch_url":"https://github.com/Microsoft/vsts-tasks/pull/6251.patch","issue_url":"https://api.github.com/repos/Microsoft/vsts-tasks/issues/6251","number":6251,"state":"open","locked":false,"title":"Users/rok/mysql task","user":{"login":"rokmicrosoft","id":33001640,"avatar_url":"https://avatars3.githubusercontent.com/u/33001640?v=4","gravatar_id":"","url":"https://api.github.com/users/rokmicrosoft","html_url":"https://github.com/rokmicrosoft","followers_url":"https://api.github.com/users/rokmicrosoft/followers","following_url":"https://api.github.com/users/rokmicrosoft/following{/other_user}","gists_url":"https://api.github.com/users/rokmicrosoft/gists{/gist_id}","starred_url":"https://api.github.com/users/rokmicrosoft/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/rokmicrosoft/subscriptions","organizations_url":"https://api.github.com/users/rokmicrosoft/orgs","repos_url":"https://api.github.com/users/rokmicrosoft/repos","events_url":"https://api.github.com/users/rokmicrosoft/events{/privacy}","received_events_url":"https://api.github.com/users/rokmicrosoft/received_events","type":"User","site_admin":false},"body":"","created_at":"2018-01-18T15:14:29Z","updated_at":"2018-02-13T18:27:51Z","closed_at":null,"merged_at":null,"merge_commit_sha":"5d6d65136eb3c286a5e257248807806ec52827b0","assignee":{"login":"kmkumaran","id":11780076,"avatar_url":"https://avatars2.githubusercontent.com/u/11780076?v=4","gravatar_id":"","url":"https://api.github.com/users/kmkumaran","html_url":"https://github.com/kmkumaran","followers_url":"https://api.github.com/users/kmkumaran/followers","following_url":"https://api.github.com/users/kmkumaran/following{/other_user}","gists_url":"https://api.github.com/users/kmkumaran/gists{/gist_id}","starred_url":"https://api.github.com/users/kmkumaran/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/kmkumaran/subscriptions","organizations_url":"https://api.github.com/users/kmkumaran/orgs","repos_url":"https://api.github.com/users/kmkumaran/repos","events_url":"https://api.github.com/users/kmkumaran/events{/privacy}","received_events_url":"https://api.github.com/users/kmkumaran/received_events","type":"User","site_admin":false},"assignees":[{"login":"kmkumaran","id":11780076,"avatar_url":"https://avatars2.githubusercontent.com/u/11780076?v=4","gravatar_id":"","url":"https://api.github.com/users/kmkumaran","html_url":"https://github.com/kmkumaran","followers_url":"https://api.github.com/users/kmkumaran/followers","following_url":"https://api.github.com/users/kmkumaran/following{/other_user}","gists_url":"https://api.github.com/users/kmkumaran/gists{/gist_id}","starred_url":"https://api.github.com/users/kmkumaran/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/kmkumaran/subscriptions","organizations_url":"https://api.github.com/users/kmkumaran/orgs","repos_url":"https://api.github.com/users/kmkumaran/repos","events_url":"https://api.github.com/users/kmkumaran/events{/privacy}","received_events_url":"https://api.github.com/users/kmkumaran/received_events","type":"User","site_admin":false}],"requested_reviewers":[],"requested_teams":[],"labels":[{"id":391088230,"url":"https://api.github.com/repos/Microsoft/vsts-tasks/labels/Area:%20Release","name":"Area: Release","color":"5319e7","default":false}],"milestone":null,"commits_url":"https://api.github.com/repos/Microsoft/vsts-tasks/pulls/6251/commits","review_comments_url":"https://api.github.com/repos/Microsoft/vsts-tasks/pulls/6251/comments","review_comment_url":"https://api.github.com/repos/Microsoft/vsts-tasks/pulls/comments{/number}","comments_url":"https://api.github.com/repos/Microsoft/vsts-tasks/issues/6251/comments","statuses_url":"https://api.github.com/repos/Microsoft/vsts-tasks/statuses/9fef13b57738ff922f4a6018fcce50c9bea5b244","head":{"label":"Microsoft:users/rok/mysql-task","ref":"users/rok/mysql-task","sha":"9fef13b57738ff922f4a6018fcce50c9bea5b244","user":{"login":"Microsoft","id":6154722,"avatar_url":"https://avatars2.githubusercontent.com/u/6154722?v=4","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":27631673,"name":"vsts-tasks","full_name":"Microsoft/vsts-tasks","owner":{"login":"Microsoft","id":6154722,"avatar_url":"https://avatars2.githubusercontent.com/u/6154722?v=4","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/vsts-tasks","description":"Build and Release Tasks for Visual Studio Team Services and Team Foundation Server","fork":false,"url":"https://api.github.com/repos/Microsoft/vsts-tasks","forks_url":"https://api.github.com/repos/Microsoft/vsts-tasks/forks","keys_url":"https://api.github.com/repos/Microsoft/vsts-tasks/keys{/key_id}","collaborators_url":"https://api.github.com/repos/Microsoft/vsts-tasks/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/Microsoft/vsts-tasks/teams","hooks_url":"https://api.github.com/repos/Microsoft/vsts-tasks/hooks","issue_events_url":"https://api.github.com/repos/Microsoft/vsts-tasks/issues/events{/number}","events_url":"https://api.github.com/repos/Microsoft/vsts-tasks/events","assignees_url":"https://api.github.com/repos/Microsoft/vsts-tasks/assignees{/user}","branches_url":"https://api.github.com/repos/Microsoft/vsts-tasks/branches{/branch}","tags_url":"https://api.github.com/repos/Microsoft/vsts-tasks/tags","blobs_url":"https://api.github.com/repos/Microsoft/vsts-tasks/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/Microsoft/vsts-tasks/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/Microsoft/vsts-tasks/git/refs{/sha}","trees_url":"https://api.github.com/repos/Microsoft/vsts-tasks/git/trees{/sha}","statuses_url":"https://api.github.com/repos/Microsoft/vsts-tasks/statuses/{sha}","languages_url":"https://api.github.com/repos/Microsoft/vsts-tasks/languages","stargazers_url":"https://api.github.com/repos/Microsoft/vsts-tasks/stargazers","contributors_url":"https://api.github.com/repos/Microsoft/vsts-tasks/contributors","subscribers_url":"https://api.github.com/repos/Microsoft/vsts-tasks/subscribers","subscription_url":"https://api.github.com/repos/Microsoft/vsts-tasks/subscription","commits_url":"https://api.github.com/repos/Microsoft/vsts-tasks/commits{/sha}","git_commits_url":"https://api.github.com/repos/Microsoft/vsts-tasks/git/commits{/sha}","comments_url":"https://api.github.com/repos/Microsoft/vsts-tasks/comments{/number}","issue_comment_url":"https://api.github.com/repos/Microsoft/vsts-tasks/issues/comments{/number}","contents_url":"https://api.github.com/repos/Microsoft/vsts-tasks/contents/{+path}","compare_url":"https://api.github.com/repos/Microsoft/vsts-tasks/compare/{base}...{head}","merges_url":"https://api.github.com/repos/Microsoft/vsts-tasks/merges","archive_url":"https://api.github.com/repos/Microsoft/vsts-tasks/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/Microsoft/vsts-tasks/downloads","issues_url":"https://api.github.com/repos/Microsoft/vsts-tasks/issues{/number}","pulls_url":"https://api.github.com/repos/Microsoft/vsts-tasks/pulls{/number}","milestones_url":"https://api.github.com/repos/Microsoft/vsts-tasks/milestones{/number}","notifications_url":"https://api.github.com/repos/Microsoft/vsts-tasks/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/Microsoft/vsts-tasks/labels{/name}","releases_url":"https://api.github.com/repos/Microsoft/vsts-tasks/releases{/id}","deployments_url":"https://api.github.com/repos/Microsoft/vsts-tasks/deployments","created_at":"2014-12-06T11:11:46Z","updated_at":"2018-02-12T13:00:53Z","pushed_at":"2018-02-13T15:45:16Z","git_url":"git://github.com/Microsoft/vsts-tasks.git","ssh_url":"git@github.com:Microsoft/vsts-tasks.git","clone_url":"https://github.com/Microsoft/vsts-tasks.git","svn_url":"https://github.com/Microsoft/vsts-tasks","homepage":"https://aka.ms/tfbuild","size":35142,"stargazers_count":777,"watchers_count":777,"language":"TypeScript","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":719,"mirror_url":null,"archived":false,"open_issues_count":247,"license":{"key":"mit","name":"MIT License","spdx_id":"MIT","url":"https://api.github.com/licenses/mit"},"forks":719,"open_issues":247,"watchers":777,"default_branch":"master"}},"base":{"label":"Microsoft:master","ref":"master","sha":"3d01307a8a1367bad103f0349d76f8cb43f7ef44","user":{"login":"Microsoft","id":6154722,"avatar_url":"https://avatars2.githubusercontent.com/u/6154722?v=4","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":27631673,"name":"vsts-tasks","full_name":"Microsoft/vsts-tasks","owner":{"login":"Microsoft","id":6154722,"avatar_url":"https://avatars2.githubusercontent.com/u/6154722?v=4","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/vsts-tasks","description":"Build and Release Tasks for Visual Studio Team Services and Team Foundation Server","fork":false,"url":"https://api.github.com/repos/Microsoft/vsts-tasks","forks_url":"https://api.github.com/repos/Microsoft/vsts-tasks/forks","keys_url":"https://api.github.com/repos/Microsoft/vsts-tasks/keys{/key_id}","collaborators_url":"https://api.github.com/repos/Microsoft/vsts-tasks/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/Microsoft/vsts-tasks/teams","hooks_url":"https://api.github.com/repos/Microsoft/vsts-tasks/hooks","issue_events_url":"https://api.github.com/repos/Microsoft/vsts-tasks/issues/events{/number}","events_url":"https://api.github.com/repos/Microsoft/vsts-tasks/events","assignees_url":"https://api.github.com/repos/Microsoft/vsts-tasks/assignees{/user}","branches_url":"https://api.github.com/repos/Microsoft/vsts-tasks/branches{/branch}","tags_url":"https://api.github.com/repos/Microsoft/vsts-tasks/tags","blobs_url":"https://api.github.com/repos/Microsoft/vsts-tasks/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/Microsoft/vsts-tasks/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/Microsoft/vsts-tasks/git/refs{/sha}","trees_url":"https://api.github.com/repos/Microsoft/vsts-tasks/git/trees{/sha}","statuses_url":"https://api.github.com/repos/Microsoft/vsts-tasks/statuses/{sha}","languages_url":"https://api.github.com/repos/Microsoft/vsts-tasks/languages","stargazers_url":"https://api.github.com/repos/Microsoft/vsts-tasks/stargazers","contributors_url":"https://api.github.com/repos/Microsoft/vsts-tasks/contributors","subscribers_url":"https://api.github.com/repos/Microsoft/vsts-tasks/subscribers","subscription_url":"https://api.github.com/repos/Microsoft/vsts-tasks/subscription","commits_url":"https://api.github.com/repos/Microsoft/vsts-tasks/commits{/sha}","git_commits_url":"https://api.github.com/repos/Microsoft/vsts-tasks/git/commits{/sha}","comments_url":"https://api.github.com/repos/Microsoft/vsts-tasks/comments{/number}","issue_comment_url":"https://api.github.com/repos/Microsoft/vsts-tasks/issues/comments{/number}","contents_url":"https://api.github.com/repos/Microsoft/vsts-tasks/contents/{+path}","compare_url":"https://api.github.com/repos/Microsoft/vsts-tasks/compare/{base}...{head}","merges_url":"https://api.github.com/repos/Microsoft/vsts-tasks/merges","archive_url":"https://api.github.com/repos/Microsoft/vsts-tasks/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/Microsoft/vsts-tasks/downloads","issues_url":"https://api.github.com/repos/Microsoft/vsts-tasks/issues{/number}","pulls_url":"https://api.github.com/repos/Microsoft/vsts-tasks/pulls{/number}","milestones_url":"https://api.github.com/repos/Microsoft/vsts-tasks/milestones{/number}","notifications_url":"https://api.github.com/repos/Microsoft/vsts-tasks/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/Microsoft/vsts-tasks/labels{/name}","releases_url":"https://api.github.com/repos/Microsoft/vsts-tasks/releases{/id}","deployments_url":"https://api.github.com/repos/Microsoft/vsts-tasks/deployments","created_at":"2014-12-06T11:11:46Z","updated_at":"2018-02-12T13:00:53Z","pushed_at":"2018-02-13T15:45:16Z","git_url":"git://github.com/Microsoft/vsts-tasks.git","ssh_url":"git@github.com:Microsoft/vsts-tasks.git","clone_url":"https://github.com/Microsoft/vsts-tasks.git","svn_url":"https://github.com/Microsoft/vsts-tasks","homepage":"https://aka.ms/tfbuild","size":35142,"stargazers_count":777,"watchers_count":777,"language":"TypeScript","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":719,"mirror_url":null,"archived":false,"open_issues_count":247,"license":{"key":"mit","name":"MIT License","spdx_id":"MIT","url":"https://api.github.com/licenses/mit"},"forks":719,"open_issues":247,"watchers":777,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/Microsoft/vsts-tasks/pulls/6251"},"html":{"href":"https://github.com/Microsoft/vsts-tasks/pull/6251"},"issue":{"href":"https://api.github.com/repos/Microsoft/vsts-tasks/issues/6251"},"comments":{"href":"https://api.github.com/repos/Microsoft/vsts-tasks/issues/6251/comments"},"review_comments":{"href":"https://api.github.com/repos/Microsoft/vsts-tasks/pulls/6251/comments"},"review_comment":{"href":"https://api.github.com/repos/Microsoft/vsts-tasks/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/Microsoft/vsts-tasks/pulls/6251/commits"},"statuses":{"href":"https://api.github.com/repos/Microsoft/vsts-tasks/statuses/9fef13b57738ff922f4a6018fcce50c9bea5b244"}},"author_association":"CONTRIBUTOR"}}
{"actor":{"display_login":"vincentdass"}}