{"action":"created","comment":{"url":"https://api.github.com/repos/gruberro/Sylius/pulls/comments/95092686","pull_request_review_id":15633990,"id":95092686,"diff_hunk":"@@ -0,0 +1,630 @@\n+How to store images in MongoDB GridFS?\n+======================================\n+\n+In order to configure Sylius to store images to MongoDB GridFS ensure you've properly configured Doctrine ODM.\n+We suggest to use the `DoctrineMongoDBBundle <https://symfony.com/doc/current/bundles/DoctrineMongoDBBundle/index.html>`_\n+for handling with GridFS.\n+\n+Prerequisite: data structure\n+----------------------------\n+\n+First of all a document class to store an image is required. This example assumes the ``DoctrineMongoDBBundle`` is configured\n+using the annotation driver.\n+\n+To make GridFS files easy reusable a mapped superclass is introduced.\n+\n+.. code-block:: php\n+\n+    namespace AppBundle\\Document;\n+\n+    use Doctrine\\MongoDB\\GridFSFile;\n+    use Doctrine\\ODM\\MongoDB\\Mapping\\Annotations as ODM;\n+\n+    /**\n+     * @ODM\\MappedSuperclass\n+     */\n+    abstract class File\n+    {\n+        /**\n+         * @ODM\\Id\n+         *\n+         * @var string\n+         */\n+        private $id;\n+\n+        /**\n+         * @ODM\\File\n+         *\n+         * @var GridFSFile\n+         */\n+        private $file;\n+\n+        /**\n+         * @ODM\\Field(type=\"int\")\n+         *\n+         * @var int\n+         */\n+        private $length;\n+\n+        /**\n+         * @ODM\\Field(type=\"int\")\n+         *\n+         * @var int\n+         */\n+        private $chunkSize;\n+\n+        /**\n+         * @ODM\\Field(type=\"date\")\n+         *\n+         * @var \\Date\n+         */\n+        private $uploadDate;\n+\n+        /**\n+         * @ODM\\Field(type=\"string\")\n+         *\n+         * @var string\n+         */\n+        private $md5;\n+\n+        /**\n+         * @ODM\\Field(type=\"string\")\n+         *\n+         * @var string\n+         */\n+        private $filename;\n+\n+        /**\n+         * @ODM\\Field(type=\"string\")\n+         *\n+         * @var string\n+         */\n+        private $contentType;\n+\n+        /**\n+         * @return string\n+         */\n+        public function getId(): string\n+        {\n+            return (string) $this->id;\n+        }\n+\n+        /**\n+         * The file can either be a string if the document isn't persisted yet, or a GridFSFile\n+         * if the document has already been persisted.\n+         *\n+         * @return GridFSFile|string\n+         */\n+        public function getFile()\n+        {\n+            return $this->file;\n+        }\n+\n+        /**\n+         * @param string $file\n+         *\n+         * @return File\n+         */\n+        public function setFile(string $file): File\n+        {\n+            $this->file = $file;\n+\n+            if (! $this->contentType) {\n+                $this->contentType = mime_content_type($file);\n+            }\n+\n+            return $this;\n+        }\n+\n+        /**\n+         * @return int\n+         */\n+        public function getLength(): int\n+        {\n+            return (int) $this->length;\n+        }\n+\n+        /**\n+         * @return int\n+         */\n+        public function getChunkSize(): int\n+        {\n+            return (int) $this->chunkSize;\n+        }\n+\n+        /**\n+         * @return \\DateTimeImmutable\n+         */\n+        public function getUploadDate(): \\DateTimeImmutable\n+        {\n+            return $this->uploadDate;\n+        }\n+\n+        /**\n+         * @return string\n+         */\n+        public function getMd5(): string\n+        {\n+            return (string) $this->md5;\n+        }\n+\n+        /**\n+         * @return string\n+         */\n+        public function getFilename(): string\n+        {\n+            return (string) $this->filename;\n+        }\n+\n+        /**\n+         * @param string $filename\n+         *\n+         * @return File\n+         */\n+        public function setFilename(string $filename): File\n+        {\n+            if ($filename === '') {\n+                $filename = null;\n+            }\n+\n+            $this->filename = $filename;\n+\n+            return $this;\n+        }\n+\n+        /**\n+         * @return string\n+         */\n+        public function getContentType(): string\n+        {\n+            return (string) $this->contentType;\n+        }\n+\n+        /**\n+         * @param string $contentType\n+         *\n+         * @return File\n+         */\n+        public function setContentType(string $contentType): File\n+        {\n+            if ($contentType === '') {\n+                $contentType = null;\n+            }\n+\n+            $this->contentType = $contentType;\n+\n+            return $this;\n+        }\n+\n+        /**\n+         * @return string\n+         */\n+        public function __toString(): string\n+        {\n+            return $this->getFilename();\n+        }\n+    }\n+\n+After that concrete product image documents (for the original images as well as cached image) can be written. All of them\n+are stored to the same collection, but can be differentiated by it's ``type``-field (``DiscriminatorField`` and ``DiscriminatorMap``).\n+\n+.. code-block:: php\n+\n+    namespace AppBundle\\Document\\Product;\n+\n+    use AppBundle\\Document;\n+    use Doctrine\\ODM\\MongoDB\\Mapping\\Annotations as ODM;\n+\n+    /**\n+     * @ODM\\DiscriminatorField(\"type\")\n+     * @ODM\\DiscriminatorMap({\n+     *     \"image\"=Image::class,\n+     *     \"cache\"=Image\\Cache::class,\n+     * })\n+     * @ODM\\DefaultDiscriminatorValue(\"image\")\n+     * @ODM\\Document(\n+     *     collection=\"product_image\",\n+     *     indexes={\n+     *         @ODM\\Index(keys={\"filename\"=\"asc\"}),\n+     *     },\n+     * )\n+     * @ODM\\InheritanceType(\"SINGLE_COLLECTION\")\n+     */\n+    class Image extends Document\\File\n+    {\n+    }\n+\n+A cache file is storing it's ``filter`` by adding it to the GridFS metadata object which is held as an embedded document.\n+\n+.. code-block:: php\n+\n+    namespace AppBundle\\Document\\Product\\Image;\n+\n+    use AppBundle\\Document;\n+    use Doctrine\\ODM\\MongoDB\\Mapping\\Annotations as ODM;\n+\n+    /**\n+     * @ODM\\Document\n+     */\n+    final class Cache extends Document\\Product\\Image\n+    {\n+        /**\n+         * @ODM\\EmbedOne(\n+         *     targetDocument=Cache\\Metadata::class,\n+         * )\n+         *\n+         * @var Cache\\Metadata\n+         */\n+        private $metadata;\n+\n+        /**\n+         * @param string $file\n+         * @param string $contentType\n+         * @param string $filename\n+         * @param string $filter\n+         */\n+        public function __construct(string $file, string $contentType, string $filename, string $filter)\n+        {\n+            $this\n+                ->setContentType($contentType)\n+                ->setFile($file)\n+                ->setFilename($filename);\n+\n+            $this->metadata = new Cache\\Metadata($filter);\n+        }\n+\n+        /**\n+         * @return Cache\\Metadata\n+         */\n+        public function getMetadata(): Cache\\Metadata\n+        {\n+            return $this->metadata;\n+        }\n+    }\n+\n+.. code-block:: php\n+\n+    namespace AppBundle\\Document\\Product\\Image\\Cache;\n+\n+    use Doctrine\\ODM\\MongoDB\\Mapping\\Annotations as ODM;\n+\n+    /**\n+     * @ODM\\EmbeddedDocument(\n+     *     indexes={\n+     *         @ODM\\Index(keys={\"filter\"=\"asc\"}),\n+     *     }\n+     * )\n+     */\n+    final class Metadata\n+    {\n+        /**\n+         * @ODM\\Field(type=\"string\")\n+         *\n+         * @var string\n+         */\n+        private $filter;\n+\n+        /**\n+         * @param string $filter\n+         */\n+        public function __construct(string $filter)\n+        {\n+            $this->filter = $filter;\n+        }\n+\n+        /**\n+         * @return string\n+         */\n+        public function getFilter(): string\n+        {\n+            return $this->filter;\n+        }\n+    }\n+\n+How to store images to MongoDB GridFS?\n+--------------------------------------\n+\n+In Sylius the `KnpGaufretteBundle <https://github.com/KnpLabs/KnpGaufretteBundle>`_ is used to store images. In order to\n+save images to MongoDB GridFS the bundle configuration must be changed.\n+\n+First of all a new service is introduced.\n+\n+.. code-block:: yml\n+\n+    services:\n+      app.gaufrette_loader.doctrine_grid_fs:\n+        class: Doctrine\\MongoDB\\GridFS\n+        factory: [\"@doctrine.odm.mongodb.document_manager\", \"getDocumentCollection\"]\n+        arguments: [\"AppBundle\\\\Document\\\\Product\\\\Image\"]\n+        public: false\n+\n+      app.gaufrette_loader.grid_fs:\n+        class: MongoGridFS\n+        factory: [\"@app.gaufrette_loader.doctrine_grid_fs\", \"getMongoCollection\"]\n+\n+Afterwards this service ``app.gaufrette_loader.grid_fs`` is used in ``app/config/config.yml``:\n+\n+.. code-block:: yml\n+\n+    knp_gaufrette:\n+      adapters:\n+        sylius_image:\n+          gridfs:\n+            mongogridfs_id: app.gaufrette_loader.grid_fs\n+\n+Once this configuration is changed, newly uploaded images are already stored to MongoDB GridFS.\n+\n+\n+How to load images from MongoDB GridFS?\n+---------------------------------------\n+\n+Loading images from MongoDB GridFS is a bit more complicated and requires some custom classes.\n+\n+First of all a new ``data_loader`` is written and configured for the ``LiipImagineBundle``.","path":"docs/cookbook/images-gridfs.rst","position":363,"original_position":363,"commit_id":"73b57d4414b462d2b6be8a4bc28d5471898e590f","original_commit_id":"73b57d4414b462d2b6be8a4bc28d5471898e590f","user":{"login":"venyii","id":502368,"avatar_url":"https://avatars.githubusercontent.com/u/502368?v=3","gravatar_id":"","url":"https://api.github.com/users/venyii","html_url":"https://github.com/venyii","followers_url":"https://api.github.com/users/venyii/followers","following_url":"https://api.github.com/users/venyii/following{/other_user}","gists_url":"https://api.github.com/users/venyii/gists{/gist_id}","starred_url":"https://api.github.com/users/venyii/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/venyii/subscriptions","organizations_url":"https://api.github.com/users/venyii/orgs","repos_url":"https://api.github.com/users/venyii/repos","events_url":"https://api.github.com/users/venyii/events{/privacy}","received_events_url":"https://api.github.com/users/venyii/received_events","type":"User","site_admin":false},"body":"```\r\nFirst of all we'll have to create a new ``data_loader`` for the ``LiipImagineBundle``.\r\n```","created_at":"2017-01-09T00:05:45Z","updated_at":"2017-01-09T00:46:38Z","html_url":"https://github.com/gruberro/Sylius/pull/1#discussion_r95092686","pull_request_url":"https://api.github.com/repos/gruberro/Sylius/pulls/1","_links":{"self":{"href":"https://api.github.com/repos/gruberro/Sylius/pulls/comments/95092686"},"html":{"href":"https://github.com/gruberro/Sylius/pull/1#discussion_r95092686"},"pull_request":{"href":"https://api.github.com/repos/gruberro/Sylius/pulls/1"}}},"pull_request":{"url":"https://api.github.com/repos/gruberro/Sylius/pulls/1","id":100616615,"html_url":"https://github.com/gruberro/Sylius/pull/1","diff_url":"https://github.com/gruberro/Sylius/pull/1.diff","patch_url":"https://github.com/gruberro/Sylius/pull/1.patch","issue_url":"https://api.github.com/repos/gruberro/Sylius/issues/1","number":1,"state":"open","locked":false,"title":"Store and load images with MongoDB's GridFS","user":{"login":"gruberro","id":1596103,"avatar_url":"https://avatars.githubusercontent.com/u/1596103?v=3","gravatar_id":"","url":"https://api.github.com/users/gruberro","html_url":"https://github.com/gruberro","followers_url":"https://api.github.com/users/gruberro/followers","following_url":"https://api.github.com/users/gruberro/following{/other_user}","gists_url":"https://api.github.com/users/gruberro/gists{/gist_id}","starred_url":"https://api.github.com/users/gruberro/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/gruberro/subscriptions","organizations_url":"https://api.github.com/users/gruberro/orgs","repos_url":"https://api.github.com/users/gruberro/repos","events_url":"https://api.github.com/users/gruberro/events{/privacy}","received_events_url":"https://api.github.com/users/gruberro/received_events","type":"User","site_admin":false},"body":"","created_at":"2017-01-08T21:18:56Z","updated_at":"2017-01-09T00:46:38Z","closed_at":null,"merged_at":null,"merge_commit_sha":"59d91f9a5c365ac4af3dfffa007288498d397d7c","assignee":null,"assignees":[],"milestone":null,"commits_url":"https://api.github.com/repos/gruberro/Sylius/pulls/1/commits","review_comments_url":"https://api.github.com/repos/gruberro/Sylius/pulls/1/comments","review_comment_url":"https://api.github.com/repos/gruberro/Sylius/pulls/comments{/number}","comments_url":"https://api.github.com/repos/gruberro/Sylius/issues/1/comments","statuses_url":"https://api.github.com/repos/gruberro/Sylius/statuses/73b57d4414b462d2b6be8a4bc28d5471898e590f","head":{"label":"gruberro:manage-images-with-mongodb-gridfs","ref":"manage-images-with-mongodb-gridfs","sha":"73b57d4414b462d2b6be8a4bc28d5471898e590f","user":{"login":"gruberro","id":1596103,"avatar_url":"https://avatars.githubusercontent.com/u/1596103?v=3","gravatar_id":"","url":"https://api.github.com/users/gruberro","html_url":"https://github.com/gruberro","followers_url":"https://api.github.com/users/gruberro/followers","following_url":"https://api.github.com/users/gruberro/following{/other_user}","gists_url":"https://api.github.com/users/gruberro/gists{/gist_id}","starred_url":"https://api.github.com/users/gruberro/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/gruberro/subscriptions","organizations_url":"https://api.github.com/users/gruberro/orgs","repos_url":"https://api.github.com/users/gruberro/repos","events_url":"https://api.github.com/users/gruberro/events{/privacy}","received_events_url":"https://api.github.com/users/gruberro/received_events","type":"User","site_admin":false},"repo":{"id":74144266,"name":"Sylius","full_name":"gruberro/Sylius","owner":{"login":"gruberro","id":1596103,"avatar_url":"https://avatars.githubusercontent.com/u/1596103?v=3","gravatar_id":"","url":"https://api.github.com/users/gruberro","html_url":"https://github.com/gruberro","followers_url":"https://api.github.com/users/gruberro/followers","following_url":"https://api.github.com/users/gruberro/following{/other_user}","gists_url":"https://api.github.com/users/gruberro/gists{/gist_id}","starred_url":"https://api.github.com/users/gruberro/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/gruberro/subscriptions","organizations_url":"https://api.github.com/users/gruberro/orgs","repos_url":"https://api.github.com/users/gruberro/repos","events_url":"https://api.github.com/users/gruberro/events{/privacy}","received_events_url":"https://api.github.com/users/gruberro/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/gruberro/Sylius","description":"eCommerce PHP framework built on top of Symfony with component-based architecture and format-agnostic rendering. (HTML/JSON/XML)","fork":true,"url":"https://api.github.com/repos/gruberro/Sylius","forks_url":"https://api.github.com/repos/gruberro/Sylius/forks","keys_url":"https://api.github.com/repos/gruberro/Sylius/keys{/key_id}","collaborators_url":"https://api.github.com/repos/gruberro/Sylius/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/gruberro/Sylius/teams","hooks_url":"https://api.github.com/repos/gruberro/Sylius/hooks","issue_events_url":"https://api.github.com/repos/gruberro/Sylius/issues/events{/number}","events_url":"https://api.github.com/repos/gruberro/Sylius/events","assignees_url":"https://api.github.com/repos/gruberro/Sylius/assignees{/user}","branches_url":"https://api.github.com/repos/gruberro/Sylius/branches{/branch}","tags_url":"https://api.github.com/repos/gruberro/Sylius/tags","blobs_url":"https://api.github.com/repos/gruberro/Sylius/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/gruberro/Sylius/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/gruberro/Sylius/git/refs{/sha}","trees_url":"https://api.github.com/repos/gruberro/Sylius/git/trees{/sha}","statuses_url":"https://api.github.com/repos/gruberro/Sylius/statuses/{sha}","languages_url":"https://api.github.com/repos/gruberro/Sylius/languages","stargazers_url":"https://api.github.com/repos/gruberro/Sylius/stargazers","contributors_url":"https://api.github.com/repos/gruberro/Sylius/contributors","subscribers_url":"https://api.github.com/repos/gruberro/Sylius/subscribers","subscription_url":"https://api.github.com/repos/gruberro/Sylius/subscription","commits_url":"https://api.github.com/repos/gruberro/Sylius/commits{/sha}","git_commits_url":"https://api.github.com/repos/gruberro/Sylius/git/commits{/sha}","comments_url":"https://api.github.com/repos/gruberro/Sylius/comments{/number}","issue_comment_url":"https://api.github.com/repos/gruberro/Sylius/issues/comments{/number}","contents_url":"https://api.github.com/repos/gruberro/Sylius/contents/{+path}","compare_url":"https://api.github.com/repos/gruberro/Sylius/compare/{base}...{head}","merges_url":"https://api.github.com/repos/gruberro/Sylius/merges","archive_url":"https://api.github.com/repos/gruberro/Sylius/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/gruberro/Sylius/downloads","issues_url":"https://api.github.com/repos/gruberro/Sylius/issues{/number}","pulls_url":"https://api.github.com/repos/gruberro/Sylius/pulls{/number}","milestones_url":"https://api.github.com/repos/gruberro/Sylius/milestones{/number}","notifications_url":"https://api.github.com/repos/gruberro/Sylius/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/gruberro/Sylius/labels{/name}","releases_url":"https://api.github.com/repos/gruberro/Sylius/releases{/id}","deployments_url":"https://api.github.com/repos/gruberro/Sylius/deployments","created_at":"2016-11-18T15:55:24Z","updated_at":"2016-11-18T15:55:34Z","pushed_at":"2017-01-08T21:18:56Z","git_url":"git://github.com/gruberro/Sylius.git","ssh_url":"git@github.com:gruberro/Sylius.git","clone_url":"https://github.com/gruberro/Sylius.git","svn_url":"https://github.com/gruberro/Sylius","homepage":"http://Sylius.org","size":52726,"stargazers_count":0,"watchers_count":0,"language":"PHP","has_issues":false,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":0,"mirror_url":null,"open_issues_count":1,"forks":0,"open_issues":1,"watchers":0,"default_branch":"master"}},"base":{"label":"gruberro:master","ref":"master","sha":"e78af09509c306a35543b69805c269d4c7e1dd14","user":{"login":"gruberro","id":1596103,"avatar_url":"https://avatars.githubusercontent.com/u/1596103?v=3","gravatar_id":"","url":"https://api.github.com/users/gruberro","html_url":"https://github.com/gruberro","followers_url":"https://api.github.com/users/gruberro/followers","following_url":"https://api.github.com/users/gruberro/following{/other_user}","gists_url":"https://api.github.com/users/gruberro/gists{/gist_id}","starred_url":"https://api.github.com/users/gruberro/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/gruberro/subscriptions","organizations_url":"https://api.github.com/users/gruberro/orgs","repos_url":"https://api.github.com/users/gruberro/repos","events_url":"https://api.github.com/users/gruberro/events{/privacy}","received_events_url":"https://api.github.com/users/gruberro/received_events","type":"User","site_admin":false},"repo":{"id":74144266,"name":"Sylius","full_name":"gruberro/Sylius","owner":{"login":"gruberro","id":1596103,"avatar_url":"https://avatars.githubusercontent.com/u/1596103?v=3","gravatar_id":"","url":"https://api.github.com/users/gruberro","html_url":"https://github.com/gruberro","followers_url":"https://api.github.com/users/gruberro/followers","following_url":"https://api.github.com/users/gruberro/following{/other_user}","gists_url":"https://api.github.com/users/gruberro/gists{/gist_id}","starred_url":"https://api.github.com/users/gruberro/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/gruberro/subscriptions","organizations_url":"https://api.github.com/users/gruberro/orgs","repos_url":"https://api.github.com/users/gruberro/repos","events_url":"https://api.github.com/users/gruberro/events{/privacy}","received_events_url":"https://api.github.com/users/gruberro/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/gruberro/Sylius","description":"eCommerce PHP framework built on top of Symfony with component-based architecture and format-agnostic rendering. (HTML/JSON/XML)","fork":true,"url":"https://api.github.com/repos/gruberro/Sylius","forks_url":"https://api.github.com/repos/gruberro/Sylius/forks","keys_url":"https://api.github.com/repos/gruberro/Sylius/keys{/key_id}","collaborators_url":"https://api.github.com/repos/gruberro/Sylius/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/gruberro/Sylius/teams","hooks_url":"https://api.github.com/repos/gruberro/Sylius/hooks","issue_events_url":"https://api.github.com/repos/gruberro/Sylius/issues/events{/number}","events_url":"https://api.github.com/repos/gruberro/Sylius/events","assignees_url":"https://api.github.com/repos/gruberro/Sylius/assignees{/user}","branches_url":"https://api.github.com/repos/gruberro/Sylius/branches{/branch}","tags_url":"https://api.github.com/repos/gruberro/Sylius/tags","blobs_url":"https://api.github.com/repos/gruberro/Sylius/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/gruberro/Sylius/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/gruberro/Sylius/git/refs{/sha}","trees_url":"https://api.github.com/repos/gruberro/Sylius/git/trees{/sha}","statuses_url":"https://api.github.com/repos/gruberro/Sylius/statuses/{sha}","languages_url":"https://api.github.com/repos/gruberro/Sylius/languages","stargazers_url":"https://api.github.com/repos/gruberro/Sylius/stargazers","contributors_url":"https://api.github.com/repos/gruberro/Sylius/contributors","subscribers_url":"https://api.github.com/repos/gruberro/Sylius/subscribers","subscription_url":"https://api.github.com/repos/gruberro/Sylius/subscription","commits_url":"https://api.github.com/repos/gruberro/Sylius/commits{/sha}","git_commits_url":"https://api.github.com/repos/gruberro/Sylius/git/commits{/sha}","comments_url":"https://api.github.com/repos/gruberro/Sylius/comments{/number}","issue_comment_url":"https://api.github.com/repos/gruberro/Sylius/issues/comments{/number}","contents_url":"https://api.github.com/repos/gruberro/Sylius/contents/{+path}","compare_url":"https://api.github.com/repos/gruberro/Sylius/compare/{base}...{head}","merges_url":"https://api.github.com/repos/gruberro/Sylius/merges","archive_url":"https://api.github.com/repos/gruberro/Sylius/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/gruberro/Sylius/downloads","issues_url":"https://api.github.com/repos/gruberro/Sylius/issues{/number}","pulls_url":"https://api.github.com/repos/gruberro/Sylius/pulls{/number}","milestones_url":"https://api.github.com/repos/gruberro/Sylius/milestones{/number}","notifications_url":"https://api.github.com/repos/gruberro/Sylius/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/gruberro/Sylius/labels{/name}","releases_url":"https://api.github.com/repos/gruberro/Sylius/releases{/id}","deployments_url":"https://api.github.com/repos/gruberro/Sylius/deployments","created_at":"2016-11-18T15:55:24Z","updated_at":"2016-11-18T15:55:34Z","pushed_at":"2017-01-08T21:18:56Z","git_url":"git://github.com/gruberro/Sylius.git","ssh_url":"git@github.com:gruberro/Sylius.git","clone_url":"https://github.com/gruberro/Sylius.git","svn_url":"https://github.com/gruberro/Sylius","homepage":"http://Sylius.org","size":52726,"stargazers_count":0,"watchers_count":0,"language":"PHP","has_issues":false,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":0,"mirror_url":null,"open_issues_count":1,"forks":0,"open_issues":1,"watchers":0,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/gruberro/Sylius/pulls/1"},"html":{"href":"https://github.com/gruberro/Sylius/pull/1"},"issue":{"href":"https://api.github.com/repos/gruberro/Sylius/issues/1"},"comments":{"href":"https://api.github.com/repos/gruberro/Sylius/issues/1/comments"},"review_comments":{"href":"https://api.github.com/repos/gruberro/Sylius/pulls/1/comments"},"review_comment":{"href":"https://api.github.com/repos/gruberro/Sylius/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/gruberro/Sylius/pulls/1/commits"},"statuses":{"href":"https://api.github.com/repos/gruberro/Sylius/statuses/73b57d4414b462d2b6be8a4bc28d5471898e590f"}}}}
{"actor":{"display_login":"venyii"}}