{"action":"created","comment":{"url":"https://api.github.com/repos/shaarli/Shaarli/pulls/comments/56082672","id":56082672,"diff_hunk":"@@ -0,0 +1,219 @@\n+<?php\n+\n+require_once 'application/FeedBuilder.php';\n+require_once 'application/LinkDB.php';\n+\n+/**\n+ * FeedBuilderTest class.\n+ *\n+ * Unit tests for FeedBuilder.\n+ */\n+class FeedBuilderTest extends PHPUnit_Framework_TestCase\n+{\n+    /**\n+     * @var string locale Basque (Spain).\n+     */\n+    public static $LOCALE = 'eu_ES';\n+\n+    /**\n+     * @var string language in RSS format.\n+     */\n+    public static $RSS_LANGUAGE = 'eu-es';\n+\n+    /**\n+     * @var string language in ATOM format.\n+     */\n+    public static $ATOM_LANGUAGUE = 'eu';\n+\n+    protected static $testDatastore = 'sandbox/datastore.php';\n+\n+    public static $linkDB;\n+\n+    public static $serverInfo;\n+\n+    /**\n+     * Called before every test method.\n+     */\n+    public static function setUpBeforeClass()\n+    {\n+        $refLinkDB = new ReferenceLinkDB();\n+        $refLinkDB->write(self::$testDatastore);\n+        self::$linkDB = new LinkDB(self::$testDatastore, true, false);\n+        self::$serverInfo = array(\n+            'HTTPS' => 'Off',\n+            'SERVER_NAME' => 'host.tld',\n+            'SERVER_PORT' => '80',\n+            'SCRIPT_NAME' => '/index.php',\n+            'REQUEST_URI' => '/index.php?do=feed',\n+        );\n+    }\n+\n+    /**\n+     * Called after every test method.\n+     */\n+    public function tearDown()\n+    {\n+    }\n+\n+    /**\n+     * Test GetTypeLanguage().\n+     */\n+    public function testGetTypeLanguage()\n+    {\n+        $feedBuilder = new FeedBuilder(null, FeedBuilder::$FEED_ATOM, null, null, false);\n+        $feedBuilder->setLocale(self::$LOCALE);\n+        $this->assertEquals(self::$ATOM_LANGUAGUE, $feedBuilder->getTypeLanguage());\n+        $feedBuilder = new FeedBuilder(null, FeedBuilder::$FEED_RSS, null, null, false);\n+        $feedBuilder->setLocale(self::$LOCALE);\n+        $this->assertEquals(self::$RSS_LANGUAGE, $feedBuilder->getTypeLanguage());\n+        $feedBuilder = new FeedBuilder(null, FeedBuilder::$FEED_ATOM, null, null, false);\n+        $this->assertEquals('en', $feedBuilder->getTypeLanguage());\n+        $feedBuilder = new FeedBuilder(null, FeedBuilder::$FEED_RSS, null, null, false);\n+        $this->assertEquals('en-en', $feedBuilder->getTypeLanguage());\n+    }\n+\n+    /**\n+     * Test buildData with RSS feed.\n+     */\n+    public function testRSSBuildData()\n+    {\n+        $feedBuilder = new FeedBuilder(self::$linkDB, FeedBuilder::$FEED_RSS, self::$serverInfo, null, false);\n+        $feedBuilder->setLocale(self::$LOCALE);\n+        $data = $feedBuilder->buildData();\n+        // Test headers (RSS)\n+        $this->assertEquals(self::$RSS_LANGUAGE, $data['language']);\n+        $this->assertEmpty($data['pubsubhub_url']);\n+        $this->assertEquals('Tue, 10 Mar 2015 11:46:51 +0100', $data['last_update']);\n+        $this->assertEquals(true, $data['show_dates']);\n+        $this->assertEquals('http://host.tld/index.php?do=feed', $data['self_link']);\n+        $this->assertEquals('http://host.tld/', $data['index_url']);\n+        $this->assertFalse($data['usepermalinks']);\n+        $this->assertEquals(ReferenceLinkDB::$NB_LINKS_TOTAL, count($data['links']));\n+\n+        // Test first link (note link)\n+        $link = array_shift($data['links']);\n+        $this->assertEquals('20150310_114651', $link['linkdate']);\n+        $this->assertEquals('http://host.tld/?WDWyig', $link['guid']);\n+        $this->assertEquals('http://host.tld/?WDWyig', $link['url']);\n+        $this->assertEquals('Tue, 10 Mar 2015 11:46:51 +0100', $link['iso_date']);\n+        $this->assertContains('Stallman has a beard', $link['description']);\n+        $this->assertContains('Permalink', $link['description']);\n+        $this->assertContains('http://host.tld/?WDWyig', $link['description']);\n+        $this->assertEquals(1, count($link['taglist']));\n+        $this->assertEquals('stuff', $link['taglist'][0]);\n+\n+        // Test URL with external link.\n+        $this->assertEquals('https://static.fsf.org/nosvn/faif-2.0.pdf', $data['links']['20150310_114633']['url']);\n+\n+        // Test multitags.\n+        $this->assertEquals(5, count($data['links']['20141125_084734']['taglist']));\n+        $this->assertEquals('css', $data['links']['20141125_084734']['taglist'][0]);\n+    }\n+\n+    /**\n+     * Test buildData with ATOM feed (test only specific to ATOM).\n+     */\n+    public function testAtomBuildData()\n+    {\n+        $feedBuilder = new FeedBuilder(self::$linkDB, FeedBuilder::$FEED_ATOM, self::$serverInfo, null, false);\n+        $feedBuilder->setLocale(self::$LOCALE);\n+        $data = $feedBuilder->buildData();\n+        $this->assertEquals(ReferenceLinkDB::$NB_LINKS_TOTAL, count($data['links']));\n+        $link = array_shift($data['links']);\n+        $this->assertEquals('2015-03-10T11:46:51+01:00', $link['iso_date']);\n+    }\n+\n+    /**\n+     * Test buildData with search criteria.\n+     */\n+    public function testBuildDataFiltered()\n+    {\n+        $criteria = array(\n+            'searchtags' => 'stuff',\n+            'searchterm' => 'beard',\n+        );\n+        $feedBuilder = new FeedBuilder(self::$linkDB, FeedBuilder::$FEED_ATOM, self::$serverInfo, $criteria, false);\n+        $feedBuilder->setLocale(self::$LOCALE);\n+        $data = $feedBuilder->buildData();\n+        $this->assertEquals(1, count($data['links']));\n+        $link = array_shift($data['links']);\n+        $this->assertEquals('20150310_114651', $link['linkdate']);\n+    }\n+\n+    /**\n+     * Test buildData with nb limit.\n+     */\n+    public function testBuildDataCount()\n+    {\n+        $criteria = array(\n+            'nb' => '1',\n+        );\n+        $feedBuilder = new FeedBuilder(self::$linkDB, FeedBuilder::$FEED_ATOM, self::$serverInfo, $criteria, false);\n+        $feedBuilder->setLocale(self::$LOCALE);\n+        $data = $feedBuilder->buildData();\n+        $this->assertEquals(1, count($data['links']));\n+        $link = array_shift($data['links']);\n+        $this->assertEquals('20150310_114651', $link['linkdate']);\n+    }\n+\n+    /**\n+     * Test buildData with permalinks on.\n+     */\n+    public function testBuildDataPermalinks()\n+    {\n+        $feedBuilder = new FeedBuilder(self::$linkDB, FeedBuilder::$FEED_ATOM, self::$serverInfo, null, false);\n+        $feedBuilder->setLocale(self::$LOCALE);\n+        $feedBuilder->setUsePermalinks(true);\n+        $data = $feedBuilder->buildData();\n+        $this->assertEquals(ReferenceLinkDB::$NB_LINKS_TOTAL, count($data['links']));\n+        $this->assertTrue($data['usepermalinks']);\n+        // First link is a permalink\n+        $link = array_shift($data['links']);\n+        $this->assertEquals('20150310_114651', $link['linkdate']);\n+        $this->assertEquals('http://host.tld/?WDWyig', $link['guid']);\n+        $this->assertEquals('http://host.tld/?WDWyig', $link['url']);\n+        $this->assertContains('Direct link', $link['description']);\n+        $this->assertContains('http://host.tld/?WDWyig', $link['description']);\n+        // Second link is a direct link\n+        $link = array_shift($data['links']);\n+        $this->assertEquals('20150310_114633', $link['linkdate']);\n+        $this->assertEquals('http://host.tld/?kLHmZg', $link['guid']);\n+        $this->assertEquals('https://static.fsf.org/nosvn/faif-2.0.pdf', $link['url']);\n+        $this->assertContains('Direct link', $link['description']);\n+        $this->assertContains('https://static.fsf.org/nosvn/faif-2.0.pdf', $link['description']);\n+    }\n+\n+    /**\n+     * Test buildData with hide dates settings.\n+     */\n+    public function testBuildDataHideDates()\n+    {\n+        $feedBuilder = new FeedBuilder(self::$linkDB, FeedBuilder::$FEED_ATOM, self::$serverInfo, null, false);\n+        $feedBuilder->setLocale(self::$LOCALE);\n+        $feedBuilder->setHideDates(true);\n+        $data = $feedBuilder->buildData();\n+        $this->assertEquals(ReferenceLinkDB::$NB_LINKS_TOTAL, count($data['links']));\n+        $this->assertFalse($data['show_dates']);\n+\n+        // Show dates while logged in\n+        $feedBuilder = new FeedBuilder(self::$linkDB, FeedBuilder::$FEED_ATOM, self::$serverInfo, null, true);\n+        $feedBuilder->setLocale(self::$LOCALE);\n+        $feedBuilder->setHideDates(true);\n+        $data = $feedBuilder->buildData();\n+        $this->assertEquals(ReferenceLinkDB::$NB_LINKS_TOTAL, count($data['links']));\n+        $this->assertTrue($data['show_dates']);\n+    }\n+\n+    /**\n+     * Test buildData with hide dates settings.\n+     */\n+    public function testBuildDataPubsubhub()\n+    {\n+        $feedBuilder = new FeedBuilder(self::$linkDB, FeedBuilder::$FEED_ATOM, self::$serverInfo, null, false);\n+        $feedBuilder->setLocale(self::$LOCALE);\n+        $feedBuilder->setPubsubhubUrl('http://pubsubhub.io');\n+        $data = $feedBuilder->buildData();\n+        $this->assertEquals(ReferenceLinkDB::$NB_LINKS_TOTAL, count($data['links']));\n+        $this->assertEquals('http://pubsubhub.io', $data['pubsubhub_url']);\n+    }\n+}","path":"tests/FeedBuilderTest.php","position":219,"original_position":219,"commit_id":"f3b32656783e6c6adee32c0974359467411e8f5e","original_commit_id":"f3b32656783e6c6adee32c0974359467411e8f5e","user":{"login":"virtualtam","id":1615162,"avatar_url":"https://avatars.githubusercontent.com/u/1615162?v=3","gravatar_id":"","url":"https://api.github.com/users/virtualtam","html_url":"https://github.com/virtualtam","followers_url":"https://api.github.com/users/virtualtam/followers","following_url":"https://api.github.com/users/virtualtam/following{/other_user}","gists_url":"https://api.github.com/users/virtualtam/gists{/gist_id}","starred_url":"https://api.github.com/users/virtualtam/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/virtualtam/subscriptions","organizations_url":"https://api.github.com/users/virtualtam/orgs","repos_url":"https://api.github.com/users/virtualtam/repos","events_url":"https://api.github.com/users/virtualtam/events{/privacy}","received_events_url":"https://api.github.com/users/virtualtam/received_events","type":"User","site_admin":false},"body":"+final newline","created_at":"2016-03-14T21:51:31Z","updated_at":"2016-03-14T21:51:31Z","html_url":"https://github.com/shaarli/Shaarli/pull/515#discussion_r56082672","pull_request_url":"https://api.github.com/repos/shaarli/Shaarli/pulls/515","_links":{"self":{"href":"https://api.github.com/repos/shaarli/Shaarli/pulls/comments/56082672"},"html":{"href":"https://github.com/shaarli/Shaarli/pull/515#discussion_r56082672"},"pull_request":{"href":"https://api.github.com/repos/shaarli/Shaarli/pulls/515"}}},"pull_request":{"url":"https://api.github.com/repos/shaarli/Shaarli/pulls/515","id":62646393,"html_url":"https://github.com/shaarli/Shaarli/pull/515","diff_url":"https://github.com/shaarli/Shaarli/pull/515.diff","patch_url":"https://github.com/shaarli/Shaarli/pull/515.patch","issue_url":"https://api.github.com/repos/shaarli/Shaarli/issues/515","number":515,"state":"open","locked":false,"title":"Refactor RSS feeds generation, and do it through templates","user":{"login":"ArthurHoaro","id":1962678,"avatar_url":"https://avatars.githubusercontent.com/u/1962678?v=3","gravatar_id":"","url":"https://api.github.com/users/ArthurHoaro","html_url":"https://github.com/ArthurHoaro","followers_url":"https://api.github.com/users/ArthurHoaro/followers","following_url":"https://api.github.com/users/ArthurHoaro/following{/other_user}","gists_url":"https://api.github.com/users/ArthurHoaro/gists{/gist_id}","starred_url":"https://api.github.com/users/ArthurHoaro/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ArthurHoaro/subscriptions","organizations_url":"https://api.github.com/users/ArthurHoaro/orgs","repos_url":"https://api.github.com/users/ArthurHoaro/repos","events_url":"https://api.github.com/users/ArthurHoaro/events{/privacy}","received_events_url":"https://api.github.com/users/ArthurHoaro/received_events","type":"User","site_admin":false},"body":"This PR is a bit huge, please look at the commit log to review it. I've tried to split everything in different commits to make it understandable.\r\n\r\nTo sum it up:\r\n\r\n  * RSS and Atom feeds are now sharing the same code, in FeedBuilder.\r\n  * They're generated through RainTPL templates. \r\n  * It's now covered by unit tests.\r\n  * There is a new plugin hook called before rendering feeds.\r\n  * The `ENABLE_RSS_PERMALINKS` setting in administration has been reworded.\r\n\r\nFixes #273 \r\n\r\nNote that this doesn't concern Daily RSS feed.\r\n\r\nPS: [tig](https://github.com/jonas/tig) is awesome.","created_at":"2016-03-12T17:13:53Z","updated_at":"2016-03-14T21:51:31Z","closed_at":null,"merged_at":null,"merge_commit_sha":"8a7dbce2a38b411b26b8b9e3a03c2f0c26d3a35f","assignee":{"login":"ArthurHoaro","id":1962678,"avatar_url":"https://avatars.githubusercontent.com/u/1962678?v=3","gravatar_id":"","url":"https://api.github.com/users/ArthurHoaro","html_url":"https://github.com/ArthurHoaro","followers_url":"https://api.github.com/users/ArthurHoaro/followers","following_url":"https://api.github.com/users/ArthurHoaro/following{/other_user}","gists_url":"https://api.github.com/users/ArthurHoaro/gists{/gist_id}","starred_url":"https://api.github.com/users/ArthurHoaro/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ArthurHoaro/subscriptions","organizations_url":"https://api.github.com/users/ArthurHoaro/orgs","repos_url":"https://api.github.com/users/ArthurHoaro/repos","events_url":"https://api.github.com/users/ArthurHoaro/events{/privacy}","received_events_url":"https://api.github.com/users/ArthurHoaro/received_events","type":"User","site_admin":false},"milestone":{"url":"https://api.github.com/repos/shaarli/Shaarli/milestones/8","html_url":"https://github.com/shaarli/Shaarli/milestones/0.7.0","labels_url":"https://api.github.com/repos/shaarli/Shaarli/milestones/8/labels","id":1233261,"number":8,"title":"0.7.0","description":"Code cleanup! Tools!","creator":{"login":"virtualtam","id":1615162,"avatar_url":"https://avatars.githubusercontent.com/u/1615162?v=3","gravatar_id":"","url":"https://api.github.com/users/virtualtam","html_url":"https://github.com/virtualtam","followers_url":"https://api.github.com/users/virtualtam/followers","following_url":"https://api.github.com/users/virtualtam/following{/other_user}","gists_url":"https://api.github.com/users/virtualtam/gists{/gist_id}","starred_url":"https://api.github.com/users/virtualtam/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/virtualtam/subscriptions","organizations_url":"https://api.github.com/users/virtualtam/orgs","repos_url":"https://api.github.com/users/virtualtam/repos","events_url":"https://api.github.com/users/virtualtam/events{/privacy}","received_events_url":"https://api.github.com/users/virtualtam/received_events","type":"User","site_admin":false},"open_issues":37,"closed_issues":10,"state":"open","created_at":"2015-07-30T10:09:53Z","updated_at":"2016-03-14T20:29:22Z","due_on":null,"closed_at":null},"commits_url":"https://api.github.com/repos/shaarli/Shaarli/pulls/515/commits","review_comments_url":"https://api.github.com/repos/shaarli/Shaarli/pulls/515/comments","review_comment_url":"https://api.github.com/repos/shaarli/Shaarli/pulls/comments{/number}","comments_url":"https://api.github.com/repos/shaarli/Shaarli/issues/515/comments","statuses_url":"https://api.github.com/repos/shaarli/Shaarli/statuses/f3b32656783e6c6adee32c0974359467411e8f5e","head":{"label":"ArthurHoaro:template-feeds","ref":"template-feeds","sha":"f3b32656783e6c6adee32c0974359467411e8f5e","user":{"login":"ArthurHoaro","id":1962678,"avatar_url":"https://avatars.githubusercontent.com/u/1962678?v=3","gravatar_id":"","url":"https://api.github.com/users/ArthurHoaro","html_url":"https://github.com/ArthurHoaro","followers_url":"https://api.github.com/users/ArthurHoaro/followers","following_url":"https://api.github.com/users/ArthurHoaro/following{/other_user}","gists_url":"https://api.github.com/users/ArthurHoaro/gists{/gist_id}","starred_url":"https://api.github.com/users/ArthurHoaro/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ArthurHoaro/subscriptions","organizations_url":"https://api.github.com/users/ArthurHoaro/orgs","repos_url":"https://api.github.com/users/ArthurHoaro/repos","events_url":"https://api.github.com/users/ArthurHoaro/events{/privacy}","received_events_url":"https://api.github.com/users/ArthurHoaro/received_events","type":"User","site_admin":false},"repo":{"id":27923711,"name":"Shaarli","full_name":"ArthurHoaro/Shaarli","owner":{"login":"ArthurHoaro","id":1962678,"avatar_url":"https://avatars.githubusercontent.com/u/1962678?v=3","gravatar_id":"","url":"https://api.github.com/users/ArthurHoaro","html_url":"https://github.com/ArthurHoaro","followers_url":"https://api.github.com/users/ArthurHoaro/followers","following_url":"https://api.github.com/users/ArthurHoaro/following{/other_user}","gists_url":"https://api.github.com/users/ArthurHoaro/gists{/gist_id}","starred_url":"https://api.github.com/users/ArthurHoaro/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ArthurHoaro/subscriptions","organizations_url":"https://api.github.com/users/ArthurHoaro/orgs","repos_url":"https://api.github.com/users/ArthurHoaro/repos","events_url":"https://api.github.com/users/ArthurHoaro/events{/privacy}","received_events_url":"https://api.github.com/users/ArthurHoaro/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/ArthurHoaro/Shaarli","description":"The personal, minimalist, super-fast, no-database delicious clone - community repo","fork":true,"url":"https://api.github.com/repos/ArthurHoaro/Shaarli","forks_url":"https://api.github.com/repos/ArthurHoaro/Shaarli/forks","keys_url":"https://api.github.com/repos/ArthurHoaro/Shaarli/keys{/key_id}","collaborators_url":"https://api.github.com/repos/ArthurHoaro/Shaarli/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/ArthurHoaro/Shaarli/teams","hooks_url":"https://api.github.com/repos/ArthurHoaro/Shaarli/hooks","issue_events_url":"https://api.github.com/repos/ArthurHoaro/Shaarli/issues/events{/number}","events_url":"https://api.github.com/repos/ArthurHoaro/Shaarli/events","assignees_url":"https://api.github.com/repos/ArthurHoaro/Shaarli/assignees{/user}","branches_url":"https://api.github.com/repos/ArthurHoaro/Shaarli/branches{/branch}","tags_url":"https://api.github.com/repos/ArthurHoaro/Shaarli/tags","blobs_url":"https://api.github.com/repos/ArthurHoaro/Shaarli/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/ArthurHoaro/Shaarli/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/ArthurHoaro/Shaarli/git/refs{/sha}","trees_url":"https://api.github.com/repos/ArthurHoaro/Shaarli/git/trees{/sha}","statuses_url":"https://api.github.com/repos/ArthurHoaro/Shaarli/statuses/{sha}","languages_url":"https://api.github.com/repos/ArthurHoaro/Shaarli/languages","stargazers_url":"https://api.github.com/repos/ArthurHoaro/Shaarli/stargazers","contributors_url":"https://api.github.com/repos/ArthurHoaro/Shaarli/contributors","subscribers_url":"https://api.github.com/repos/ArthurHoaro/Shaarli/subscribers","subscription_url":"https://api.github.com/repos/ArthurHoaro/Shaarli/subscription","commits_url":"https://api.github.com/repos/ArthurHoaro/Shaarli/commits{/sha}","git_commits_url":"https://api.github.com/repos/ArthurHoaro/Shaarli/git/commits{/sha}","comments_url":"https://api.github.com/repos/ArthurHoaro/Shaarli/comments{/number}","issue_comment_url":"https://api.github.com/repos/ArthurHoaro/Shaarli/issues/comments{/number}","contents_url":"https://api.github.com/repos/ArthurHoaro/Shaarli/contents/{+path}","compare_url":"https://api.github.com/repos/ArthurHoaro/Shaarli/compare/{base}...{head}","merges_url":"https://api.github.com/repos/ArthurHoaro/Shaarli/merges","archive_url":"https://api.github.com/repos/ArthurHoaro/Shaarli/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/ArthurHoaro/Shaarli/downloads","issues_url":"https://api.github.com/repos/ArthurHoaro/Shaarli/issues{/number}","pulls_url":"https://api.github.com/repos/ArthurHoaro/Shaarli/pulls{/number}","milestones_url":"https://api.github.com/repos/ArthurHoaro/Shaarli/milestones{/number}","notifications_url":"https://api.github.com/repos/ArthurHoaro/Shaarli/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/ArthurHoaro/Shaarli/labels{/name}","releases_url":"https://api.github.com/repos/ArthurHoaro/Shaarli/releases{/id}","deployments_url":"https://api.github.com/repos/ArthurHoaro/Shaarli/deployments","created_at":"2014-12-12T14:31:01Z","updated_at":"2016-01-11T19:50:20Z","pushed_at":"2016-03-12T17:40:06Z","git_url":"git://github.com/ArthurHoaro/Shaarli.git","ssh_url":"git@github.com:ArthurHoaro/Shaarli.git","clone_url":"https://github.com/ArthurHoaro/Shaarli.git","svn_url":"https://github.com/ArthurHoaro/Shaarli","homepage":"https://github.com/shaarli/Shaarli","size":2213,"stargazers_count":1,"watchers_count":1,"language":"PHP","has_issues":false,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":1,"mirror_url":null,"open_issues_count":0,"forks":1,"open_issues":0,"watchers":1,"default_branch":"master"}},"base":{"label":"shaarli:master","ref":"master","sha":"890afc32f744859d11b97eb26ed5c030af9b4145","user":{"login":"shaarli","id":8275533,"avatar_url":"https://avatars.githubusercontent.com/u/8275533?v=3","gravatar_id":"","url":"https://api.github.com/users/shaarli","html_url":"https://github.com/shaarli","followers_url":"https://api.github.com/users/shaarli/followers","following_url":"https://api.github.com/users/shaarli/following{/other_user}","gists_url":"https://api.github.com/users/shaarli/gists{/gist_id}","starred_url":"https://api.github.com/users/shaarli/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/shaarli/subscriptions","organizations_url":"https://api.github.com/users/shaarli/orgs","repos_url":"https://api.github.com/users/shaarli/repos","events_url":"https://api.github.com/users/shaarli/events{/privacy}","received_events_url":"https://api.github.com/users/shaarli/received_events","type":"Organization","site_admin":false},"repo":{"id":22287975,"name":"Shaarli","full_name":"shaarli/Shaarli","owner":{"login":"shaarli","id":8275533,"avatar_url":"https://avatars.githubusercontent.com/u/8275533?v=3","gravatar_id":"","url":"https://api.github.com/users/shaarli","html_url":"https://github.com/shaarli","followers_url":"https://api.github.com/users/shaarli/followers","following_url":"https://api.github.com/users/shaarli/following{/other_user}","gists_url":"https://api.github.com/users/shaarli/gists{/gist_id}","starred_url":"https://api.github.com/users/shaarli/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/shaarli/subscriptions","organizations_url":"https://api.github.com/users/shaarli/orgs","repos_url":"https://api.github.com/users/shaarli/repos","events_url":"https://api.github.com/users/shaarli/events{/privacy}","received_events_url":"https://api.github.com/users/shaarli/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/shaarli/Shaarli","description":"The personal, minimalist, super-fast, no-database delicious clone - community repo","fork":true,"url":"https://api.github.com/repos/shaarli/Shaarli","forks_url":"https://api.github.com/repos/shaarli/Shaarli/forks","keys_url":"https://api.github.com/repos/shaarli/Shaarli/keys{/key_id}","collaborators_url":"https://api.github.com/repos/shaarli/Shaarli/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/shaarli/Shaarli/teams","hooks_url":"https://api.github.com/repos/shaarli/Shaarli/hooks","issue_events_url":"https://api.github.com/repos/shaarli/Shaarli/issues/events{/number}","events_url":"https://api.github.com/repos/shaarli/Shaarli/events","assignees_url":"https://api.github.com/repos/shaarli/Shaarli/assignees{/user}","branches_url":"https://api.github.com/repos/shaarli/Shaarli/branches{/branch}","tags_url":"https://api.github.com/repos/shaarli/Shaarli/tags","blobs_url":"https://api.github.com/repos/shaarli/Shaarli/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/shaarli/Shaarli/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/shaarli/Shaarli/git/refs{/sha}","trees_url":"https://api.github.com/repos/shaarli/Shaarli/git/trees{/sha}","statuses_url":"https://api.github.com/repos/shaarli/Shaarli/statuses/{sha}","languages_url":"https://api.github.com/repos/shaarli/Shaarli/languages","stargazers_url":"https://api.github.com/repos/shaarli/Shaarli/stargazers","contributors_url":"https://api.github.com/repos/shaarli/Shaarli/contributors","subscribers_url":"https://api.github.com/repos/shaarli/Shaarli/subscribers","subscription_url":"https://api.github.com/repos/shaarli/Shaarli/subscription","commits_url":"https://api.github.com/repos/shaarli/Shaarli/commits{/sha}","git_commits_url":"https://api.github.com/repos/shaarli/Shaarli/git/commits{/sha}","comments_url":"https://api.github.com/repos/shaarli/Shaarli/comments{/number}","issue_comment_url":"https://api.github.com/repos/shaarli/Shaarli/issues/comments{/number}","contents_url":"https://api.github.com/repos/shaarli/Shaarli/contents/{+path}","compare_url":"https://api.github.com/repos/shaarli/Shaarli/compare/{base}...{head}","merges_url":"https://api.github.com/repos/shaarli/Shaarli/merges","archive_url":"https://api.github.com/repos/shaarli/Shaarli/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/shaarli/Shaarli/downloads","issues_url":"https://api.github.com/repos/shaarli/Shaarli/issues{/number}","pulls_url":"https://api.github.com/repos/shaarli/Shaarli/pulls{/number}","milestones_url":"https://api.github.com/repos/shaarli/Shaarli/milestones{/number}","notifications_url":"https://api.github.com/repos/shaarli/Shaarli/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/shaarli/Shaarli/labels{/name}","releases_url":"https://api.github.com/repos/shaarli/Shaarli/releases{/id}","deployments_url":"https://api.github.com/repos/shaarli/Shaarli/deployments","created_at":"2014-07-26T14:10:30Z","updated_at":"2016-03-14T20:30:32Z","pushed_at":"2016-03-14T20:29:21Z","git_url":"git://github.com/shaarli/Shaarli.git","ssh_url":"git@github.com:shaarli/Shaarli.git","clone_url":"https://github.com/shaarli/Shaarli.git","svn_url":"https://github.com/shaarli/Shaarli","homepage":"https://github.com/shaarli/Shaarli","size":3029,"stargazers_count":256,"watchers_count":256,"language":"PHP","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":46,"mirror_url":null,"open_issues_count":99,"forks":46,"open_issues":99,"watchers":256,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/shaarli/Shaarli/pulls/515"},"html":{"href":"https://github.com/shaarli/Shaarli/pull/515"},"issue":{"href":"https://api.github.com/repos/shaarli/Shaarli/issues/515"},"comments":{"href":"https://api.github.com/repos/shaarli/Shaarli/issues/515/comments"},"review_comments":{"href":"https://api.github.com/repos/shaarli/Shaarli/pulls/515/comments"},"review_comment":{"href":"https://api.github.com/repos/shaarli/Shaarli/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/shaarli/Shaarli/pulls/515/commits"},"statuses":{"href":"https://api.github.com/repos/shaarli/Shaarli/statuses/f3b32656783e6c6adee32c0974359467411e8f5e"}}}}