{"action":"created","comment":{"url":"https://api.github.com/repos/yegor256/rultor/pulls/comments/23133676","id":23133676,"diff_hunk":"@@ -0,0 +1,75 @@\n+/**\n+ * Copyright (c) 2009-2015, rultor.com\n+ * All rights reserved.\n+ *\n+ * Redistribution and use in source and binary forms, with or without\n+ * modification, are permitted provided that the following conditions\n+ * are met: 1) Redistributions of source code must retain the above\n+ * copyright notice, this list of conditions and the following\n+ * disclaimer. 2) Redistributions in binary form must reproduce the above\n+ * copyright notice, this list of conditions and the following\n+ * disclaimer in the documentation and/or other materials provided\n+ * with the distribution. 3) Neither the name of the rultor.com nor\n+ * the names of its contributors may be used to endorse or promote\n+ * products derived from this software without specific prior written\n+ * permission.\n+ *\n+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n+ * \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT\n+ * NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND\n+ * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL\n+ * THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n+ * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\n+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)\n+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,\n+ * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED\n+ * OF THE POSSIBILITY OF SUCH DAMAGE.\n+ */\n+package com.rultor.agents.build;\n+\n+/**\n+ * Build service response.\n+ *\n+ * @author Eugene Bukhtin (maurezen@gmail.com)\n+ * @version $Id$\n+ * @since 1.0\n+ */\n+public class Response {\n+\n+    /**\n+     * Message.\n+     */\n+    private final String message;\n+    /**\n+     * Build status.\n+     */\n+    private final Status status;\n+\n+    /**\n+     * Constructor.\n+     * @param msg Message.\n+     * @param stts Build status.\n+     */\n+    public Response(final String msg, final Status stts) {\n+        this.message = msg;\n+        this.status = stts;\n+    }\n+\n+    /**\n+     * Message getter.\n+     * @return Message.\n+     */\n+    public final String getMessage() {\n+        return this.message;\n+    }\n+\n+    /**\n+     * Status getter.\n+     * @return Build status.\n+     */\n+    public final Status getStatus() {","path":"src/main/java/com/rultor/agents/build/Response.java","position":72,"original_position":72,"commit_id":"b214501222380ecc7c21417b31018f038477a55f","original_commit_id":"b214501222380ecc7c21417b31018f038477a55f","user":{"login":"carlosmiranda","id":1917892,"avatar_url":"https://avatars.githubusercontent.com/u/1917892?v=3","gravatar_id":"","url":"https://api.github.com/users/carlosmiranda","html_url":"https://github.com/carlosmiranda","followers_url":"https://api.github.com/users/carlosmiranda/followers","following_url":"https://api.github.com/users/carlosmiranda/following{/other_user}","gists_url":"https://api.github.com/users/carlosmiranda/gists{/gist_id}","starred_url":"https://api.github.com/users/carlosmiranda/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/carlosmiranda/subscriptions","organizations_url":"https://api.github.com/users/carlosmiranda/orgs","repos_url":"https://api.github.com/users/carlosmiranda/repos","events_url":"https://api.github.com/users/carlosmiranda/events{/privacy}","received_events_url":"https://api.github.com/users/carlosmiranda/received_events","type":"User","site_admin":false},"body":"Same here.","created_at":"2015-01-18T14:33:12Z","updated_at":"2015-01-18T14:33:12Z","html_url":"https://github.com/yegor256/rultor/pull/737#discussion_r23133676","pull_request_url":"https://api.github.com/repos/yegor256/rultor/pulls/737","_links":{"self":{"href":"https://api.github.com/repos/yegor256/rultor/pulls/comments/23133676"},"html":{"href":"https://github.com/yegor256/rultor/pull/737#discussion_r23133676"},"pull_request":{"href":"https://api.github.com/repos/yegor256/rultor/pulls/737"}}},"pull_request":{"url":"https://api.github.com/repos/yegor256/rultor/pulls/737","id":27466965,"html_url":"https://github.com/yegor256/rultor/pull/737","diff_url":"https://github.com/yegor256/rultor/pull/737.diff","patch_url":"https://github.com/yegor256/rultor/pull/737.patch","issue_url":"https://api.github.com/repos/yegor256/rultor/issues/737","number":737,"state":"open","locked":false,"title":"#722 - BuildService interface","user":{"login":"maurezen","id":569536,"avatar_url":"https://avatars.githubusercontent.com/u/569536?v=3","gravatar_id":"","url":"https://api.github.com/users/maurezen","html_url":"https://github.com/maurezen","followers_url":"https://api.github.com/users/maurezen/followers","following_url":"https://api.github.com/users/maurezen/following{/other_user}","gists_url":"https://api.github.com/users/maurezen/gists{/gist_id}","starred_url":"https://api.github.com/users/maurezen/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/maurezen/subscriptions","organizations_url":"https://api.github.com/users/maurezen/orgs","repos_url":"https://api.github.com/users/maurezen/repos","events_url":"https://api.github.com/users/maurezen/events{/privacy}","received_events_url":"https://api.github.com/users/maurezen/received_events","type":"User","site_admin":false},"body":"@yegor256 having a think about this now. Where do I complain loudly about documentation? It is patchy. Also, I would very much appreciate an overview of the project architecture. \r\n\r\nAnyway, let's go on. My suggestions this far:\r\n - We can add an additional section right away, the parser will not break.\r\n - We need to add the code to interpret the added services section.\r\n - We have the code to run the arbitrary script (in DockerRun).\r\n - We need the code to run the build process on a service supplied in a service section.Will 'com.rultor.agents.build' do as a location?\r\n  - A build service interface with the method to run it against a supplied github repo, returning build status (preferrably asynchronously).\r\n  - An implementation for AppVeyor, constructed from the info supplied in config, being able to send the actual build request. Seeing as config parsing is just hardcoded everywhere, this probably will be the place for the code to interpret the appveyor service section of the config.\r\n  - The code to wait for the build service response and react to it (post&run scripts or just post).","created_at":"2015-01-15T22:10:34Z","updated_at":"2015-01-18T14:33:12Z","closed_at":null,"merged_at":null,"merge_commit_sha":"3e70ddc3534bfd9fa5e6def40929c93157d7d33f","assignee":null,"milestone":null,"commits_url":"https://api.github.com/repos/yegor256/rultor/pulls/737/commits","review_comments_url":"https://api.github.com/repos/yegor256/rultor/pulls/737/comments","review_comment_url":"https://api.github.com/repos/yegor256/rultor/pulls/comments/{number}","comments_url":"https://api.github.com/repos/yegor256/rultor/issues/737/comments","statuses_url":"https://api.github.com/repos/yegor256/rultor/statuses/b214501222380ecc7c21417b31018f038477a55f","head":{"label":"maurezen:722","ref":"722","sha":"b214501222380ecc7c21417b31018f038477a55f","user":{"login":"maurezen","id":569536,"avatar_url":"https://avatars.githubusercontent.com/u/569536?v=3","gravatar_id":"","url":"https://api.github.com/users/maurezen","html_url":"https://github.com/maurezen","followers_url":"https://api.github.com/users/maurezen/followers","following_url":"https://api.github.com/users/maurezen/following{/other_user}","gists_url":"https://api.github.com/users/maurezen/gists{/gist_id}","starred_url":"https://api.github.com/users/maurezen/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/maurezen/subscriptions","organizations_url":"https://api.github.com/users/maurezen/orgs","repos_url":"https://api.github.com/users/maurezen/repos","events_url":"https://api.github.com/users/maurezen/events{/privacy}","received_events_url":"https://api.github.com/users/maurezen/received_events","type":"User","site_admin":false},"repo":{"id":28786787,"name":"rultor","full_name":"maurezen/rultor","owner":{"login":"maurezen","id":569536,"avatar_url":"https://avatars.githubusercontent.com/u/569536?v=3","gravatar_id":"","url":"https://api.github.com/users/maurezen","html_url":"https://github.com/maurezen","followers_url":"https://api.github.com/users/maurezen/followers","following_url":"https://api.github.com/users/maurezen/following{/other_user}","gists_url":"https://api.github.com/users/maurezen/gists{/gist_id}","starred_url":"https://api.github.com/users/maurezen/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/maurezen/subscriptions","organizations_url":"https://api.github.com/users/maurezen/orgs","repos_url":"https://api.github.com/users/maurezen/repos","events_url":"https://api.github.com/users/maurezen/events{/privacy}","received_events_url":"https://api.github.com/users/maurezen/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/maurezen/rultor","description":"DevOps Team Assistant","fork":true,"url":"https://api.github.com/repos/maurezen/rultor","forks_url":"https://api.github.com/repos/maurezen/rultor/forks","keys_url":"https://api.github.com/repos/maurezen/rultor/keys{/key_id}","collaborators_url":"https://api.github.com/repos/maurezen/rultor/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/maurezen/rultor/teams","hooks_url":"https://api.github.com/repos/maurezen/rultor/hooks","issue_events_url":"https://api.github.com/repos/maurezen/rultor/issues/events{/number}","events_url":"https://api.github.com/repos/maurezen/rultor/events","assignees_url":"https://api.github.com/repos/maurezen/rultor/assignees{/user}","branches_url":"https://api.github.com/repos/maurezen/rultor/branches{/branch}","tags_url":"https://api.github.com/repos/maurezen/rultor/tags","blobs_url":"https://api.github.com/repos/maurezen/rultor/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/maurezen/rultor/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/maurezen/rultor/git/refs{/sha}","trees_url":"https://api.github.com/repos/maurezen/rultor/git/trees{/sha}","statuses_url":"https://api.github.com/repos/maurezen/rultor/statuses/{sha}","languages_url":"https://api.github.com/repos/maurezen/rultor/languages","stargazers_url":"https://api.github.com/repos/maurezen/rultor/stargazers","contributors_url":"https://api.github.com/repos/maurezen/rultor/contributors","subscribers_url":"https://api.github.com/repos/maurezen/rultor/subscribers","subscription_url":"https://api.github.com/repos/maurezen/rultor/subscription","commits_url":"https://api.github.com/repos/maurezen/rultor/commits{/sha}","git_commits_url":"https://api.github.com/repos/maurezen/rultor/git/commits{/sha}","comments_url":"https://api.github.com/repos/maurezen/rultor/comments{/number}","issue_comment_url":"https://api.github.com/repos/maurezen/rultor/issues/comments/{number}","contents_url":"https://api.github.com/repos/maurezen/rultor/contents/{+path}","compare_url":"https://api.github.com/repos/maurezen/rultor/compare/{base}...{head}","merges_url":"https://api.github.com/repos/maurezen/rultor/merges","archive_url":"https://api.github.com/repos/maurezen/rultor/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/maurezen/rultor/downloads","issues_url":"https://api.github.com/repos/maurezen/rultor/issues{/number}","pulls_url":"https://api.github.com/repos/maurezen/rultor/pulls{/number}","milestones_url":"https://api.github.com/repos/maurezen/rultor/milestones{/number}","notifications_url":"https://api.github.com/repos/maurezen/rultor/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/maurezen/rultor/labels{/name}","releases_url":"https://api.github.com/repos/maurezen/rultor/releases{/id}","created_at":"2015-01-04T21:36:48Z","updated_at":"2015-01-14T23:32:50Z","pushed_at":"2015-01-15T22:08:51Z","git_url":"git://github.com/maurezen/rultor.git","ssh_url":"git@github.com:maurezen/rultor.git","clone_url":"https://github.com/maurezen/rultor.git","svn_url":"https://github.com/maurezen/rultor","homepage":"www.rultor.com","size":64296,"stargazers_count":0,"watchers_count":0,"language":"Java","has_issues":false,"has_downloads":true,"has_wiki":true,"has_pages":true,"forks_count":0,"mirror_url":null,"open_issues_count":0,"forks":0,"open_issues":0,"watchers":0,"default_branch":"master"}},"base":{"label":"yegor256:master","ref":"master","sha":"6f747080c114e5dac62614424c67a5e87a5499de","user":{"login":"yegor256","id":526301,"avatar_url":"https://avatars.githubusercontent.com/u/526301?v=3","gravatar_id":"","url":"https://api.github.com/users/yegor256","html_url":"https://github.com/yegor256","followers_url":"https://api.github.com/users/yegor256/followers","following_url":"https://api.github.com/users/yegor256/following{/other_user}","gists_url":"https://api.github.com/users/yegor256/gists{/gist_id}","starred_url":"https://api.github.com/users/yegor256/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/yegor256/subscriptions","organizations_url":"https://api.github.com/users/yegor256/orgs","repos_url":"https://api.github.com/users/yegor256/repos","events_url":"https://api.github.com/users/yegor256/events{/privacy}","received_events_url":"https://api.github.com/users/yegor256/received_events","type":"User","site_admin":false},"repo":{"id":8271291,"name":"rultor","full_name":"yegor256/rultor","owner":{"login":"yegor256","id":526301,"avatar_url":"https://avatars.githubusercontent.com/u/526301?v=3","gravatar_id":"","url":"https://api.github.com/users/yegor256","html_url":"https://github.com/yegor256","followers_url":"https://api.github.com/users/yegor256/followers","following_url":"https://api.github.com/users/yegor256/following{/other_user}","gists_url":"https://api.github.com/users/yegor256/gists{/gist_id}","starred_url":"https://api.github.com/users/yegor256/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/yegor256/subscriptions","organizations_url":"https://api.github.com/users/yegor256/orgs","repos_url":"https://api.github.com/users/yegor256/repos","events_url":"https://api.github.com/users/yegor256/events{/privacy}","received_events_url":"https://api.github.com/users/yegor256/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/yegor256/rultor","description":"DevOps Team Assistant","fork":false,"url":"https://api.github.com/repos/yegor256/rultor","forks_url":"https://api.github.com/repos/yegor256/rultor/forks","keys_url":"https://api.github.com/repos/yegor256/rultor/keys{/key_id}","collaborators_url":"https://api.github.com/repos/yegor256/rultor/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/yegor256/rultor/teams","hooks_url":"https://api.github.com/repos/yegor256/rultor/hooks","issue_events_url":"https://api.github.com/repos/yegor256/rultor/issues/events{/number}","events_url":"https://api.github.com/repos/yegor256/rultor/events","assignees_url":"https://api.github.com/repos/yegor256/rultor/assignees{/user}","branches_url":"https://api.github.com/repos/yegor256/rultor/branches{/branch}","tags_url":"https://api.github.com/repos/yegor256/rultor/tags","blobs_url":"https://api.github.com/repos/yegor256/rultor/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/yegor256/rultor/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/yegor256/rultor/git/refs{/sha}","trees_url":"https://api.github.com/repos/yegor256/rultor/git/trees{/sha}","statuses_url":"https://api.github.com/repos/yegor256/rultor/statuses/{sha}","languages_url":"https://api.github.com/repos/yegor256/rultor/languages","stargazers_url":"https://api.github.com/repos/yegor256/rultor/stargazers","contributors_url":"https://api.github.com/repos/yegor256/rultor/contributors","subscribers_url":"https://api.github.com/repos/yegor256/rultor/subscribers","subscription_url":"https://api.github.com/repos/yegor256/rultor/subscription","commits_url":"https://api.github.com/repos/yegor256/rultor/commits{/sha}","git_commits_url":"https://api.github.com/repos/yegor256/rultor/git/commits{/sha}","comments_url":"https://api.github.com/repos/yegor256/rultor/comments{/number}","issue_comment_url":"https://api.github.com/repos/yegor256/rultor/issues/comments/{number}","contents_url":"https://api.github.com/repos/yegor256/rultor/contents/{+path}","compare_url":"https://api.github.com/repos/yegor256/rultor/compare/{base}...{head}","merges_url":"https://api.github.com/repos/yegor256/rultor/merges","archive_url":"https://api.github.com/repos/yegor256/rultor/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/yegor256/rultor/downloads","issues_url":"https://api.github.com/repos/yegor256/rultor/issues{/number}","pulls_url":"https://api.github.com/repos/yegor256/rultor/pulls{/number}","milestones_url":"https://api.github.com/repos/yegor256/rultor/milestones{/number}","notifications_url":"https://api.github.com/repos/yegor256/rultor/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/yegor256/rultor/labels{/name}","releases_url":"https://api.github.com/repos/yegor256/rultor/releases{/id}","created_at":"2013-02-18T15:39:50Z","updated_at":"2015-01-17T20:51:07Z","pushed_at":"2015-01-17T20:51:07Z","git_url":"git://github.com/yegor256/rultor.git","ssh_url":"git@github.com:yegor256/rultor.git","clone_url":"https://github.com/yegor256/rultor.git","svn_url":"https://github.com/yegor256/rultor","homepage":"www.rultor.com","size":77049,"stargazers_count":63,"watchers_count":63,"language":"Java","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":true,"forks_count":31,"mirror_url":null,"open_issues_count":24,"forks":31,"open_issues":24,"watchers":63,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/yegor256/rultor/pulls/737"},"html":{"href":"https://github.com/yegor256/rultor/pull/737"},"issue":{"href":"https://api.github.com/repos/yegor256/rultor/issues/737"},"comments":{"href":"https://api.github.com/repos/yegor256/rultor/issues/737/comments"},"review_comments":{"href":"https://api.github.com/repos/yegor256/rultor/pulls/737/comments"},"review_comment":{"href":"https://api.github.com/repos/yegor256/rultor/pulls/comments/{number}"},"commits":{"href":"https://api.github.com/repos/yegor256/rultor/pulls/737/commits"},"statuses":{"href":"https://api.github.com/repos/yegor256/rultor/statuses/b214501222380ecc7c21417b31018f038477a55f"}}}}