{"action":"created","comment":{"url":"https://api.github.com/repos/eccubevn/related-product-plugin/pulls/comments/84622058","pull_request_review_id":5387649,"id":84622058,"diff_hunk":"@@ -11,205 +11,105 @@\n \n namespace Plugin\\RelatedProduct;\n \n-use Symfony\\Component\\DomCrawler\\Crawler;\n+use Eccube\\Common\\Constant;\n use Symfony\\Component\\HttpKernel\\Event\\FilterResponseEvent;\n-use Symfony\\Component\\HttpFoundation\\RedirectResponse;\n \n+/**\n+ * Class Event\n+ * @package Plugin\\RelatedProduct\n+ */\n class Event\n {\n+    /**\n+     * @var $app\n+     */\n     private $app;\n \n+    /**\n+     * @var $legacyEvent\n+     */\n+    private $legacyEvent;\n+\n+    /**\n+     * Event constructor.\n+     * @param \\Eccube\\Application $app\n+     */\n     public function __construct($app)\n     {\n         $this->app = $app;\n+        $this->legacyEvent = new EventLegacy($app);\n     }\n \n-    // フロント：商品詳細画面に関連商品を表示\n+    /**\n+     * フロント：商品詳細画面に関連商品を表示\n+     * @param FilterResponseEvent $event\n+     */\n     public function showRelatedProduct(FilterResponseEvent $event)\n     {\n-        $app = $this->app;\n-\n-        $id = $app['request']->attributes->get('id');\n-        $Product = $app['eccube.repository.product']->find($id);\n-        $RelatedProducts = $app['eccube.plugin.repository.related_product']->findBy(array('Product' => $Product));\n-\n-        if (count($RelatedProducts) > 0) {\n-            $twig = $app->renderView(\n-                'RelatedProduct/Resource/template/Front/related_product.twig',\n-                array(\n-                    'RelatedProducts' => $RelatedProducts,\n-                )\n-            );\n-\n-            $response = $event->getResponse();\n-\n-            if ($response instanceof RedirectResponse) {\n-                return;\n-            }\n-\n-            $html = $response->getContent();\n-            $crawler = new Crawler($html);\n-\n-            $oldHtml = $crawler->filter('#main')->html();\n-            $oldHtml = html_entity_decode($oldHtml, ENT_NOQUOTES, 'UTF-8');\n-            $newHtml = $oldHtml.$twig;\n-\n-            $html = $this->getHtml($crawler);\n-            $html = str_replace($oldHtml, $newHtml, $html);\n-\n-            $response->setContent($html);\n-            $event->setResponse($response);\n+        if ($this->supportNewHookPoint()) {\n+            return;\n         }\n+        $this->legacyEvent->showRelatedProduct($event);\n     }\n \n+    /**\n+     * new hookpoint for save related product\n+     * @param FilterResponseEvent $event\n+     */\n     public function registerRelatedProduct(FilterResponseEvent $event)\n     {\n-        $app = $this->app;\n-        if (!$app->isGranted('ROLE_ADMIN')) {\n+        if ($this->supportNewHookPoint()) {\n             return;\n         }\n-\n-        if ('POST' === $app['request']->getMethod()) {\n-            // ProductControllerの登録成功時のみ処理を通す\n-            // RedirectResponseかどうかで判定する.\n-            $response = $event->getResponse();\n-            if (!$response instanceof RedirectResponse) {\n-                return;\n-            }\n-            /* @var $Product \\Eccube\\Entity\\Product */\n-            $Product = $this->getTargetProduct($event);\n-            $builder = $app['form.factory']->createBuilder('admin_product');\n-\n-            if ($Product->hasProductClass()) {\n-                $builder->remove('class');\n-            }\n-\n-            $form = $builder->getForm();\n-            $form->handleRequest($app['request']);\n-\n-            if ($form->isValid()) {\n-                $app['eccube.plugin.repository.related_product']->removeChildProduct($Product);\n-                $app['orm.em']->flush();\n-\n-                $RelatedProducts = $form->get('related_collection')->getData();\n-                foreach ($RelatedProducts as $RelatedProduct) {\n-                    /* @var $RelatedProduct \\Plugin\\RelatedProduct\\Entity\\RelatedProduct */\n-                    if ($RelatedProduct->getChildProduct() instanceof \\Eccube\\Entity\\Product) {\n-                        $RelatedProduct->setProduct($Product);\n-                        $app['orm.em']->persist($RelatedProduct);\n-                    }\n-                }\n-                $app['orm.em']->flush();\n-            }\n-        }\n-    }\n-\n-    private function getTargetProduct($event)\n-    {\n-        $request = $event->getRequest();\n-        $response = $event->getResponse();\n-        if ($request->attributes->get('id')) {\n-            $id = $request->attributes->get('id');\n-        } else {\n-            $location = explode('/', $response->headers->get('location'));\n-            $url = explode('/', $this->app->url('admin_product_product_edit', array('id' => '0')));\n-            $diffs = array_values(array_diff($location, $url));\n-            $id = $diffs[0];\n-        }\n-\n-        $Product = $this->app['eccube.repository.product']->find($id);\n-\n-        return $Product;\n+        $this->legacyEvent->registerRelatedProduct($event);\n     }\n \n+    /**\n+     * new hookpoint for add RelatedProduct to product edit\n+     * @param FilterResponseEvent $event\n+     */\n     public function addContentOnProductEdit(FilterResponseEvent $event)\n     {\n-        $app = $this->app;\n-        if (!$app->isGranted('ROLE_ADMIN')) {\n+        if ($this->supportNewHookPoint()) {\n             return;\n         }\n-        $request = $event->getRequest();\n-        $response = $event->getResponse();\n-        $id = $request->attributes->get('id');\n-\n-        $html = $response->getContent();\n-        $crawler = new Crawler($html);\n-\n-        $form = $app['form.factory']\n-            ->createBuilder('admin_product')\n-            ->getForm();\n-\n-        if ($id) {\n-            $Product = $app['eccube.repository.product']->find($id);\n-        } else {\n-            $Product = new \\Eccube\\Entity\\Product();\n-        }\n-\n-        $RelatedProducts = $app['eccube.plugin.repository.related_product']->findBy(\n-            array(\n-                'Product' => $Product,\n-            ));\n-\n-        $loop = 5 - count($RelatedProducts);\n-        for ($i = 0; $i < $loop; $i++) {\n-            $RelatedProduct = new \\Plugin\\RelatedProduct\\Entity\\RelatedProduct();\n-            $RelatedProduct\n-                ->setProductId($id)\n-                ->setProduct($Product);\n-            $RelatedProducts[] = $RelatedProduct;\n-        }\n-        $form->get('related_collection')->setData($RelatedProducts);\n-\n-        $form->handleRequest($request);\n-\n-        // 商品検索フォーム\n-        $searchForm = $app['form.factory']\n-            ->createBuilder('admin_search_product')\n-            ->getForm();\n+        $this->legacyEvent->addContentOnProductEdit($event);\n+    }\n \n-        $twig = $app->renderView(\n-            'RelatedProduct/Resource/template/Admin/related_product.twig',\n-            array(\n-                'form' => $form->createView(),\n-            )\n-        );\n-        $modal = $app->renderView(\n-            'RelatedProduct/Resource/template/Admin/modal.twig',\n-            array(\n-                'searchForm' => $searchForm->createView(),\n-                'Product' => $Product,\n-            )\n-        );\n-        $oldElement = $crawler\n-            ->filter('.accordion')\n-            ->last();\n-        if ($oldElement->count() > 0) {\n-            $oldHtml = $oldElement->html();\n-            $newHtml = $oldHtml.$twig;\n+    /**\n+     * フロント：商品詳細画面に関連商品を表示\n+     * @param FilterResponseEvent $event\n+     */\n+    public function onProductDetailRender(FilterResponseEvent $event)\n+    {\n+        $this->legacyEvent->showRelatedProduct($event);\n+    }\n \n-            $html = $this->getHtml($crawler);\n-            $html = $html.$modal;\n-            $html = str_replace($oldHtml, $newHtml, $html);\n+    /**\n+     * new hookpoint for add RelatedProduct to product edit\n+     * @param FilterResponseEvent $event\n+     */\n+    public function onProductEditRender(FilterResponseEvent $event)\n+    {\n+        $this->legacyEvent->addContentOnProductEdit($event);","path":"Event.php","position":null,"original_position":235,"commit_id":"d393e4debd1fe0c578d64011e144c5c5e452896a","original_commit_id":"6aa935facbbc33d875337129358c718db93a5c04","user":{"login":"ryo-endo","id":16891862,"avatar_url":"https://avatars.githubusercontent.com/u/16891862?v=3","gravatar_id":"","url":"https://api.github.com/users/ryo-endo","html_url":"https://github.com/ryo-endo","followers_url":"https://api.github.com/users/ryo-endo/followers","following_url":"https://api.github.com/users/ryo-endo/following{/other_user}","gists_url":"https://api.github.com/users/ryo-endo/gists{/gist_id}","starred_url":"https://api.github.com/users/ryo-endo/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ryo-endo/subscriptions","organizations_url":"https://api.github.com/users/ryo-endo/orgs","repos_url":"https://api.github.com/users/ryo-endo/repos","events_url":"https://api.github.com/users/ryo-endo/events{/privacy}","received_events_url":"https://api.github.com/users/ryo-endo/received_events","type":"User","site_admin":false},"body":"新しいイベントでも、`legacyEvent`の関数を利用しています。\r\nこれでも動作はしますが、実装のお手本にならないので、修正をお願いします。\r\n\r\nCategoryContentsプラグインを参考にしてください。\r\nhttps://github.com/EC-CUBE/category-content-plugin","created_at":"2016-10-24T05:20:33Z","updated_at":"2016-10-24T05:57:32Z","html_url":"https://github.com/eccubevn/related-product-plugin/pull/1#discussion_r84622058","pull_request_url":"https://api.github.com/repos/eccubevn/related-product-plugin/pulls/1","_links":{"self":{"href":"https://api.github.com/repos/eccubevn/related-product-plugin/pulls/comments/84622058"},"html":{"href":"https://github.com/eccubevn/related-product-plugin/pull/1#discussion_r84622058"},"pull_request":{"href":"https://api.github.com/repos/eccubevn/related-product-plugin/pulls/1"}}},"pull_request":{"url":"https://api.github.com/repos/eccubevn/related-product-plugin/pulls/1","id":90314666,"html_url":"https://github.com/eccubevn/related-product-plugin/pull/1","diff_url":"https://github.com/eccubevn/related-product-plugin/pull/1.diff","patch_url":"https://github.com/eccubevn/related-product-plugin/pull/1.patch","issue_url":"https://api.github.com/repos/eccubevn/related-product-plugin/issues/1","number":1,"state":"open","locked":false,"title":"Related renew","user":{"login":"hoand-vn","id":18605901,"avatar_url":"https://avatars.githubusercontent.com/u/18605901?v=3","gravatar_id":"","url":"https://api.github.com/users/hoand-vn","html_url":"https://github.com/hoand-vn","followers_url":"https://api.github.com/users/hoand-vn/followers","following_url":"https://api.github.com/users/hoand-vn/following{/other_user}","gists_url":"https://api.github.com/users/hoand-vn/gists{/gist_id}","starred_url":"https://api.github.com/users/hoand-vn/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/hoand-vn/subscriptions","organizations_url":"https://api.github.com/users/hoand-vn/orgs","repos_url":"https://api.github.com/users/hoand-vn/repos","events_url":"https://api.github.com/users/hoand-vn/events{/privacy}","received_events_url":"https://api.github.com/users/hoand-vn/received_events","type":"User","site_admin":false},"body":"for review corss","created_at":"2016-10-21T02:44:57Z","updated_at":"2016-10-24T05:57:32Z","closed_at":null,"merged_at":null,"merge_commit_sha":"2f690ca5617ef467981be98cc1b29626043d72d5","assignee":null,"assignees":[],"milestone":null,"commits_url":"https://api.github.com/repos/eccubevn/related-product-plugin/pulls/1/commits","review_comments_url":"https://api.github.com/repos/eccubevn/related-product-plugin/pulls/1/comments","review_comment_url":"https://api.github.com/repos/eccubevn/related-product-plugin/pulls/comments{/number}","comments_url":"https://api.github.com/repos/eccubevn/related-product-plugin/issues/1/comments","statuses_url":"https://api.github.com/repos/eccubevn/related-product-plugin/statuses/d393e4debd1fe0c578d64011e144c5c5e452896a","head":{"label":"eccubevn:related-renew","ref":"related-renew","sha":"d393e4debd1fe0c578d64011e144c5c5e452896a","user":{"login":"eccubevn","id":19646075,"avatar_url":"https://avatars.githubusercontent.com/u/19646075?v=3","gravatar_id":"","url":"https://api.github.com/users/eccubevn","html_url":"https://github.com/eccubevn","followers_url":"https://api.github.com/users/eccubevn/followers","following_url":"https://api.github.com/users/eccubevn/following{/other_user}","gists_url":"https://api.github.com/users/eccubevn/gists{/gist_id}","starred_url":"https://api.github.com/users/eccubevn/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/eccubevn/subscriptions","organizations_url":"https://api.github.com/users/eccubevn/orgs","repos_url":"https://api.github.com/users/eccubevn/repos","events_url":"https://api.github.com/users/eccubevn/events{/privacy}","received_events_url":"https://api.github.com/users/eccubevn/received_events","type":"Organization","site_admin":false},"repo":{"id":71120534,"name":"related-product-plugin","full_name":"eccubevn/related-product-plugin","owner":{"login":"eccubevn","id":19646075,"avatar_url":"https://avatars.githubusercontent.com/u/19646075?v=3","gravatar_id":"","url":"https://api.github.com/users/eccubevn","html_url":"https://github.com/eccubevn","followers_url":"https://api.github.com/users/eccubevn/followers","following_url":"https://api.github.com/users/eccubevn/following{/other_user}","gists_url":"https://api.github.com/users/eccubevn/gists{/gist_id}","starred_url":"https://api.github.com/users/eccubevn/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/eccubevn/subscriptions","organizations_url":"https://api.github.com/users/eccubevn/orgs","repos_url":"https://api.github.com/users/eccubevn/repos","events_url":"https://api.github.com/users/eccubevn/events{/privacy}","received_events_url":"https://api.github.com/users/eccubevn/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/eccubevn/related-product-plugin","description":"関連商品プラグイン","fork":true,"url":"https://api.github.com/repos/eccubevn/related-product-plugin","forks_url":"https://api.github.com/repos/eccubevn/related-product-plugin/forks","keys_url":"https://api.github.com/repos/eccubevn/related-product-plugin/keys{/key_id}","collaborators_url":"https://api.github.com/repos/eccubevn/related-product-plugin/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/eccubevn/related-product-plugin/teams","hooks_url":"https://api.github.com/repos/eccubevn/related-product-plugin/hooks","issue_events_url":"https://api.github.com/repos/eccubevn/related-product-plugin/issues/events{/number}","events_url":"https://api.github.com/repos/eccubevn/related-product-plugin/events","assignees_url":"https://api.github.com/repos/eccubevn/related-product-plugin/assignees{/user}","branches_url":"https://api.github.com/repos/eccubevn/related-product-plugin/branches{/branch}","tags_url":"https://api.github.com/repos/eccubevn/related-product-plugin/tags","blobs_url":"https://api.github.com/repos/eccubevn/related-product-plugin/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/eccubevn/related-product-plugin/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/eccubevn/related-product-plugin/git/refs{/sha}","trees_url":"https://api.github.com/repos/eccubevn/related-product-plugin/git/trees{/sha}","statuses_url":"https://api.github.com/repos/eccubevn/related-product-plugin/statuses/{sha}","languages_url":"https://api.github.com/repos/eccubevn/related-product-plugin/languages","stargazers_url":"https://api.github.com/repos/eccubevn/related-product-plugin/stargazers","contributors_url":"https://api.github.com/repos/eccubevn/related-product-plugin/contributors","subscribers_url":"https://api.github.com/repos/eccubevn/related-product-plugin/subscribers","subscription_url":"https://api.github.com/repos/eccubevn/related-product-plugin/subscription","commits_url":"https://api.github.com/repos/eccubevn/related-product-plugin/commits{/sha}","git_commits_url":"https://api.github.com/repos/eccubevn/related-product-plugin/git/commits{/sha}","comments_url":"https://api.github.com/repos/eccubevn/related-product-plugin/comments{/number}","issue_comment_url":"https://api.github.com/repos/eccubevn/related-product-plugin/issues/comments{/number}","contents_url":"https://api.github.com/repos/eccubevn/related-product-plugin/contents/{+path}","compare_url":"https://api.github.com/repos/eccubevn/related-product-plugin/compare/{base}...{head}","merges_url":"https://api.github.com/repos/eccubevn/related-product-plugin/merges","archive_url":"https://api.github.com/repos/eccubevn/related-product-plugin/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/eccubevn/related-product-plugin/downloads","issues_url":"https://api.github.com/repos/eccubevn/related-product-plugin/issues{/number}","pulls_url":"https://api.github.com/repos/eccubevn/related-product-plugin/pulls{/number}","milestones_url":"https://api.github.com/repos/eccubevn/related-product-plugin/milestones{/number}","notifications_url":"https://api.github.com/repos/eccubevn/related-product-plugin/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/eccubevn/related-product-plugin/labels{/name}","releases_url":"https://api.github.com/repos/eccubevn/related-product-plugin/releases{/id}","deployments_url":"https://api.github.com/repos/eccubevn/related-product-plugin/deployments","created_at":"2016-10-17T09:15:57Z","updated_at":"2016-10-17T09:15:59Z","pushed_at":"2016-10-24T05:05:39Z","git_url":"git://github.com/eccubevn/related-product-plugin.git","ssh_url":"git@github.com:eccubevn/related-product-plugin.git","clone_url":"https://github.com/eccubevn/related-product-plugin.git","svn_url":"https://github.com/eccubevn/related-product-plugin","homepage":null,"size":68,"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":"eccubevn:master","ref":"master","sha":"fcd6591d08b42a2880445d80ca008e4cf83f26b6","user":{"login":"eccubevn","id":19646075,"avatar_url":"https://avatars.githubusercontent.com/u/19646075?v=3","gravatar_id":"","url":"https://api.github.com/users/eccubevn","html_url":"https://github.com/eccubevn","followers_url":"https://api.github.com/users/eccubevn/followers","following_url":"https://api.github.com/users/eccubevn/following{/other_user}","gists_url":"https://api.github.com/users/eccubevn/gists{/gist_id}","starred_url":"https://api.github.com/users/eccubevn/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/eccubevn/subscriptions","organizations_url":"https://api.github.com/users/eccubevn/orgs","repos_url":"https://api.github.com/users/eccubevn/repos","events_url":"https://api.github.com/users/eccubevn/events{/privacy}","received_events_url":"https://api.github.com/users/eccubevn/received_events","type":"Organization","site_admin":false},"repo":{"id":71120534,"name":"related-product-plugin","full_name":"eccubevn/related-product-plugin","owner":{"login":"eccubevn","id":19646075,"avatar_url":"https://avatars.githubusercontent.com/u/19646075?v=3","gravatar_id":"","url":"https://api.github.com/users/eccubevn","html_url":"https://github.com/eccubevn","followers_url":"https://api.github.com/users/eccubevn/followers","following_url":"https://api.github.com/users/eccubevn/following{/other_user}","gists_url":"https://api.github.com/users/eccubevn/gists{/gist_id}","starred_url":"https://api.github.com/users/eccubevn/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/eccubevn/subscriptions","organizations_url":"https://api.github.com/users/eccubevn/orgs","repos_url":"https://api.github.com/users/eccubevn/repos","events_url":"https://api.github.com/users/eccubevn/events{/privacy}","received_events_url":"https://api.github.com/users/eccubevn/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/eccubevn/related-product-plugin","description":"関連商品プラグイン","fork":true,"url":"https://api.github.com/repos/eccubevn/related-product-plugin","forks_url":"https://api.github.com/repos/eccubevn/related-product-plugin/forks","keys_url":"https://api.github.com/repos/eccubevn/related-product-plugin/keys{/key_id}","collaborators_url":"https://api.github.com/repos/eccubevn/related-product-plugin/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/eccubevn/related-product-plugin/teams","hooks_url":"https://api.github.com/repos/eccubevn/related-product-plugin/hooks","issue_events_url":"https://api.github.com/repos/eccubevn/related-product-plugin/issues/events{/number}","events_url":"https://api.github.com/repos/eccubevn/related-product-plugin/events","assignees_url":"https://api.github.com/repos/eccubevn/related-product-plugin/assignees{/user}","branches_url":"https://api.github.com/repos/eccubevn/related-product-plugin/branches{/branch}","tags_url":"https://api.github.com/repos/eccubevn/related-product-plugin/tags","blobs_url":"https://api.github.com/repos/eccubevn/related-product-plugin/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/eccubevn/related-product-plugin/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/eccubevn/related-product-plugin/git/refs{/sha}","trees_url":"https://api.github.com/repos/eccubevn/related-product-plugin/git/trees{/sha}","statuses_url":"https://api.github.com/repos/eccubevn/related-product-plugin/statuses/{sha}","languages_url":"https://api.github.com/repos/eccubevn/related-product-plugin/languages","stargazers_url":"https://api.github.com/repos/eccubevn/related-product-plugin/stargazers","contributors_url":"https://api.github.com/repos/eccubevn/related-product-plugin/contributors","subscribers_url":"https://api.github.com/repos/eccubevn/related-product-plugin/subscribers","subscription_url":"https://api.github.com/repos/eccubevn/related-product-plugin/subscription","commits_url":"https://api.github.com/repos/eccubevn/related-product-plugin/commits{/sha}","git_commits_url":"https://api.github.com/repos/eccubevn/related-product-plugin/git/commits{/sha}","comments_url":"https://api.github.com/repos/eccubevn/related-product-plugin/comments{/number}","issue_comment_url":"https://api.github.com/repos/eccubevn/related-product-plugin/issues/comments{/number}","contents_url":"https://api.github.com/repos/eccubevn/related-product-plugin/contents/{+path}","compare_url":"https://api.github.com/repos/eccubevn/related-product-plugin/compare/{base}...{head}","merges_url":"https://api.github.com/repos/eccubevn/related-product-plugin/merges","archive_url":"https://api.github.com/repos/eccubevn/related-product-plugin/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/eccubevn/related-product-plugin/downloads","issues_url":"https://api.github.com/repos/eccubevn/related-product-plugin/issues{/number}","pulls_url":"https://api.github.com/repos/eccubevn/related-product-plugin/pulls{/number}","milestones_url":"https://api.github.com/repos/eccubevn/related-product-plugin/milestones{/number}","notifications_url":"https://api.github.com/repos/eccubevn/related-product-plugin/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/eccubevn/related-product-plugin/labels{/name}","releases_url":"https://api.github.com/repos/eccubevn/related-product-plugin/releases{/id}","deployments_url":"https://api.github.com/repos/eccubevn/related-product-plugin/deployments","created_at":"2016-10-17T09:15:57Z","updated_at":"2016-10-17T09:15:59Z","pushed_at":"2016-10-24T05:05:39Z","git_url":"git://github.com/eccubevn/related-product-plugin.git","ssh_url":"git@github.com:eccubevn/related-product-plugin.git","clone_url":"https://github.com/eccubevn/related-product-plugin.git","svn_url":"https://github.com/eccubevn/related-product-plugin","homepage":null,"size":68,"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/eccubevn/related-product-plugin/pulls/1"},"html":{"href":"https://github.com/eccubevn/related-product-plugin/pull/1"},"issue":{"href":"https://api.github.com/repos/eccubevn/related-product-plugin/issues/1"},"comments":{"href":"https://api.github.com/repos/eccubevn/related-product-plugin/issues/1/comments"},"review_comments":{"href":"https://api.github.com/repos/eccubevn/related-product-plugin/pulls/1/comments"},"review_comment":{"href":"https://api.github.com/repos/eccubevn/related-product-plugin/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/eccubevn/related-product-plugin/pulls/1/commits"},"statuses":{"href":"https://api.github.com/repos/eccubevn/related-product-plugin/statuses/d393e4debd1fe0c578d64011e144c5c5e452896a"}}}}
{"actor":{"display_login":"ryo-endo"}}