{"action":"created","comment":{"url":"https://api.github.com/repos/itesla/ipst-core/pulls/comments/111326994","pull_request_review_id":32556957,"id":111326994,"diff_hunk":"@@ -0,0 +1,266 @@\n+/**\n+ * Copyright (c) 2017, RTE (http://www.rte-france.com)\n+ * This Source Code Form is subject to the terms of the Mozilla Public\n+ * License, v. 2.0. If a copy of the MPL was not distributed with this\n+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n+ */\n+package eu.itesla_project.loadflow.validation;\n+\n+import java.io.IOException;\n+import java.io.OutputStreamWriter;\n+import java.io.Writer;\n+import java.nio.charset.StandardCharsets;\n+import java.nio.file.Files;\n+import java.nio.file.Path;\n+import java.util.Objects;\n+import java.util.stream.Collectors;\n+import java.util.stream.StreamSupport;\n+\n+import org.slf4j.Logger;\n+import org.slf4j.LoggerFactory;\n+\n+import eu.itesla_project.commons.io.table.Column;\n+import eu.itesla_project.commons.io.table.TableFormatter;\n+import eu.itesla_project.commons.io.table.TableFormatterConfig;\n+import eu.itesla_project.commons.io.table.TableFormatterFactory;\n+import eu.itesla_project.iidm.network.Bus;\n+import eu.itesla_project.iidm.network.Line;\n+import eu.itesla_project.iidm.network.Network;\n+import eu.itesla_project.iidm.network.TwoWindingsTransformer;\n+\n+/**\n+ *\n+ * @author Geoffroy Jamgotchian <geoffroy.jamgotchian at rte-france.com>\n+ */\n+public class Networks {\n+\n+    private static final Logger LOGGER = LoggerFactory.getLogger(Networks.class);\n+\n+    private Networks() {\n+    }\n+\n+    private static double EPSILON_X = 0.01;\n+    private static TableFormatterConfig TABLE_FORMATTER_CONFIG = TableFormatterConfig.load();\n+    private static Column[] COLUMNS = {\n+        new Column(\"id\"),\n+        new Column(\"characteristic\"),\n+        new Column(\"value\")\n+    };\n+    \n+    private static Writer createStdOutputWriter() {\n+        return new OutputStreamWriter(System.out) {\n+            @Override\n+            public void close() throws IOException {\n+                flush();\n+            };\n+         };\n+    }\n+    \n+    public static boolean checkFlows(String id, double r, double x, double rho1, double rho2, double u1, double u2, double theta1, double theta2, double alpha1,\n+                                     double alpha2, double g1, double g2, double b1, double b2, float p1, float q1, float p2, float q2, CheckFlowsConfig config) \n+                                             throws IOException, InstantiationException, IllegalAccessException {\n+        Objects.requireNonNull(id);\n+        TableFormatterFactory factory = config.getTableFormatterFactory().newInstance();\n+        try (Writer writer = createStdOutputWriter();\n+             TableFormatter formatter = factory.create(writer, id + \" flow check\", TABLE_FORMATTER_CONFIG, COLUMNS)) {\n+            return checkFlows(id, r, x, rho1, rho2, u1, u2, theta1, theta2, alpha1, alpha2, g1, g2, b1, b2, p1, q1, p2, q2, config.getThreshold(), config.isVerbose(), formatter);\n+        }\n+    }\n+\n+    private static boolean checkFlows(String id, double r, double x, double rho1, double rho2, double u1, double u2, double theta1, double theta2, double alpha1,\n+                                      double alpha2, double g1, double g2, double b1, double b2, float p1, float q1, float p2, float q2, float threshold,\n+                                      boolean verbose, TableFormatter formatter) throws IOException {\n+        if (Math.abs(x) < EPSILON_X) {\n+            // LOGGER.info(\"x \" + x + \" -> \" + EPSILON_X);\n+            // x = EPSILON_X;\n+        }\n+        double z = Math.hypot(r, x);\n+        double y = 1 / z;\n+        double ksi = Math.atan2(r, x);\n+        double p1_calc = rho1 * rho2 * u1 * u2 * y * Math.sin(theta1 - theta2 - ksi + alpha1 - alpha2) + rho1 * rho1 * u1 * u1 * (y * Math.sin(ksi) + g1);\n+        double q1_calc = - rho1 * rho2 * u1 * u2 * y * Math.cos(theta1 - theta2 - ksi + alpha1 - alpha2) + rho1 * rho1 * u1 * u1 * (y * Math.cos(ksi) - b1);\n+        double p2_calc = rho2 * rho1 * u2 * u1 * y * Math.sin(theta2 - theta1 - ksi + alpha2 - alpha1) + rho2 * rho2 * u2 * u2 * (y * Math.sin(ksi) + g2);\n+        double q2_calc = - rho2 * rho1 * u2 * u1 * y * Math.cos(theta2 - theta1 - ksi + alpha2 - alpha1) + rho2 * rho2 * u2 * u2 * (y * Math.cos(ksi) - b2);\n+\n+        formatter.writeCell(id).writeCell(\"network_p1\").writeCell(p1)\n+                 .writeCell(id).writeCell(\"expected_p1\").writeCell(p1_calc)\n+                 .writeCell(id).writeCell(\"network_q1\").writeCell(q1)\n+                 .writeCell(id).writeCell(\"expected_q1\").writeCell(q1_calc)\n+                 .writeCell(id).writeCell(\"network_p2\").writeCell(p2)\n+                 .writeCell(id).writeCell(\"expected_p2\").writeCell(p2_calc)\n+                 .writeCell(id).writeCell(\"network_q2\").writeCell(q2)\n+                 .writeCell(id).writeCell(\"expected_q2\").writeCell(q2_calc);\n+\n+        if (verbose) {\n+            formatter.writeCell(id).writeCell(\"r\").writeCell(r)\n+                     .writeCell(id).writeCell(\"x\").writeCell(x)\n+                     .writeCell(id).writeCell(\"g1\").writeCell(g1)\n+                     .writeCell(id).writeCell(\"g2\").writeCell(g2)\n+                     .writeCell(id).writeCell(\"b1\").writeCell(b1)\n+                     .writeCell(id).writeCell(\"b2\").writeCell(b2)\n+                     .writeCell(id).writeCell(\"rh01\").writeCell(rho1)\n+                     .writeCell(id).writeCell(\"rho2\").writeCell(rho2)\n+                     .writeCell(id).writeCell(\"alpha1\").writeCell(alpha1)\n+                     .writeCell(id).writeCell(\"alpha2\").writeCell(alpha2)\n+                     .writeCell(id).writeCell(\"u1\").writeCell(u1)\n+                     .writeCell(id).writeCell(\"u2\").writeCell(u2)\n+                     .writeCell(id).writeCell(\"theta1\").writeCell(theta1)\n+                     .writeCell(id).writeCell(\"theta2\").writeCell(theta2)\n+                     .writeCell(id).writeCell(\"z\").writeCell(z)\n+                     .writeCell(id).writeCell(\"y\").writeCell(y)\n+                     .writeCell(id).writeCell(\"ksi\").writeCell(ksi);\n+        }\n+        boolean ok = true;\n+        if (Math.abs(p1 - p1_calc) > threshold) {\n+            LOGGER.warn(id + \" P1 \" + p1 + \" \" + p1_calc);\n+            ok = false;\n+        }\n+        if (Math.abs(q1 - q1_calc) > threshold) {\n+            LOGGER.warn(id + \" Q1 \" + q1 + \" \" + q1_calc);\n+            ok = false;\n+        }\n+        if (Math.abs(p2 - p2_calc) > threshold) {\n+            LOGGER.warn(id + \" P2 \" + p2 + \" \" + p2_calc);\n+            ok = false;\n+        }\n+        if (Math.abs(q2 - q2_calc) > threshold) {\n+            LOGGER.warn(id + \" Q2 \" + q2 + \" \" + q2_calc);\n+            ok = false;\n+        }\n+        return ok;\n+    }\n+    \n+    public static boolean checkFlows(Line l, CheckFlowsConfig config) throws IOException, InstantiationException, IllegalAccessException {\n+        Objects.requireNonNull(l);\n+        TableFormatterFactory factory = config.getTableFormatterFactory().newInstance();\n+        try (Writer writer = createStdOutputWriter();\n+             TableFormatter formatter = factory.create(writer, l.getId() + \" flow check\", TABLE_FORMATTER_CONFIG, COLUMNS)) {\n+            return checkFlows(l, config.getThreshold(), config.isVerbose(), formatter);\n+        }\n+    }\n+\n+    private static boolean checkFlows(Line l, float threshold, boolean verbose, TableFormatter formatter) throws IOException {","path":"loadflow-validation/src/main/java/eu/itesla_project/loadflow/validation/Networks.java","position":142,"original_position":142,"commit_id":"0d76f36c607ff00272d0e85ab3eb8d1f02901595","original_commit_id":"0d76f36c607ff00272d0e85ab3eb8d1f02901595","user":{"login":"mathbagu","id":17516110,"avatar_url":"https://avatars2.githubusercontent.com/u/17516110?v=3","gravatar_id":"","url":"https://api.github.com/users/mathbagu","html_url":"https://github.com/mathbagu","followers_url":"https://api.github.com/users/mathbagu/followers","following_url":"https://api.github.com/users/mathbagu/following{/other_user}","gists_url":"https://api.github.com/users/mathbagu/gists{/gist_id}","starred_url":"https://api.github.com/users/mathbagu/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mathbagu/subscriptions","organizations_url":"https://api.github.com/users/mathbagu/orgs","repos_url":"https://api.github.com/users/mathbagu/repos","events_url":"https://api.github.com/users/mathbagu/events{/privacy}","received_events_url":"https://api.github.com/users/mathbagu/received_events","type":"User","site_admin":false},"body":"Pass the CheckFlowsConfig instead of threshold and verbose","created_at":"2017-04-13T07:34:39Z","updated_at":"2017-04-13T07:41:08Z","html_url":"https://github.com/itesla/ipst-core/pull/88#discussion_r111326994","pull_request_url":"https://api.github.com/repos/itesla/ipst-core/pulls/88","_links":{"self":{"href":"https://api.github.com/repos/itesla/ipst-core/pulls/comments/111326994"},"html":{"href":"https://github.com/itesla/ipst-core/pull/88#discussion_r111326994"},"pull_request":{"href":"https://api.github.com/repos/itesla/ipst-core/pulls/88"}}},"pull_request":{"url":"https://api.github.com/repos/itesla/ipst-core/pulls/88","id":114190455,"html_url":"https://github.com/itesla/ipst-core/pull/88","diff_url":"https://github.com/itesla/ipst-core/pull/88.diff","patch_url":"https://github.com/itesla/ipst-core/pull/88.patch","issue_url":"https://api.github.com/repos/itesla/ipst-core/issues/88","number":88,"state":"open","locked":false,"title":"Loadflow validation","user":{"login":"massimo-ferraro","id":18351105,"avatar_url":"https://avatars3.githubusercontent.com/u/18351105?v=3","gravatar_id":"","url":"https://api.github.com/users/massimo-ferraro","html_url":"https://github.com/massimo-ferraro","followers_url":"https://api.github.com/users/massimo-ferraro/followers","following_url":"https://api.github.com/users/massimo-ferraro/following{/other_user}","gists_url":"https://api.github.com/users/massimo-ferraro/gists{/gist_id}","starred_url":"https://api.github.com/users/massimo-ferraro/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/massimo-ferraro/subscriptions","organizations_url":"https://api.github.com/users/massimo-ferraro/orgs","repos_url":"https://api.github.com/users/massimo-ferraro/repos","events_url":"https://api.github.com/users/massimo-ferraro/events{/privacy}","received_events_url":"https://api.github.com/users/massimo-ferraro/received_events","type":"User","site_admin":false},"body":"Add loadflow-validation module, implement check-flows itools command","created_at":"2017-04-04T16:27:03Z","updated_at":"2017-04-13T07:41:08Z","closed_at":null,"merged_at":null,"merge_commit_sha":"00f20c2d80958ae691a9261f0b89b1484f984dbc","assignee":null,"assignees":[],"milestone":null,"commits_url":"https://api.github.com/repos/itesla/ipst-core/pulls/88/commits","review_comments_url":"https://api.github.com/repos/itesla/ipst-core/pulls/88/comments","review_comment_url":"https://api.github.com/repos/itesla/ipst-core/pulls/comments{/number}","comments_url":"https://api.github.com/repos/itesla/ipst-core/issues/88/comments","statuses_url":"https://api.github.com/repos/itesla/ipst-core/statuses/0d76f36c607ff00272d0e85ab3eb8d1f02901595","head":{"label":"itesla:loadflow_validation","ref":"loadflow_validation","sha":"0d76f36c607ff00272d0e85ab3eb8d1f02901595","user":{"login":"itesla","id":15378215,"avatar_url":"https://avatars1.githubusercontent.com/u/15378215?v=3","gravatar_id":"","url":"https://api.github.com/users/itesla","html_url":"https://github.com/itesla","followers_url":"https://api.github.com/users/itesla/followers","following_url":"https://api.github.com/users/itesla/following{/other_user}","gists_url":"https://api.github.com/users/itesla/gists{/gist_id}","starred_url":"https://api.github.com/users/itesla/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/itesla/subscriptions","organizations_url":"https://api.github.com/users/itesla/orgs","repos_url":"https://api.github.com/users/itesla/repos","events_url":"https://api.github.com/users/itesla/events{/privacy}","received_events_url":"https://api.github.com/users/itesla/received_events","type":"Organization","site_admin":false},"repo":{"id":75061348,"name":"ipst-core","full_name":"itesla/ipst-core","owner":{"login":"itesla","id":15378215,"avatar_url":"https://avatars1.githubusercontent.com/u/15378215?v=3","gravatar_id":"","url":"https://api.github.com/users/itesla","html_url":"https://github.com/itesla","followers_url":"https://api.github.com/users/itesla/followers","following_url":"https://api.github.com/users/itesla/following{/other_user}","gists_url":"https://api.github.com/users/itesla/gists{/gist_id}","starred_url":"https://api.github.com/users/itesla/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/itesla/subscriptions","organizations_url":"https://api.github.com/users/itesla/orgs","repos_url":"https://api.github.com/users/itesla/repos","events_url":"https://api.github.com/users/itesla/events{/privacy}","received_events_url":"https://api.github.com/users/itesla/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/itesla/ipst-core","description":null,"fork":false,"url":"https://api.github.com/repos/itesla/ipst-core","forks_url":"https://api.github.com/repos/itesla/ipst-core/forks","keys_url":"https://api.github.com/repos/itesla/ipst-core/keys{/key_id}","collaborators_url":"https://api.github.com/repos/itesla/ipst-core/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/itesla/ipst-core/teams","hooks_url":"https://api.github.com/repos/itesla/ipst-core/hooks","issue_events_url":"https://api.github.com/repos/itesla/ipst-core/issues/events{/number}","events_url":"https://api.github.com/repos/itesla/ipst-core/events","assignees_url":"https://api.github.com/repos/itesla/ipst-core/assignees{/user}","branches_url":"https://api.github.com/repos/itesla/ipst-core/branches{/branch}","tags_url":"https://api.github.com/repos/itesla/ipst-core/tags","blobs_url":"https://api.github.com/repos/itesla/ipst-core/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/itesla/ipst-core/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/itesla/ipst-core/git/refs{/sha}","trees_url":"https://api.github.com/repos/itesla/ipst-core/git/trees{/sha}","statuses_url":"https://api.github.com/repos/itesla/ipst-core/statuses/{sha}","languages_url":"https://api.github.com/repos/itesla/ipst-core/languages","stargazers_url":"https://api.github.com/repos/itesla/ipst-core/stargazers","contributors_url":"https://api.github.com/repos/itesla/ipst-core/contributors","subscribers_url":"https://api.github.com/repos/itesla/ipst-core/subscribers","subscription_url":"https://api.github.com/repos/itesla/ipst-core/subscription","commits_url":"https://api.github.com/repos/itesla/ipst-core/commits{/sha}","git_commits_url":"https://api.github.com/repos/itesla/ipst-core/git/commits{/sha}","comments_url":"https://api.github.com/repos/itesla/ipst-core/comments{/number}","issue_comment_url":"https://api.github.com/repos/itesla/ipst-core/issues/comments{/number}","contents_url":"https://api.github.com/repos/itesla/ipst-core/contents/{+path}","compare_url":"https://api.github.com/repos/itesla/ipst-core/compare/{base}...{head}","merges_url":"https://api.github.com/repos/itesla/ipst-core/merges","archive_url":"https://api.github.com/repos/itesla/ipst-core/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/itesla/ipst-core/downloads","issues_url":"https://api.github.com/repos/itesla/ipst-core/issues{/number}","pulls_url":"https://api.github.com/repos/itesla/ipst-core/pulls{/number}","milestones_url":"https://api.github.com/repos/itesla/ipst-core/milestones{/number}","notifications_url":"https://api.github.com/repos/itesla/ipst-core/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/itesla/ipst-core/labels{/name}","releases_url":"https://api.github.com/repos/itesla/ipst-core/releases{/id}","deployments_url":"https://api.github.com/repos/itesla/ipst-core/deployments","created_at":"2016-11-29T08:46:42Z","updated_at":"2016-12-13T15:12:50Z","pushed_at":"2017-04-11T19:30:04Z","git_url":"git://github.com/itesla/ipst-core.git","ssh_url":"git@github.com:itesla/ipst-core.git","clone_url":"https://github.com/itesla/ipst-core.git","svn_url":"https://github.com/itesla/ipst-core","homepage":null,"size":4831,"stargazers_count":1,"watchers_count":1,"language":"Java","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":1,"mirror_url":null,"open_issues_count":20,"forks":1,"open_issues":20,"watchers":1,"default_branch":"master"}},"base":{"label":"itesla:master","ref":"master","sha":"37affa39c9d23ed6932f59801bf017e93868dacd","user":{"login":"itesla","id":15378215,"avatar_url":"https://avatars1.githubusercontent.com/u/15378215?v=3","gravatar_id":"","url":"https://api.github.com/users/itesla","html_url":"https://github.com/itesla","followers_url":"https://api.github.com/users/itesla/followers","following_url":"https://api.github.com/users/itesla/following{/other_user}","gists_url":"https://api.github.com/users/itesla/gists{/gist_id}","starred_url":"https://api.github.com/users/itesla/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/itesla/subscriptions","organizations_url":"https://api.github.com/users/itesla/orgs","repos_url":"https://api.github.com/users/itesla/repos","events_url":"https://api.github.com/users/itesla/events{/privacy}","received_events_url":"https://api.github.com/users/itesla/received_events","type":"Organization","site_admin":false},"repo":{"id":75061348,"name":"ipst-core","full_name":"itesla/ipst-core","owner":{"login":"itesla","id":15378215,"avatar_url":"https://avatars1.githubusercontent.com/u/15378215?v=3","gravatar_id":"","url":"https://api.github.com/users/itesla","html_url":"https://github.com/itesla","followers_url":"https://api.github.com/users/itesla/followers","following_url":"https://api.github.com/users/itesla/following{/other_user}","gists_url":"https://api.github.com/users/itesla/gists{/gist_id}","starred_url":"https://api.github.com/users/itesla/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/itesla/subscriptions","organizations_url":"https://api.github.com/users/itesla/orgs","repos_url":"https://api.github.com/users/itesla/repos","events_url":"https://api.github.com/users/itesla/events{/privacy}","received_events_url":"https://api.github.com/users/itesla/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/itesla/ipst-core","description":null,"fork":false,"url":"https://api.github.com/repos/itesla/ipst-core","forks_url":"https://api.github.com/repos/itesla/ipst-core/forks","keys_url":"https://api.github.com/repos/itesla/ipst-core/keys{/key_id}","collaborators_url":"https://api.github.com/repos/itesla/ipst-core/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/itesla/ipst-core/teams","hooks_url":"https://api.github.com/repos/itesla/ipst-core/hooks","issue_events_url":"https://api.github.com/repos/itesla/ipst-core/issues/events{/number}","events_url":"https://api.github.com/repos/itesla/ipst-core/events","assignees_url":"https://api.github.com/repos/itesla/ipst-core/assignees{/user}","branches_url":"https://api.github.com/repos/itesla/ipst-core/branches{/branch}","tags_url":"https://api.github.com/repos/itesla/ipst-core/tags","blobs_url":"https://api.github.com/repos/itesla/ipst-core/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/itesla/ipst-core/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/itesla/ipst-core/git/refs{/sha}","trees_url":"https://api.github.com/repos/itesla/ipst-core/git/trees{/sha}","statuses_url":"https://api.github.com/repos/itesla/ipst-core/statuses/{sha}","languages_url":"https://api.github.com/repos/itesla/ipst-core/languages","stargazers_url":"https://api.github.com/repos/itesla/ipst-core/stargazers","contributors_url":"https://api.github.com/repos/itesla/ipst-core/contributors","subscribers_url":"https://api.github.com/repos/itesla/ipst-core/subscribers","subscription_url":"https://api.github.com/repos/itesla/ipst-core/subscription","commits_url":"https://api.github.com/repos/itesla/ipst-core/commits{/sha}","git_commits_url":"https://api.github.com/repos/itesla/ipst-core/git/commits{/sha}","comments_url":"https://api.github.com/repos/itesla/ipst-core/comments{/number}","issue_comment_url":"https://api.github.com/repos/itesla/ipst-core/issues/comments{/number}","contents_url":"https://api.github.com/repos/itesla/ipst-core/contents/{+path}","compare_url":"https://api.github.com/repos/itesla/ipst-core/compare/{base}...{head}","merges_url":"https://api.github.com/repos/itesla/ipst-core/merges","archive_url":"https://api.github.com/repos/itesla/ipst-core/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/itesla/ipst-core/downloads","issues_url":"https://api.github.com/repos/itesla/ipst-core/issues{/number}","pulls_url":"https://api.github.com/repos/itesla/ipst-core/pulls{/number}","milestones_url":"https://api.github.com/repos/itesla/ipst-core/milestones{/number}","notifications_url":"https://api.github.com/repos/itesla/ipst-core/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/itesla/ipst-core/labels{/name}","releases_url":"https://api.github.com/repos/itesla/ipst-core/releases{/id}","deployments_url":"https://api.github.com/repos/itesla/ipst-core/deployments","created_at":"2016-11-29T08:46:42Z","updated_at":"2016-12-13T15:12:50Z","pushed_at":"2017-04-11T19:30:04Z","git_url":"git://github.com/itesla/ipst-core.git","ssh_url":"git@github.com:itesla/ipst-core.git","clone_url":"https://github.com/itesla/ipst-core.git","svn_url":"https://github.com/itesla/ipst-core","homepage":null,"size":4831,"stargazers_count":1,"watchers_count":1,"language":"Java","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":1,"mirror_url":null,"open_issues_count":20,"forks":1,"open_issues":20,"watchers":1,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/itesla/ipst-core/pulls/88"},"html":{"href":"https://github.com/itesla/ipst-core/pull/88"},"issue":{"href":"https://api.github.com/repos/itesla/ipst-core/issues/88"},"comments":{"href":"https://api.github.com/repos/itesla/ipst-core/issues/88/comments"},"review_comments":{"href":"https://api.github.com/repos/itesla/ipst-core/pulls/88/comments"},"review_comment":{"href":"https://api.github.com/repos/itesla/ipst-core/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/itesla/ipst-core/pulls/88/commits"},"statuses":{"href":"https://api.github.com/repos/itesla/ipst-core/statuses/0d76f36c607ff00272d0e85ab3eb8d1f02901595"}}}}
{"actor":{"display_login":"mathbagu"}}