{"action":"created","comment":{"url":"https://api.github.com/repos/Minecolonies/Rankup/pulls/comments/152892173","pull_request_review_id":78823624,"id":152892173,"diff_hunk":"@@ -0,0 +1,524 @@\n+package com.minecolonies.rankup.util;\n+\n+import com.minecolonies.rankup.Rankup;\n+import com.minecolonies.rankup.modules.core.config.AccountConfigData;\n+import com.minecolonies.rankup.modules.databases.DatabaseModule;\n+import org.spongepowered.api.Sponge;\n+import org.spongepowered.api.entity.living.player.User;\n+import org.spongepowered.api.service.sql.SqlService;\n+import org.spongepowered.api.service.user.UserStorageService;\n+import uk.co.drnaylor.quickstart.exceptions.NoModuleException;\n+\n+import javax.sql.DataSource;\n+import java.sql.Connection;\n+import java.sql.ResultSet;\n+import java.sql.SQLException;\n+import java.sql.Statement;\n+import java.util.HashMap;\n+import java.util.UUID;\n+\n+/**\n+ * Lots of accounts based utils (Used for database / file config adaption)\n+ */\n+public class AccountingUtils extends ConfigUtils\n+{\n+\n+    private SqlService sql;\n+    private Connection conn;\n+\n+    private              String table_id           = \"player_stats\";\n+    private static final String UUID_COLUMN        = \"UUID\";\n+    private static final String PLAYER_NAME_COLUMN = \"PLAYER_NAME\";\n+    private static final String JOIN_DATE_COLUMN   = \"JOIN_DATE\";\n+    private static final String LAST_JOIN_COLUMN   = \"LAST_JOIN\";\n+    private static final String TIME_PLAYED_COLUMN = \"TIME_PLAYED\";\n+\n+    public AccountingUtils(final Rankup pl)\n+    {\n+        super(pl);\n+    }\n+\n+    private DataSource getDataSource(String jdbcUrl) throws SQLException\n+    {\n+        table_id = getDatabasesConfig().sqlTablePrefix + \"player_stats\";\n+        if (sql == null)\n+        {\n+            sql = Sponge.getServiceManager().provide(SqlService.class).get();\n+        }\n+        return sql.getDataSource(jdbcUrl);\n+    }\n+\n+    private String getURI()\n+    {\n+        if (getDatabasesConfig().database.equalsIgnoreCase(\"mysql\"))\n+        {\n+            return \"jdbc:mysql://\"\n+                     + getDatabasesConfig().sqlUsername\n+                     + \":\"\n+                     + getDatabasesConfig().sqlPassword\n+                     + \"@\"\n+                     + getDatabasesConfig().sqlAddress\n+                     + \"/\"\n+                     + getDatabasesConfig().sqlDatabase;\n+        }\n+        return \"jdbc:h2:\" + plugin.getConfigDir() + \"/h2/playerstats\";\n+    }\n+\n+    private Connection getConn()\n+    {\n+        if (conn == null)\n+        {\n+            String uri = getURI();\n+            try\n+            {\n+                conn = getDataSource(uri).getConnection();\n+            }\n+            catch (SQLException e)\n+            {\n+                e.printStackTrace();\n+            }\n+        }\n+        return conn;\n+    }\n+\n+    private ResultSet getQuery(final String query)\n+    {\n+        try\n+        {\n+            if (plugin.getModuleContainer().isModuleLoaded(DatabaseModule.ID))\n+            {\n+                final Connection conn = getConn();\n+\n+                if (conn != null)\n+                {\n+                    return conn.createStatement().executeQuery(query);\n+                }\n+            }\n+        }\n+        catch (NoModuleException | SQLException e)\n+        {\n+            e.printStackTrace();\n+        }\n+        return null;\n+    }\n+\n+    private String toDate(final String date)\n+    {\n+        final String newDate = CommonUtils.dateFormat(date);\n+        if (getDatabasesConfig().database.equalsIgnoreCase(\"h2\"))\n+        {\n+            return \"to_date('\" + newDate + \"','yyyy-mm-dd')\";\n+        }\n+        return \"STR_TO_DATE('\" + newDate + \"','%Y-%m-%d')\";\n+    }\n+\n+    public void createTableIfNeeded()\n+    {\n+        try\n+        {\n+            Statement stmt = getConn().createStatement();\n+\n+            stmt.execute(\"CREATE TABLE IF NOT EXISTS \" + table_id + \"(\"\n+                           + UUID_COLUMN + \" varchar(255) NOT NULL, \"\n+                           + PLAYER_NAME_COLUMN + \" varchar(255) NOT NULL, \"\n+                           + JOIN_DATE_COLUMN + \" DATE NOT NULL, \"\n+                           + LAST_JOIN_COLUMN + \" DATE NOT NULL, \"\n+                           + TIME_PLAYED_COLUMN + \" int NOT NULL, \"\n+                           + \"PRIMARY KEY(\" + UUID_COLUMN + \") )\");\n+        }\n+        catch (SQLException e)\n+        {\n+            e.printStackTrace();\n+        }\n+    }\n+\n+    public String getPlayerName(final UUID uuid)\n+    {\n+        try\n+        {\n+            if (plugin.getModuleContainer().isModuleLoaded(DatabaseModule.ID))\n+            {\n+                final ResultSet results = getQuery(\"SELECT \" + PLAYER_NAME_COLUMN + \" FROM \" + table_id + \" WHERE \" + UUID_COLUMN + \" = '\" + uuid + \"'\");\n+\n+                if (results != null && results.next())\n+                {\n+                    return results.getString(PLAYER_NAME_COLUMN);\n+                }\n+            }\n+            else\n+            {\n+                return getAccountConfig().playerData.get(uuid).playerName;\n+            }\n+        }\n+        catch (SQLException | NoModuleException e)\n+        {\n+            e.printStackTrace();\n+        }\n+        return \"\";\n+    }\n+\n+    public String getPlayerJoinDate(final UUID uuid)\n+    {\n+        try\n+        {\n+            if (plugin.getModuleContainer().isModuleLoaded(DatabaseModule.ID))\n+            {\n+                final ResultSet results = getQuery(\"SELECT \" + JOIN_DATE_COLUMN + \" FROM \" + table_id + \" WHERE \" + UUID_COLUMN + \" = '\" + uuid + \"'\");\n+\n+                if (results != null && results.next())\n+                {\n+                    return results.getDate(JOIN_DATE_COLUMN).toString();\n+                }\n+            }\n+            else\n+            {\n+                return getAccountConfig().playerData.get(uuid).joinDate;\n+            }\n+        }\n+        catch (SQLException | NoModuleException e)\n+        {\n+            e.printStackTrace();\n+        }\n+        return \"\";\n+    }\n+\n+    public String getPlayerLastDate(final UUID uuid)\n+    {\n+        try\n+        {\n+            if (plugin.getModuleContainer().isModuleLoaded(DatabaseModule.ID))\n+            {\n+                final ResultSet results = getQuery(\"SELECT \" + LAST_JOIN_COLUMN + \" FROM \" + table_id + \" WHERE \" + UUID_COLUMN + \" = '\" + uuid + \"'\");\n+\n+                if (results != null && results.next())\n+                {\n+                    return results.getDate(LAST_JOIN_COLUMN).toString();\n+                }\n+            }\n+            else\n+            {\n+                return getAccountConfig().playerData.get(uuid).lastVisit;\n+            }\n+        }\n+        catch (SQLException | NoModuleException e)\n+        {\n+            e.printStackTrace();\n+        }\n+        return \"\";\n+    }\n+\n+    public int getPlayerTime(final UUID uuid)\n+    {\n+        try\n+        {\n+            if (plugin.getModuleContainer().isModuleLoaded(DatabaseModule.ID))\n+            {\n+                final ResultSet results = getQuery(\"SELECT \" + TIME_PLAYED_COLUMN + \" FROM \" + table_id + \" WHERE \" + UUID_COLUMN + \" = '\" + uuid + \"'\");\n+\n+                if (results != null && results.next())\n+                {\n+                    return results.getInt(TIME_PLAYED_COLUMN);\n+                }\n+            }\n+            else\n+            {\n+                return getAccountConfig().playerData.get(uuid).timePlayed;\n+            }\n+        }\n+        catch (SQLException | NoModuleException e)\n+        {\n+            e.printStackTrace();\n+        }\n+        return 0;\n+    }\n+\n+    private void updatePlayerAttribute(final UUID uuid, final String column, final String attribute, final boolean isDate) throws SQLException\n+    {\n+        final Connection conn = getConn();\n+\n+        if (conn != null)\n+        {\n+            Statement stmt = conn.createStatement();\n+\n+            if (isDate)\n+            {\n+                stmt.execute(\"UPDATE \" + table_id + \" SET \" + column + \" = \" + toDate(attribute) + \" WHERE \" + UUID_COLUMN + \" = '\" + uuid + \"'\");\n+            }\n+            else\n+            {\n+                stmt.execute(\"UPDATE \" + table_id + \" SET \" + column + \" = '\" + attribute + \"' WHERE \" + UUID_COLUMN + \" = '\" + uuid + \"'\");\n+            }\n+        }\n+    }\n+\n+    private void updatePlayerAttribute(final UUID uuid, final String column, final int attribute) throws SQLException\n+    {\n+        final Connection conn = getConn();\n+\n+        if (conn != null)\n+        {\n+            Statement stmt = conn.createStatement();\n+\n+            stmt.execute(\"UPDATE \" + table_id + \" SET \" + column + \" = \" + attribute + \" WHERE \" + UUID_COLUMN + \" = '\" + uuid + \"'\");\n+        }\n+    }\n+\n+    public void updatePlayerName(final UUID uuid, final String name)\n+    {\n+        try\n+        {\n+            if (plugin.getModuleContainer().isModuleLoaded(DatabaseModule.ID))\n+            {\n+                updatePlayerAttribute(uuid, PLAYER_NAME_COLUMN, name, false);\n+            }\n+            else\n+            {\n+                final AccountConfigData accConfig = getAccountConfig();\n+                accConfig.playerData.get(uuid).playerName = name;\n+                accConfig.save();\n+            }\n+        }\n+        catch (SQLException | NoModuleException e)\n+        {\n+            e.printStackTrace();\n+        }\n+    }\n+\n+    public void updatePlayerJoinDate(final UUID uuid, final String date)\n+    {\n+        try\n+        {\n+            if (plugin.getModuleContainer().isModuleLoaded(DatabaseModule.ID))\n+            {\n+                updatePlayerAttribute(uuid, JOIN_DATE_COLUMN, date, true);\n+            }\n+            else\n+            {\n+\n+                final AccountConfigData accConfig = getAccountConfig();\n+                accConfig.playerData.get(uuid).joinDate = CommonUtils.dateFormat(date);\n+                accConfig.save();\n+            }\n+        }\n+        catch (SQLException | NoModuleException e)\n+        {\n+            e.printStackTrace();\n+        }\n+    }\n+\n+    public void updatePlayerLastDate(final UUID uuid, final String date)\n+    {\n+        try\n+        {\n+            if (plugin.getModuleContainer().isModuleLoaded(DatabaseModule.ID))\n+            {\n+                updatePlayerAttribute(uuid, LAST_JOIN_COLUMN, date, true);\n+            }\n+            else\n+            {\n+                final AccountConfigData accConfig = getAccountConfig();\n+                accConfig.playerData.get(uuid).lastVisit = CommonUtils.dateFormat(date);\n+                accConfig.save();\n+            }\n+        }\n+        catch (SQLException | NoModuleException e)\n+        {\n+            e.printStackTrace();\n+        }\n+    }\n+\n+    public void updatePlayerTime(final UUID uuid, final int time)\n+    {\n+        try\n+        {\n+            if (plugin.getModuleContainer().isModuleLoaded(DatabaseModule.ID))\n+            {\n+                updatePlayerAttribute(uuid, TIME_PLAYED_COLUMN, time);\n+            }\n+            else\n+            {\n+                final AccountConfigData accConfig = getAccountConfig();\n+                accConfig.playerData.get(uuid).timePlayed = time;\n+                accConfig.save();\n+            }\n+        }\n+        catch (SQLException | NoModuleException e)\n+        {\n+            e.printStackTrace();\n+        }\n+    }\n+\n+    public int addPlayerTime(final UUID uuid, final int time)\n+    {\n+        try\n+        {\n+            if (plugin.getModuleContainer().isModuleLoaded(DatabaseModule.ID))\n+            {\n+                final int timeToAdd = getPlayerTime(uuid) + time;\n+                updatePlayerTime(uuid, timeToAdd);\n+                return timeToAdd;\n+            }\n+            else\n+            {\n+                final AccountConfigData accConfig = getAccountConfig();\n+                final int timeToAdd = accConfig.playerData.get(uuid).timePlayed + time;\n+                accConfig.playerData.get(uuid).timePlayed = timeToAdd;\n+                accConfig.save();\n+                return timeToAdd;\n+            }\n+        }\n+        catch (NoModuleException e)","path":"src/main/java/com/minecolonies/rankup/util/AccountingUtils.java","position":370,"original_position":370,"commit_id":"660c04f12402aa5dc6bddd34cd133cc085adbf9c","original_commit_id":"660c04f12402aa5dc6bddd34cd133cc085adbf9c","user":{"login":"Asherslab","id":28527281,"avatar_url":"https://avatars1.githubusercontent.com/u/28527281?v=4","gravatar_id":"","url":"https://api.github.com/users/Asherslab","html_url":"https://github.com/Asherslab","followers_url":"https://api.github.com/users/Asherslab/followers","following_url":"https://api.github.com/users/Asherslab/following{/other_user}","gists_url":"https://api.github.com/users/Asherslab/gists{/gist_id}","starred_url":"https://api.github.com/users/Asherslab/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Asherslab/subscriptions","organizations_url":"https://api.github.com/users/Asherslab/orgs","repos_url":"https://api.github.com/users/Asherslab/repos","events_url":"https://api.github.com/users/Asherslab/events{/privacy}","received_events_url":"https://api.github.com/users/Asherslab/received_events","type":"User","site_admin":false},"body":"![MAJOR](https://sonarsource.github.io/sonar-github/severity-major.png 'Severity: MAJOR') Either log or rethrow this exception. [![rule](https://sonarsource.github.io/sonar-github/rule.png)](https://sonar.orionminecraft.com/coding_rules#rule_key=squid%3AS1166)\n","created_at":"2017-11-24T03:19:30Z","updated_at":"2017-11-24T03:19:30Z","html_url":"https://github.com/Minecolonies/Rankup/pull/9#discussion_r152892173","pull_request_url":"https://api.github.com/repos/Minecolonies/Rankup/pulls/9","author_association":"MEMBER","_links":{"self":{"href":"https://api.github.com/repos/Minecolonies/Rankup/pulls/comments/152892173"},"html":{"href":"https://github.com/Minecolonies/Rankup/pull/9#discussion_r152892173"},"pull_request":{"href":"https://api.github.com/repos/Minecolonies/Rankup/pulls/9"}}},"pull_request":{"url":"https://api.github.com/repos/Minecolonies/Rankup/pulls/9","id":154461603,"html_url":"https://github.com/Minecolonies/Rankup/pull/9","diff_url":"https://github.com/Minecolonies/Rankup/pull/9.diff","patch_url":"https://github.com/Minecolonies/Rankup/pull/9.patch","issue_url":"https://api.github.com/repos/Minecolonies/Rankup/issues/9","number":9,"state":"open","locked":false,"title":"API-7 Concurrent Tracks and MySQL","user":{"login":"Asherslab","id":28527281,"avatar_url":"https://avatars1.githubusercontent.com/u/28527281?v=4","gravatar_id":"","url":"https://api.github.com/users/Asherslab","html_url":"https://github.com/Asherslab","followers_url":"https://api.github.com/users/Asherslab/followers","following_url":"https://api.github.com/users/Asherslab/following{/other_user}","gists_url":"https://api.github.com/users/Asherslab/gists{/gist_id}","starred_url":"https://api.github.com/users/Asherslab/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Asherslab/subscriptions","organizations_url":"https://api.github.com/users/Asherslab/orgs","repos_url":"https://api.github.com/users/Asherslab/repos","events_url":"https://api.github.com/users/Asherslab/events{/privacy}","received_events_url":"https://api.github.com/users/Asherslab/received_events","type":"User","site_admin":false},"body":"Integrates both branches / PRs into one to make for a simpler merge","created_at":"2017-11-24T01:46:18Z","updated_at":"2017-11-24T03:19:30Z","closed_at":null,"merged_at":null,"merge_commit_sha":"883ea70ef1a9db5421530dffb3f25c1b29639151","assignee":null,"assignees":[],"requested_reviewers":[],"milestone":null,"commits_url":"https://api.github.com/repos/Minecolonies/Rankup/pulls/9/commits","review_comments_url":"https://api.github.com/repos/Minecolonies/Rankup/pulls/9/comments","review_comment_url":"https://api.github.com/repos/Minecolonies/Rankup/pulls/comments{/number}","comments_url":"https://api.github.com/repos/Minecolonies/Rankup/issues/9/comments","statuses_url":"https://api.github.com/repos/Minecolonies/Rankup/statuses/660c04f12402aa5dc6bddd34cd133cc085adbf9c","head":{"label":"Minecolonies:API-7/feature/sql-plus-concurrant","ref":"API-7/feature/sql-plus-concurrant","sha":"660c04f12402aa5dc6bddd34cd133cc085adbf9c","user":{"login":"Minecolonies","id":5167336,"avatar_url":"https://avatars3.githubusercontent.com/u/5167336?v=4","gravatar_id":"","url":"https://api.github.com/users/Minecolonies","html_url":"https://github.com/Minecolonies","followers_url":"https://api.github.com/users/Minecolonies/followers","following_url":"https://api.github.com/users/Minecolonies/following{/other_user}","gists_url":"https://api.github.com/users/Minecolonies/gists{/gist_id}","starred_url":"https://api.github.com/users/Minecolonies/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Minecolonies/subscriptions","organizations_url":"https://api.github.com/users/Minecolonies/orgs","repos_url":"https://api.github.com/users/Minecolonies/repos","events_url":"https://api.github.com/users/Minecolonies/events{/privacy}","received_events_url":"https://api.github.com/users/Minecolonies/received_events","type":"Organization","site_admin":false},"repo":{"id":98035758,"name":"Rankup","full_name":"Minecolonies/Rankup","owner":{"login":"Minecolonies","id":5167336,"avatar_url":"https://avatars3.githubusercontent.com/u/5167336?v=4","gravatar_id":"","url":"https://api.github.com/users/Minecolonies","html_url":"https://github.com/Minecolonies","followers_url":"https://api.github.com/users/Minecolonies/followers","following_url":"https://api.github.com/users/Minecolonies/following{/other_user}","gists_url":"https://api.github.com/users/Minecolonies/gists{/gist_id}","starred_url":"https://api.github.com/users/Minecolonies/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Minecolonies/subscriptions","organizations_url":"https://api.github.com/users/Minecolonies/orgs","repos_url":"https://api.github.com/users/Minecolonies/repos","events_url":"https://api.github.com/users/Minecolonies/events{/privacy}","received_events_url":"https://api.github.com/users/Minecolonies/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/Minecolonies/Rankup","description":"Minecraft Sponge Auto-ranking plugin","fork":false,"url":"https://api.github.com/repos/Minecolonies/Rankup","forks_url":"https://api.github.com/repos/Minecolonies/Rankup/forks","keys_url":"https://api.github.com/repos/Minecolonies/Rankup/keys{/key_id}","collaborators_url":"https://api.github.com/repos/Minecolonies/Rankup/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/Minecolonies/Rankup/teams","hooks_url":"https://api.github.com/repos/Minecolonies/Rankup/hooks","issue_events_url":"https://api.github.com/repos/Minecolonies/Rankup/issues/events{/number}","events_url":"https://api.github.com/repos/Minecolonies/Rankup/events","assignees_url":"https://api.github.com/repos/Minecolonies/Rankup/assignees{/user}","branches_url":"https://api.github.com/repos/Minecolonies/Rankup/branches{/branch}","tags_url":"https://api.github.com/repos/Minecolonies/Rankup/tags","blobs_url":"https://api.github.com/repos/Minecolonies/Rankup/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/Minecolonies/Rankup/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/Minecolonies/Rankup/git/refs{/sha}","trees_url":"https://api.github.com/repos/Minecolonies/Rankup/git/trees{/sha}","statuses_url":"https://api.github.com/repos/Minecolonies/Rankup/statuses/{sha}","languages_url":"https://api.github.com/repos/Minecolonies/Rankup/languages","stargazers_url":"https://api.github.com/repos/Minecolonies/Rankup/stargazers","contributors_url":"https://api.github.com/repos/Minecolonies/Rankup/contributors","subscribers_url":"https://api.github.com/repos/Minecolonies/Rankup/subscribers","subscription_url":"https://api.github.com/repos/Minecolonies/Rankup/subscription","commits_url":"https://api.github.com/repos/Minecolonies/Rankup/commits{/sha}","git_commits_url":"https://api.github.com/repos/Minecolonies/Rankup/git/commits{/sha}","comments_url":"https://api.github.com/repos/Minecolonies/Rankup/comments{/number}","issue_comment_url":"https://api.github.com/repos/Minecolonies/Rankup/issues/comments{/number}","contents_url":"https://api.github.com/repos/Minecolonies/Rankup/contents/{+path}","compare_url":"https://api.github.com/repos/Minecolonies/Rankup/compare/{base}...{head}","merges_url":"https://api.github.com/repos/Minecolonies/Rankup/merges","archive_url":"https://api.github.com/repos/Minecolonies/Rankup/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/Minecolonies/Rankup/downloads","issues_url":"https://api.github.com/repos/Minecolonies/Rankup/issues{/number}","pulls_url":"https://api.github.com/repos/Minecolonies/Rankup/pulls{/number}","milestones_url":"https://api.github.com/repos/Minecolonies/Rankup/milestones{/number}","notifications_url":"https://api.github.com/repos/Minecolonies/Rankup/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/Minecolonies/Rankup/labels{/name}","releases_url":"https://api.github.com/repos/Minecolonies/Rankup/releases{/id}","deployments_url":"https://api.github.com/repos/Minecolonies/Rankup/deployments","created_at":"2017-07-22T14:16:01Z","updated_at":"2017-11-07T11:32:26Z","pushed_at":"2017-11-24T01:46:19Z","git_url":"git://github.com/Minecolonies/Rankup.git","ssh_url":"git@github.com:Minecolonies/Rankup.git","clone_url":"https://github.com/Minecolonies/Rankup.git","svn_url":"https://github.com/Minecolonies/Rankup","homepage":"","size":6460,"stargazers_count":3,"watchers_count":3,"language":"Java","has_issues":true,"has_projects":false,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":0,"mirror_url":null,"archived":false,"open_issues_count":4,"forks":0,"open_issues":4,"watchers":3,"default_branch":"API-7/release"}},"base":{"label":"Minecolonies:API-7/release","ref":"API-7/release","sha":"e71095eeecedc982b5affa4e9759682accdca7a6","user":{"login":"Minecolonies","id":5167336,"avatar_url":"https://avatars3.githubusercontent.com/u/5167336?v=4","gravatar_id":"","url":"https://api.github.com/users/Minecolonies","html_url":"https://github.com/Minecolonies","followers_url":"https://api.github.com/users/Minecolonies/followers","following_url":"https://api.github.com/users/Minecolonies/following{/other_user}","gists_url":"https://api.github.com/users/Minecolonies/gists{/gist_id}","starred_url":"https://api.github.com/users/Minecolonies/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Minecolonies/subscriptions","organizations_url":"https://api.github.com/users/Minecolonies/orgs","repos_url":"https://api.github.com/users/Minecolonies/repos","events_url":"https://api.github.com/users/Minecolonies/events{/privacy}","received_events_url":"https://api.github.com/users/Minecolonies/received_events","type":"Organization","site_admin":false},"repo":{"id":98035758,"name":"Rankup","full_name":"Minecolonies/Rankup","owner":{"login":"Minecolonies","id":5167336,"avatar_url":"https://avatars3.githubusercontent.com/u/5167336?v=4","gravatar_id":"","url":"https://api.github.com/users/Minecolonies","html_url":"https://github.com/Minecolonies","followers_url":"https://api.github.com/users/Minecolonies/followers","following_url":"https://api.github.com/users/Minecolonies/following{/other_user}","gists_url":"https://api.github.com/users/Minecolonies/gists{/gist_id}","starred_url":"https://api.github.com/users/Minecolonies/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Minecolonies/subscriptions","organizations_url":"https://api.github.com/users/Minecolonies/orgs","repos_url":"https://api.github.com/users/Minecolonies/repos","events_url":"https://api.github.com/users/Minecolonies/events{/privacy}","received_events_url":"https://api.github.com/users/Minecolonies/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/Minecolonies/Rankup","description":"Minecraft Sponge Auto-ranking plugin","fork":false,"url":"https://api.github.com/repos/Minecolonies/Rankup","forks_url":"https://api.github.com/repos/Minecolonies/Rankup/forks","keys_url":"https://api.github.com/repos/Minecolonies/Rankup/keys{/key_id}","collaborators_url":"https://api.github.com/repos/Minecolonies/Rankup/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/Minecolonies/Rankup/teams","hooks_url":"https://api.github.com/repos/Minecolonies/Rankup/hooks","issue_events_url":"https://api.github.com/repos/Minecolonies/Rankup/issues/events{/number}","events_url":"https://api.github.com/repos/Minecolonies/Rankup/events","assignees_url":"https://api.github.com/repos/Minecolonies/Rankup/assignees{/user}","branches_url":"https://api.github.com/repos/Minecolonies/Rankup/branches{/branch}","tags_url":"https://api.github.com/repos/Minecolonies/Rankup/tags","blobs_url":"https://api.github.com/repos/Minecolonies/Rankup/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/Minecolonies/Rankup/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/Minecolonies/Rankup/git/refs{/sha}","trees_url":"https://api.github.com/repos/Minecolonies/Rankup/git/trees{/sha}","statuses_url":"https://api.github.com/repos/Minecolonies/Rankup/statuses/{sha}","languages_url":"https://api.github.com/repos/Minecolonies/Rankup/languages","stargazers_url":"https://api.github.com/repos/Minecolonies/Rankup/stargazers","contributors_url":"https://api.github.com/repos/Minecolonies/Rankup/contributors","subscribers_url":"https://api.github.com/repos/Minecolonies/Rankup/subscribers","subscription_url":"https://api.github.com/repos/Minecolonies/Rankup/subscription","commits_url":"https://api.github.com/repos/Minecolonies/Rankup/commits{/sha}","git_commits_url":"https://api.github.com/repos/Minecolonies/Rankup/git/commits{/sha}","comments_url":"https://api.github.com/repos/Minecolonies/Rankup/comments{/number}","issue_comment_url":"https://api.github.com/repos/Minecolonies/Rankup/issues/comments{/number}","contents_url":"https://api.github.com/repos/Minecolonies/Rankup/contents/{+path}","compare_url":"https://api.github.com/repos/Minecolonies/Rankup/compare/{base}...{head}","merges_url":"https://api.github.com/repos/Minecolonies/Rankup/merges","archive_url":"https://api.github.com/repos/Minecolonies/Rankup/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/Minecolonies/Rankup/downloads","issues_url":"https://api.github.com/repos/Minecolonies/Rankup/issues{/number}","pulls_url":"https://api.github.com/repos/Minecolonies/Rankup/pulls{/number}","milestones_url":"https://api.github.com/repos/Minecolonies/Rankup/milestones{/number}","notifications_url":"https://api.github.com/repos/Minecolonies/Rankup/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/Minecolonies/Rankup/labels{/name}","releases_url":"https://api.github.com/repos/Minecolonies/Rankup/releases{/id}","deployments_url":"https://api.github.com/repos/Minecolonies/Rankup/deployments","created_at":"2017-07-22T14:16:01Z","updated_at":"2017-11-07T11:32:26Z","pushed_at":"2017-11-24T01:46:19Z","git_url":"git://github.com/Minecolonies/Rankup.git","ssh_url":"git@github.com:Minecolonies/Rankup.git","clone_url":"https://github.com/Minecolonies/Rankup.git","svn_url":"https://github.com/Minecolonies/Rankup","homepage":"","size":6460,"stargazers_count":3,"watchers_count":3,"language":"Java","has_issues":true,"has_projects":false,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":0,"mirror_url":null,"archived":false,"open_issues_count":4,"forks":0,"open_issues":4,"watchers":3,"default_branch":"API-7/release"}},"_links":{"self":{"href":"https://api.github.com/repos/Minecolonies/Rankup/pulls/9"},"html":{"href":"https://github.com/Minecolonies/Rankup/pull/9"},"issue":{"href":"https://api.github.com/repos/Minecolonies/Rankup/issues/9"},"comments":{"href":"https://api.github.com/repos/Minecolonies/Rankup/issues/9/comments"},"review_comments":{"href":"https://api.github.com/repos/Minecolonies/Rankup/pulls/9/comments"},"review_comment":{"href":"https://api.github.com/repos/Minecolonies/Rankup/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/Minecolonies/Rankup/pulls/9/commits"},"statuses":{"href":"https://api.github.com/repos/Minecolonies/Rankup/statuses/660c04f12402aa5dc6bddd34cd133cc085adbf9c"}},"author_association":"MEMBER"}}
{"actor":{"display_login":"Asherslab"}}