{"action":"created","comment":{"url":"https://api.github.com/repos/keboola/db-extractor-common/pulls/comments/227693942","pull_request_review_id":167791963,"id":227693942,"node_id":"MDI0OlB1bGxSZXF1ZXN0UmV2aWV3Q29tbWVudDIyNzY5Mzk0Mg==","diff_hunk":"@@ -0,0 +1,333 @@\n+<?php\n+\n+declare(strict_types=1);\n+\n+namespace Keboola\\DbExtractorCommon;\n+\n+use Keboola\\Component\\BaseComponent;\n+use Keboola\\Component\\Logger;\n+use Keboola\\Component\\UserException;\n+use Keboola\\Csv\\CsvWriter;\n+use Keboola\\Datatype\\Definition\\GenericStorage;\n+use Keboola\\DbExtractorCommon\\Configuration\\Definition\\ActionConfigDefinition;\n+use Keboola\\DbExtractorCommon\\Configuration\\BaseExtractorConfig;\n+use Keboola\\DbExtractorCommon\\Configuration\\Definition\\ConfigDefinition;\n+use Keboola\\DbExtractorCommon\\Configuration\\Definition\\ConfigRowDefinition;\n+use Keboola\\DbExtractorCommon\\Configuration\\DatabaseParameters;\n+use Keboola\\DbExtractorCommon\\Configuration\\SshParameters;\n+use Keboola\\DbExtractorCommon\\Configuration\\TableDetailParameters;\n+use Keboola\\DbExtractorCommon\\Configuration\\TableParameters;\n+use Keboola\\DbExtractorCommon\\Exception\\DeadConnectionException;\n+use Keboola\\SSHTunnel\\SSH;\n+use Keboola\\SSHTunnel\\SSHException;\n+use Monolog\\Handler\\NullHandler;\n+use Nette\\Utils\\Strings;\n+use Symfony\\Component\\Config\\Definition\\Exception\\Exception as ConfigException;\n+use Symfony\\Component\\Serializer\\Encoder\\JsonEncode;\n+use Symfony\\Component\\Serializer\\Encoder\\JsonEncoder;\n+\n+abstract class BaseExtractor extends BaseComponent\n+{\n+    public const DEFAULT_MAX_TRIES = 5;\n+\n+    /** @var array */\n+    protected $dbParameters;\n+\n+    /** @var array */\n+    protected $state;\n+\n+    public function __construct(Logger $logger)\n+    {\n+        parent::__construct($logger);\n+        if ($this->getConfig()->getAction() !== 'run') {\n+            $logger->setHandlers([new NullHandler(Logger::INFO)]);\n+        }\n+    }\n+\n+    abstract public function extract(BaseExtractorConfig $config): array;\n+\n+    /**\n+     * @param TableDetailParameters[] $tables\n+     *\n+     * @return array\n+     */\n+    abstract public function getTables(array $tables = []): array;\n+\n+    abstract public function testConnection(): void;\n+\n+    public function run(): void\n+    {\n+        /** @var BaseExtractorConfig $config */\n+        $config = $this->getConfig();\n+        $dbParameters = $config->getDbParameters();\n+        $sshParameters = $config->getSshParameters();\n+        $action = $config->getAction();\n+\n+        if ($sshParameters\n+            && $sshParameters->getEnabled()\n+        ) {\n+            $dbParameters = $this->createSshTunnel($sshParameters, $dbParameters);\n+            $config->setDbParameters($dbParameters);\n+        }\n+\n+        try {\n+            switch ($action) {\n+                case 'run':\n+                    $this->validateParameters($config);\n+                    $result = $this->extract($config);\n+                    if (!empty($result['state'])) {\n+                        // write state\n+                        $outputStateFile = $this->getDataDir() . '/out/state.json';\n+                        $jsonEncode = new JsonEncode();\n+                        file_put_contents(\n+                            $outputStateFile,\n+                            $jsonEncode->encode($result['state'], JsonEncoder::FORMAT)\n+                        );\n+                    }\n+                    break;\n+                case 'testConnection':\n+                    $this->testConnection();","path":"src/BaseExtractor.php","position":80,"original_position":89,"commit_id":"3b0a0f30ef7871e34fb83180daa683d1399ed5cd","original_commit_id":"923e4fb62e2b74d6e23c65d473bc8adb3d37b033","user":{"login":"odinuv","id":4319320,"node_id":"MDQ6VXNlcjQzMTkzMjA=","avatar_url":"https://avatars0.githubusercontent.com/u/4319320?v=4","gravatar_id":"","url":"https://api.github.com/users/odinuv","html_url":"https://github.com/odinuv","followers_url":"https://api.github.com/users/odinuv/followers","following_url":"https://api.github.com/users/odinuv/following{/other_user}","gists_url":"https://api.github.com/users/odinuv/gists{/gist_id}","starred_url":"https://api.github.com/users/odinuv/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/odinuv/subscriptions","organizations_url":"https://api.github.com/users/odinuv/orgs","repos_url":"https://api.github.com/users/odinuv/repos","events_url":"https://api.github.com/users/odinuv/events{/privacy}","received_events_url":"https://api.github.com/users/odinuv/received_events","type":"User","site_admin":false},"body":"coz je blbe, ma se to vyhodit nahoru jako UserException, coz je presne to co dela `isAlive`","created_at":"2018-10-24T08:44:29Z","updated_at":"2018-10-24T08:44:29Z","html_url":"https://github.com/keboola/db-extractor-common/pull/94#discussion_r227693942","pull_request_url":"https://api.github.com/repos/keboola/db-extractor-common/pulls/94","author_association":"CONTRIBUTOR","_links":{"self":{"href":"https://api.github.com/repos/keboola/db-extractor-common/pulls/comments/227693942"},"html":{"href":"https://github.com/keboola/db-extractor-common/pull/94#discussion_r227693942"},"pull_request":{"href":"https://api.github.com/repos/keboola/db-extractor-common/pulls/94"}},"in_reply_to_id":226306612},"pull_request":{"url":"https://api.github.com/repos/keboola/db-extractor-common/pulls/94","id":219161022,"node_id":"MDExOlB1bGxSZXF1ZXN0MjE5MTYxMDIy","html_url":"https://github.com/keboola/db-extractor-common/pull/94","diff_url":"https://github.com/keboola/db-extractor-common/pull/94.diff","patch_url":"https://github.com/keboola/db-extractor-common/pull/94.patch","issue_url":"https://api.github.com/repos/keboola/db-extractor-common/issues/94","number":94,"state":"open","locked":false,"title":"Change architecture","user":{"login":"Actimel","id":4041679,"node_id":"MDQ6VXNlcjQwNDE2Nzk=","avatar_url":"https://avatars0.githubusercontent.com/u/4041679?v=4","gravatar_id":"","url":"https://api.github.com/users/Actimel","html_url":"https://github.com/Actimel","followers_url":"https://api.github.com/users/Actimel/followers","following_url":"https://api.github.com/users/Actimel/following{/other_user}","gists_url":"https://api.github.com/users/Actimel/gists{/gist_id}","starred_url":"https://api.github.com/users/Actimel/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Actimel/subscriptions","organizations_url":"https://api.github.com/users/Actimel/orgs","repos_url":"https://api.github.com/users/Actimel/repos","events_url":"https://api.github.com/users/Actimel/events{/privacy}","received_events_url":"https://api.github.com/users/Actimel/received_events","type":"User","site_admin":false},"body":"Part of #70 \r\n\r\nPoint of this PR is create new classes which totally change architecture of extractors. Old classes are kept, but should be marked as deprecated.\r\n\r\nOld way extends `\\Keboola\\DbExtractor\\Extractor\\Extractor` and then add actual extractor as a child by calling a class defined in config.\r\nNew adapter consume instance of actual extractor and calling it's methods. All of it should be defined in `run.php` and there is no need to store actual extractor into configuration.\r\n\r\nAll Datadir Tests were copy & pasted with just different `run.php`.","created_at":"2018-09-29T17:56:21Z","updated_at":"2018-10-24T08:44:29Z","closed_at":null,"merged_at":null,"merge_commit_sha":"4ae3c00fe88b7267dcd1dca1e883fc2151d9ea07","assignee":{"login":"Actimel","id":4041679,"node_id":"MDQ6VXNlcjQwNDE2Nzk=","avatar_url":"https://avatars0.githubusercontent.com/u/4041679?v=4","gravatar_id":"","url":"https://api.github.com/users/Actimel","html_url":"https://github.com/Actimel","followers_url":"https://api.github.com/users/Actimel/followers","following_url":"https://api.github.com/users/Actimel/following{/other_user}","gists_url":"https://api.github.com/users/Actimel/gists{/gist_id}","starred_url":"https://api.github.com/users/Actimel/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Actimel/subscriptions","organizations_url":"https://api.github.com/users/Actimel/orgs","repos_url":"https://api.github.com/users/Actimel/repos","events_url":"https://api.github.com/users/Actimel/events{/privacy}","received_events_url":"https://api.github.com/users/Actimel/received_events","type":"User","site_admin":false},"assignees":[{"login":"Actimel","id":4041679,"node_id":"MDQ6VXNlcjQwNDE2Nzk=","avatar_url":"https://avatars0.githubusercontent.com/u/4041679?v=4","gravatar_id":"","url":"https://api.github.com/users/Actimel","html_url":"https://github.com/Actimel","followers_url":"https://api.github.com/users/Actimel/followers","following_url":"https://api.github.com/users/Actimel/following{/other_user}","gists_url":"https://api.github.com/users/Actimel/gists{/gist_id}","starred_url":"https://api.github.com/users/Actimel/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Actimel/subscriptions","organizations_url":"https://api.github.com/users/Actimel/orgs","repos_url":"https://api.github.com/users/Actimel/repos","events_url":"https://api.github.com/users/Actimel/events{/privacy}","received_events_url":"https://api.github.com/users/Actimel/received_events","type":"User","site_admin":false}],"requested_reviewers":[{"login":"pivnicek","id":569139,"node_id":"MDQ6VXNlcjU2OTEzOQ==","avatar_url":"https://avatars1.githubusercontent.com/u/569139?v=4","gravatar_id":"","url":"https://api.github.com/users/pivnicek","html_url":"https://github.com/pivnicek","followers_url":"https://api.github.com/users/pivnicek/followers","following_url":"https://api.github.com/users/pivnicek/following{/other_user}","gists_url":"https://api.github.com/users/pivnicek/gists{/gist_id}","starred_url":"https://api.github.com/users/pivnicek/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pivnicek/subscriptions","organizations_url":"https://api.github.com/users/pivnicek/orgs","repos_url":"https://api.github.com/users/pivnicek/repos","events_url":"https://api.github.com/users/pivnicek/events{/privacy}","received_events_url":"https://api.github.com/users/pivnicek/received_events","type":"User","site_admin":false}],"requested_teams":[],"labels":[{"id":1056218254,"node_id":"MDU6TGFiZWwxMDU2MjE4MjU0","url":"https://api.github.com/repos/keboola/db-extractor-common/labels/In%20progress","name":"In progress","color":"fbca04","default":false},{"id":324632564,"node_id":"MDU6TGFiZWwzMjQ2MzI1NjQ=","url":"https://api.github.com/repos/keboola/db-extractor-common/labels/enhancement","name":"enhancement","color":"84b6eb","default":true}],"milestone":{"url":"https://api.github.com/repos/keboola/db-extractor-common/milestones/1","html_url":"https://github.com/keboola/db-extractor-common/milestone/1","labels_url":"https://api.github.com/repos/keboola/db-extractor-common/milestones/1/labels","id":3652005,"node_id":"MDk6TWlsZXN0b25lMzY1MjAwNQ==","number":1,"title":"v10.0.0","description":"things to be included in major release 10","creator":{"login":"pivnicek","id":569139,"node_id":"MDQ6VXNlcjU2OTEzOQ==","avatar_url":"https://avatars1.githubusercontent.com/u/569139?v=4","gravatar_id":"","url":"https://api.github.com/users/pivnicek","html_url":"https://github.com/pivnicek","followers_url":"https://api.github.com/users/pivnicek/followers","following_url":"https://api.github.com/users/pivnicek/following{/other_user}","gists_url":"https://api.github.com/users/pivnicek/gists{/gist_id}","starred_url":"https://api.github.com/users/pivnicek/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pivnicek/subscriptions","organizations_url":"https://api.github.com/users/pivnicek/orgs","repos_url":"https://api.github.com/users/pivnicek/repos","events_url":"https://api.github.com/users/pivnicek/events{/privacy}","received_events_url":"https://api.github.com/users/pivnicek/received_events","type":"User","site_admin":false},"open_issues":3,"closed_issues":9,"state":"open","created_at":"2018-09-13T15:15:41Z","updated_at":"2018-10-03T06:30:44Z","due_on":null,"closed_at":null},"commits_url":"https://api.github.com/repos/keboola/db-extractor-common/pulls/94/commits","review_comments_url":"https://api.github.com/repos/keboola/db-extractor-common/pulls/94/comments","review_comment_url":"https://api.github.com/repos/keboola/db-extractor-common/pulls/comments{/number}","comments_url":"https://api.github.com/repos/keboola/db-extractor-common/issues/94/comments","statuses_url":"https://api.github.com/repos/keboola/db-extractor-common/statuses/3b0a0f30ef7871e34fb83180daa683d1399ed5cd","head":{"label":"keboola:david-adapter","ref":"david-adapter","sha":"3b0a0f30ef7871e34fb83180daa683d1399ed5cd","user":{"login":"keboola","id":1424387,"node_id":"MDEyOk9yZ2FuaXphdGlvbjE0MjQzODc=","avatar_url":"https://avatars1.githubusercontent.com/u/1424387?v=4","gravatar_id":"","url":"https://api.github.com/users/keboola","html_url":"https://github.com/keboola","followers_url":"https://api.github.com/users/keboola/followers","following_url":"https://api.github.com/users/keboola/following{/other_user}","gists_url":"https://api.github.com/users/keboola/gists{/gist_id}","starred_url":"https://api.github.com/users/keboola/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/keboola/subscriptions","organizations_url":"https://api.github.com/users/keboola/orgs","repos_url":"https://api.github.com/users/keboola/repos","events_url":"https://api.github.com/users/keboola/events{/privacy}","received_events_url":"https://api.github.com/users/keboola/received_events","type":"Organization","site_admin":false},"repo":{"id":51513262,"node_id":"MDEwOlJlcG9zaXRvcnk1MTUxMzI2Mg==","name":"db-extractor-common","full_name":"keboola/db-extractor-common","private":false,"owner":{"login":"keboola","id":1424387,"node_id":"MDEyOk9yZ2FuaXphdGlvbjE0MjQzODc=","avatar_url":"https://avatars1.githubusercontent.com/u/1424387?v=4","gravatar_id":"","url":"https://api.github.com/users/keboola","html_url":"https://github.com/keboola","followers_url":"https://api.github.com/users/keboola/followers","following_url":"https://api.github.com/users/keboola/following{/other_user}","gists_url":"https://api.github.com/users/keboola/gists{/gist_id}","starred_url":"https://api.github.com/users/keboola/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/keboola/subscriptions","organizations_url":"https://api.github.com/users/keboola/orgs","repos_url":"https://api.github.com/users/keboola/repos","events_url":"https://api.github.com/users/keboola/events{/privacy}","received_events_url":"https://api.github.com/users/keboola/received_events","type":"Organization","site_admin":false},"html_url":"https://github.com/keboola/db-extractor-common","description":"Common classes used by vendor specific database extractors","fork":false,"url":"https://api.github.com/repos/keboola/db-extractor-common","forks_url":"https://api.github.com/repos/keboola/db-extractor-common/forks","keys_url":"https://api.github.com/repos/keboola/db-extractor-common/keys{/key_id}","collaborators_url":"https://api.github.com/repos/keboola/db-extractor-common/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/keboola/db-extractor-common/teams","hooks_url":"https://api.github.com/repos/keboola/db-extractor-common/hooks","issue_events_url":"https://api.github.com/repos/keboola/db-extractor-common/issues/events{/number}","events_url":"https://api.github.com/repos/keboola/db-extractor-common/events","assignees_url":"https://api.github.com/repos/keboola/db-extractor-common/assignees{/user}","branches_url":"https://api.github.com/repos/keboola/db-extractor-common/branches{/branch}","tags_url":"https://api.github.com/repos/keboola/db-extractor-common/tags","blobs_url":"https://api.github.com/repos/keboola/db-extractor-common/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/keboola/db-extractor-common/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/keboola/db-extractor-common/git/refs{/sha}","trees_url":"https://api.github.com/repos/keboola/db-extractor-common/git/trees{/sha}","statuses_url":"https://api.github.com/repos/keboola/db-extractor-common/statuses/{sha}","languages_url":"https://api.github.com/repos/keboola/db-extractor-common/languages","stargazers_url":"https://api.github.com/repos/keboola/db-extractor-common/stargazers","contributors_url":"https://api.github.com/repos/keboola/db-extractor-common/contributors","subscribers_url":"https://api.github.com/repos/keboola/db-extractor-common/subscribers","subscription_url":"https://api.github.com/repos/keboola/db-extractor-common/subscription","commits_url":"https://api.github.com/repos/keboola/db-extractor-common/commits{/sha}","git_commits_url":"https://api.github.com/repos/keboola/db-extractor-common/git/commits{/sha}","comments_url":"https://api.github.com/repos/keboola/db-extractor-common/comments{/number}","issue_comment_url":"https://api.github.com/repos/keboola/db-extractor-common/issues/comments{/number}","contents_url":"https://api.github.com/repos/keboola/db-extractor-common/contents/{+path}","compare_url":"https://api.github.com/repos/keboola/db-extractor-common/compare/{base}...{head}","merges_url":"https://api.github.com/repos/keboola/db-extractor-common/merges","archive_url":"https://api.github.com/repos/keboola/db-extractor-common/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/keboola/db-extractor-common/downloads","issues_url":"https://api.github.com/repos/keboola/db-extractor-common/issues{/number}","pulls_url":"https://api.github.com/repos/keboola/db-extractor-common/pulls{/number}","milestones_url":"https://api.github.com/repos/keboola/db-extractor-common/milestones{/number}","notifications_url":"https://api.github.com/repos/keboola/db-extractor-common/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/keboola/db-extractor-common/labels{/name}","releases_url":"https://api.github.com/repos/keboola/db-extractor-common/releases{/id}","deployments_url":"https://api.github.com/repos/keboola/db-extractor-common/deployments","created_at":"2016-02-11T12:31:23Z","updated_at":"2018-10-18T13:18:51Z","pushed_at":"2018-10-23T21:04:43Z","git_url":"git://github.com/keboola/db-extractor-common.git","ssh_url":"git@github.com:keboola/db-extractor-common.git","clone_url":"https://github.com/keboola/db-extractor-common.git","svn_url":"https://github.com/keboola/db-extractor-common","homepage":null,"size":539,"stargazers_count":0,"watchers_count":0,"language":"PHP","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":0,"mirror_url":null,"archived":false,"open_issues_count":16,"license":null,"forks":0,"open_issues":16,"watchers":0,"default_branch":"master"}},"base":{"label":"keboola:david-v10","ref":"david-v10","sha":"6bede43e17dc181f7f88e47a38130e946871ae92","user":{"login":"keboola","id":1424387,"node_id":"MDEyOk9yZ2FuaXphdGlvbjE0MjQzODc=","avatar_url":"https://avatars1.githubusercontent.com/u/1424387?v=4","gravatar_id":"","url":"https://api.github.com/users/keboola","html_url":"https://github.com/keboola","followers_url":"https://api.github.com/users/keboola/followers","following_url":"https://api.github.com/users/keboola/following{/other_user}","gists_url":"https://api.github.com/users/keboola/gists{/gist_id}","starred_url":"https://api.github.com/users/keboola/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/keboola/subscriptions","organizations_url":"https://api.github.com/users/keboola/orgs","repos_url":"https://api.github.com/users/keboola/repos","events_url":"https://api.github.com/users/keboola/events{/privacy}","received_events_url":"https://api.github.com/users/keboola/received_events","type":"Organization","site_admin":false},"repo":{"id":51513262,"node_id":"MDEwOlJlcG9zaXRvcnk1MTUxMzI2Mg==","name":"db-extractor-common","full_name":"keboola/db-extractor-common","private":false,"owner":{"login":"keboola","id":1424387,"node_id":"MDEyOk9yZ2FuaXphdGlvbjE0MjQzODc=","avatar_url":"https://avatars1.githubusercontent.com/u/1424387?v=4","gravatar_id":"","url":"https://api.github.com/users/keboola","html_url":"https://github.com/keboola","followers_url":"https://api.github.com/users/keboola/followers","following_url":"https://api.github.com/users/keboola/following{/other_user}","gists_url":"https://api.github.com/users/keboola/gists{/gist_id}","starred_url":"https://api.github.com/users/keboola/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/keboola/subscriptions","organizations_url":"https://api.github.com/users/keboola/orgs","repos_url":"https://api.github.com/users/keboola/repos","events_url":"https://api.github.com/users/keboola/events{/privacy}","received_events_url":"https://api.github.com/users/keboola/received_events","type":"Organization","site_admin":false},"html_url":"https://github.com/keboola/db-extractor-common","description":"Common classes used by vendor specific database extractors","fork":false,"url":"https://api.github.com/repos/keboola/db-extractor-common","forks_url":"https://api.github.com/repos/keboola/db-extractor-common/forks","keys_url":"https://api.github.com/repos/keboola/db-extractor-common/keys{/key_id}","collaborators_url":"https://api.github.com/repos/keboola/db-extractor-common/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/keboola/db-extractor-common/teams","hooks_url":"https://api.github.com/repos/keboola/db-extractor-common/hooks","issue_events_url":"https://api.github.com/repos/keboola/db-extractor-common/issues/events{/number}","events_url":"https://api.github.com/repos/keboola/db-extractor-common/events","assignees_url":"https://api.github.com/repos/keboola/db-extractor-common/assignees{/user}","branches_url":"https://api.github.com/repos/keboola/db-extractor-common/branches{/branch}","tags_url":"https://api.github.com/repos/keboola/db-extractor-common/tags","blobs_url":"https://api.github.com/repos/keboola/db-extractor-common/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/keboola/db-extractor-common/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/keboola/db-extractor-common/git/refs{/sha}","trees_url":"https://api.github.com/repos/keboola/db-extractor-common/git/trees{/sha}","statuses_url":"https://api.github.com/repos/keboola/db-extractor-common/statuses/{sha}","languages_url":"https://api.github.com/repos/keboola/db-extractor-common/languages","stargazers_url":"https://api.github.com/repos/keboola/db-extractor-common/stargazers","contributors_url":"https://api.github.com/repos/keboola/db-extractor-common/contributors","subscribers_url":"https://api.github.com/repos/keboola/db-extractor-common/subscribers","subscription_url":"https://api.github.com/repos/keboola/db-extractor-common/subscription","commits_url":"https://api.github.com/repos/keboola/db-extractor-common/commits{/sha}","git_commits_url":"https://api.github.com/repos/keboola/db-extractor-common/git/commits{/sha}","comments_url":"https://api.github.com/repos/keboola/db-extractor-common/comments{/number}","issue_comment_url":"https://api.github.com/repos/keboola/db-extractor-common/issues/comments{/number}","contents_url":"https://api.github.com/repos/keboola/db-extractor-common/contents/{+path}","compare_url":"https://api.github.com/repos/keboola/db-extractor-common/compare/{base}...{head}","merges_url":"https://api.github.com/repos/keboola/db-extractor-common/merges","archive_url":"https://api.github.com/repos/keboola/db-extractor-common/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/keboola/db-extractor-common/downloads","issues_url":"https://api.github.com/repos/keboola/db-extractor-common/issues{/number}","pulls_url":"https://api.github.com/repos/keboola/db-extractor-common/pulls{/number}","milestones_url":"https://api.github.com/repos/keboola/db-extractor-common/milestones{/number}","notifications_url":"https://api.github.com/repos/keboola/db-extractor-common/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/keboola/db-extractor-common/labels{/name}","releases_url":"https://api.github.com/repos/keboola/db-extractor-common/releases{/id}","deployments_url":"https://api.github.com/repos/keboola/db-extractor-common/deployments","created_at":"2016-02-11T12:31:23Z","updated_at":"2018-10-18T13:18:51Z","pushed_at":"2018-10-23T21:04:43Z","git_url":"git://github.com/keboola/db-extractor-common.git","ssh_url":"git@github.com:keboola/db-extractor-common.git","clone_url":"https://github.com/keboola/db-extractor-common.git","svn_url":"https://github.com/keboola/db-extractor-common","homepage":null,"size":539,"stargazers_count":0,"watchers_count":0,"language":"PHP","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":0,"mirror_url":null,"archived":false,"open_issues_count":16,"license":null,"forks":0,"open_issues":16,"watchers":0,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/keboola/db-extractor-common/pulls/94"},"html":{"href":"https://github.com/keboola/db-extractor-common/pull/94"},"issue":{"href":"https://api.github.com/repos/keboola/db-extractor-common/issues/94"},"comments":{"href":"https://api.github.com/repos/keboola/db-extractor-common/issues/94/comments"},"review_comments":{"href":"https://api.github.com/repos/keboola/db-extractor-common/pulls/94/comments"},"review_comment":{"href":"https://api.github.com/repos/keboola/db-extractor-common/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/keboola/db-extractor-common/pulls/94/commits"},"statuses":{"href":"https://api.github.com/repos/keboola/db-extractor-common/statuses/3b0a0f30ef7871e34fb83180daa683d1399ed5cd"}},"author_association":"CONTRIBUTOR"}}
{"actor":{"display_login":"odinuv"}}