{"action":"created","comment":{"url":"https://api.github.com/repos/yiisoft/yii2/pulls/comments/76592572","id":76592572,"diff_hunk":"@@ -0,0 +1,48 @@\n+<?php\n+\n+/**\n+ * @link http://www.yiiframework.com/\n+ * @copyright Copyright (c) 2008 Yii Software LLC\n+ * @license http://www.yiiframework.com/license/\n+ */\n+\n+namespace yii\\web;\n+\n+/**\n+ * UrlNormalizerRedirectException represents an information for redirection which should be\n+ * performed during the URL normalization.\n+ *\n+ * @author Robert Korulczyk <robert@korulczyk.pl>\n+ * @since 2.0.10\n+ */\n+class UrlNormalizerRedirectException extends \\yii\\base\\Exception\n+{\n+    /**\n+     * @var string route used for generate URL for redirection\n+     */\n+    public $route;\n+    /**\n+     * @var array params used for generate URL for redirection\n+     */\n+    public $params;\n+    /**\n+     * @var integer the HTTP status code\n+     */\n+    public $statusCode;\n+\n+    /**\n+     * @param string $route route used for generate URL for redirection\n+     * @param string $params params used for generate URL for redirection","path":"framework/web/UrlNormalizerRedirectException.php","position":35,"original_position":35,"commit_id":"73dfdf297a805fdc73bc0d5bbe8c0168ac88d168","original_commit_id":"73dfdf297a805fdc73bc0d5bbe8c0168ac88d168","user":{"login":"SilverFire","id":4499203,"avatar_url":"https://avatars.githubusercontent.com/u/4499203?v=3","gravatar_id":"","url":"https://api.github.com/users/SilverFire","html_url":"https://github.com/SilverFire","followers_url":"https://api.github.com/users/SilverFire/followers","following_url":"https://api.github.com/users/SilverFire/following{/other_user}","gists_url":"https://api.github.com/users/SilverFire/gists{/gist_id}","starred_url":"https://api.github.com/users/SilverFire/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/SilverFire/subscriptions","organizations_url":"https://api.github.com/users/SilverFire/orgs","repos_url":"https://api.github.com/users/SilverFire/repos","events_url":"https://api.github.com/users/SilverFire/events{/privacy}","received_events_url":"https://api.github.com/users/SilverFire/received_events","type":"User","site_admin":false},"body":"same here","created_at":"2016-08-29T11:35:39Z","updated_at":"2016-08-29T11:35:40Z","html_url":"https://github.com/yiisoft/yii2/pull/12240#discussion_r76592572","pull_request_url":"https://api.github.com/repos/yiisoft/yii2/pulls/12240","_links":{"self":{"href":"https://api.github.com/repos/yiisoft/yii2/pulls/comments/76592572"},"html":{"href":"https://github.com/yiisoft/yii2/pull/12240#discussion_r76592572"},"pull_request":{"href":"https://api.github.com/repos/yiisoft/yii2/pulls/12240"}}},"pull_request":{"url":"https://api.github.com/repos/yiisoft/yii2/pulls/12240","id":82110655,"html_url":"https://github.com/yiisoft/yii2/pull/12240","diff_url":"https://github.com/yiisoft/yii2/pull/12240.diff","patch_url":"https://github.com/yiisoft/yii2/pull/12240.patch","issue_url":"https://api.github.com/repos/yiisoft/yii2/issues/12240","number":12240,"state":"open","locked":false,"title":"Add UrlNormalizer for UrlRule and UrlManager","user":{"login":"rob006","id":5972388,"avatar_url":"https://avatars.githubusercontent.com/u/5972388?v=3","gravatar_id":"","url":"https://api.github.com/users/rob006","html_url":"https://github.com/rob006","followers_url":"https://api.github.com/users/rob006/followers","following_url":"https://api.github.com/users/rob006/following{/other_user}","gists_url":"https://api.github.com/users/rob006/gists{/gist_id}","starred_url":"https://api.github.com/users/rob006/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/rob006/subscriptions","organizations_url":"https://api.github.com/users/rob006/orgs","repos_url":"https://api.github.com/users/rob006/repos","events_url":"https://api.github.com/users/rob006/events{/privacy}","received_events_url":"https://api.github.com/users/rob006/received_events","type":"User","site_admin":false},"body":"| Q             | A\r\n| ------------- | ---\r\n| Is bugfix?    | yes\r\n| New feature?  | yes\r\n| Breaks BC?    | ?\r\n| Tests pass?   | yes\r\n| Fixed issues  | #7670, #8281, #8370\r\n\r\nfixes #7670, fixes #8281, fixes #8370\r\ncloses #10745, closes #11381\r\n\r\nAnother attempt to #7670. :) Mostly based on #11381, but with many simplifications and improved performance. By default, there is only one normalizer assigned for UrlMananger and UrlRules reuse it. Each UrlRule can have their own normalizer, which will be cached with rule. Config for normalization of trailing slashes was simplified - right now this behavior depends on suffix: \r\n* if `suffix` has trailing slash, trailing slash will be forced during normalization\r\n* if `suffix` does not have trailing slash, trailing slashes will be removed during normalization.\r\n\r\nTODO:\r\n- [x] Implementation\r\n- [x] Tests\r\n- [x] Docs\r\n","created_at":"2016-08-21T17:02:26Z","updated_at":"2016-08-29T11:35:40Z","closed_at":null,"merged_at":null,"merge_commit_sha":"2525f3c755ad806f1db73c8ecdfe96f6818469b2","assignee":{"login":"samdark","id":47294,"avatar_url":"https://avatars.githubusercontent.com/u/47294?v=3","gravatar_id":"","url":"https://api.github.com/users/samdark","html_url":"https://github.com/samdark","followers_url":"https://api.github.com/users/samdark/followers","following_url":"https://api.github.com/users/samdark/following{/other_user}","gists_url":"https://api.github.com/users/samdark/gists{/gist_id}","starred_url":"https://api.github.com/users/samdark/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/samdark/subscriptions","organizations_url":"https://api.github.com/users/samdark/orgs","repos_url":"https://api.github.com/users/samdark/repos","events_url":"https://api.github.com/users/samdark/events{/privacy}","received_events_url":"https://api.github.com/users/samdark/received_events","type":"User","site_admin":false},"assignees":[{"login":"samdark","id":47294,"avatar_url":"https://avatars.githubusercontent.com/u/47294?v=3","gravatar_id":"","url":"https://api.github.com/users/samdark","html_url":"https://github.com/samdark","followers_url":"https://api.github.com/users/samdark/followers","following_url":"https://api.github.com/users/samdark/following{/other_user}","gists_url":"https://api.github.com/users/samdark/gists{/gist_id}","starred_url":"https://api.github.com/users/samdark/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/samdark/subscriptions","organizations_url":"https://api.github.com/users/samdark/orgs","repos_url":"https://api.github.com/users/samdark/repos","events_url":"https://api.github.com/users/samdark/events{/privacy}","received_events_url":"https://api.github.com/users/samdark/received_events","type":"User","site_admin":false}],"milestone":{"url":"https://api.github.com/repos/yiisoft/yii2/milestones/18","html_url":"https://github.com/yiisoft/yii2/milestones/2.0.10","labels_url":"https://api.github.com/repos/yiisoft/yii2/milestones/18/labels","id":1679982,"number":18,"title":"2.0.10","description":"","creator":{"login":"cebe","id":189796,"avatar_url":"https://avatars.githubusercontent.com/u/189796?v=3","gravatar_id":"","url":"https://api.github.com/users/cebe","html_url":"https://github.com/cebe","followers_url":"https://api.github.com/users/cebe/followers","following_url":"https://api.github.com/users/cebe/following{/other_user}","gists_url":"https://api.github.com/users/cebe/gists{/gist_id}","starred_url":"https://api.github.com/users/cebe/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/cebe/subscriptions","organizations_url":"https://api.github.com/users/cebe/orgs","repos_url":"https://api.github.com/users/cebe/repos","events_url":"https://api.github.com/users/cebe/events{/privacy}","received_events_url":"https://api.github.com/users/cebe/received_events","type":"User","site_admin":false},"open_issues":79,"closed_issues":80,"state":"open","created_at":"2016-04-03T04:39:22Z","updated_at":"2016-08-29T06:17:43Z","due_on":"2016-09-10T22:00:00Z","closed_at":null},"commits_url":"https://api.github.com/repos/yiisoft/yii2/pulls/12240/commits","review_comments_url":"https://api.github.com/repos/yiisoft/yii2/pulls/12240/comments","review_comment_url":"https://api.github.com/repos/yiisoft/yii2/pulls/comments{/number}","comments_url":"https://api.github.com/repos/yiisoft/yii2/issues/12240/comments","statuses_url":"https://api.github.com/repos/yiisoft/yii2/statuses/73dfdf297a805fdc73bc0d5bbe8c0168ac88d168","head":{"label":"rob006:url-normalizer","ref":"url-normalizer","sha":"73dfdf297a805fdc73bc0d5bbe8c0168ac88d168","user":{"login":"rob006","id":5972388,"avatar_url":"https://avatars.githubusercontent.com/u/5972388?v=3","gravatar_id":"","url":"https://api.github.com/users/rob006","html_url":"https://github.com/rob006","followers_url":"https://api.github.com/users/rob006/followers","following_url":"https://api.github.com/users/rob006/following{/other_user}","gists_url":"https://api.github.com/users/rob006/gists{/gist_id}","starred_url":"https://api.github.com/users/rob006/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/rob006/subscriptions","organizations_url":"https://api.github.com/users/rob006/orgs","repos_url":"https://api.github.com/users/rob006/repos","events_url":"https://api.github.com/users/rob006/events{/privacy}","received_events_url":"https://api.github.com/users/rob006/received_events","type":"User","site_admin":false},"repo":{"id":18883588,"name":"yii2-dev","full_name":"rob006/yii2-dev","owner":{"login":"rob006","id":5972388,"avatar_url":"https://avatars.githubusercontent.com/u/5972388?v=3","gravatar_id":"","url":"https://api.github.com/users/rob006","html_url":"https://github.com/rob006","followers_url":"https://api.github.com/users/rob006/followers","following_url":"https://api.github.com/users/rob006/following{/other_user}","gists_url":"https://api.github.com/users/rob006/gists{/gist_id}","starred_url":"https://api.github.com/users/rob006/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/rob006/subscriptions","organizations_url":"https://api.github.com/users/rob006/orgs","repos_url":"https://api.github.com/users/rob006/repos","events_url":"https://api.github.com/users/rob006/events{/privacy}","received_events_url":"https://api.github.com/users/rob006/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/rob006/yii2-dev","description":"Yii 2 framework main development repo","fork":true,"url":"https://api.github.com/repos/rob006/yii2-dev","forks_url":"https://api.github.com/repos/rob006/yii2-dev/forks","keys_url":"https://api.github.com/repos/rob006/yii2-dev/keys{/key_id}","collaborators_url":"https://api.github.com/repos/rob006/yii2-dev/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/rob006/yii2-dev/teams","hooks_url":"https://api.github.com/repos/rob006/yii2-dev/hooks","issue_events_url":"https://api.github.com/repos/rob006/yii2-dev/issues/events{/number}","events_url":"https://api.github.com/repos/rob006/yii2-dev/events","assignees_url":"https://api.github.com/repos/rob006/yii2-dev/assignees{/user}","branches_url":"https://api.github.com/repos/rob006/yii2-dev/branches{/branch}","tags_url":"https://api.github.com/repos/rob006/yii2-dev/tags","blobs_url":"https://api.github.com/repos/rob006/yii2-dev/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/rob006/yii2-dev/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/rob006/yii2-dev/git/refs{/sha}","trees_url":"https://api.github.com/repos/rob006/yii2-dev/git/trees{/sha}","statuses_url":"https://api.github.com/repos/rob006/yii2-dev/statuses/{sha}","languages_url":"https://api.github.com/repos/rob006/yii2-dev/languages","stargazers_url":"https://api.github.com/repos/rob006/yii2-dev/stargazers","contributors_url":"https://api.github.com/repos/rob006/yii2-dev/contributors","subscribers_url":"https://api.github.com/repos/rob006/yii2-dev/subscribers","subscription_url":"https://api.github.com/repos/rob006/yii2-dev/subscription","commits_url":"https://api.github.com/repos/rob006/yii2-dev/commits{/sha}","git_commits_url":"https://api.github.com/repos/rob006/yii2-dev/git/commits{/sha}","comments_url":"https://api.github.com/repos/rob006/yii2-dev/comments{/number}","issue_comment_url":"https://api.github.com/repos/rob006/yii2-dev/issues/comments{/number}","contents_url":"https://api.github.com/repos/rob006/yii2-dev/contents/{+path}","compare_url":"https://api.github.com/repos/rob006/yii2-dev/compare/{base}...{head}","merges_url":"https://api.github.com/repos/rob006/yii2-dev/merges","archive_url":"https://api.github.com/repos/rob006/yii2-dev/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/rob006/yii2-dev/downloads","issues_url":"https://api.github.com/repos/rob006/yii2-dev/issues{/number}","pulls_url":"https://api.github.com/repos/rob006/yii2-dev/pulls{/number}","milestones_url":"https://api.github.com/repos/rob006/yii2-dev/milestones{/number}","notifications_url":"https://api.github.com/repos/rob006/yii2-dev/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/rob006/yii2-dev/labels{/name}","releases_url":"https://api.github.com/repos/rob006/yii2-dev/releases{/id}","deployments_url":"https://api.github.com/repos/rob006/yii2-dev/deployments","created_at":"2014-04-17T15:37:03Z","updated_at":"2016-07-23T12:22:17Z","pushed_at":"2016-08-29T09:32:09Z","git_url":"git://github.com/rob006/yii2-dev.git","ssh_url":"git@github.com:rob006/yii2-dev.git","clone_url":"https://github.com/rob006/yii2-dev.git","svn_url":"https://github.com/rob006/yii2-dev","homepage":"http://www.yiiframework.com","size":38930,"stargazers_count":0,"watchers_count":0,"language":"PHP","has_issues":false,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":0,"mirror_url":null,"open_issues_count":0,"forks":0,"open_issues":0,"watchers":0,"default_branch":"master"}},"base":{"label":"yiisoft:master","ref":"master","sha":"6129a480491cca3552f0a1b8da8378e116e99f21","user":{"login":"yiisoft","id":993323,"avatar_url":"https://avatars.githubusercontent.com/u/993323?v=3","gravatar_id":"","url":"https://api.github.com/users/yiisoft","html_url":"https://github.com/yiisoft","followers_url":"https://api.github.com/users/yiisoft/followers","following_url":"https://api.github.com/users/yiisoft/following{/other_user}","gists_url":"https://api.github.com/users/yiisoft/gists{/gist_id}","starred_url":"https://api.github.com/users/yiisoft/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/yiisoft/subscriptions","organizations_url":"https://api.github.com/users/yiisoft/orgs","repos_url":"https://api.github.com/users/yiisoft/repos","events_url":"https://api.github.com/users/yiisoft/events{/privacy}","received_events_url":"https://api.github.com/users/yiisoft/received_events","type":"Organization","site_admin":false},"repo":{"id":3431193,"name":"yii2","full_name":"yiisoft/yii2","owner":{"login":"yiisoft","id":993323,"avatar_url":"https://avatars.githubusercontent.com/u/993323?v=3","gravatar_id":"","url":"https://api.github.com/users/yiisoft","html_url":"https://github.com/yiisoft","followers_url":"https://api.github.com/users/yiisoft/followers","following_url":"https://api.github.com/users/yiisoft/following{/other_user}","gists_url":"https://api.github.com/users/yiisoft/gists{/gist_id}","starred_url":"https://api.github.com/users/yiisoft/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/yiisoft/subscriptions","organizations_url":"https://api.github.com/users/yiisoft/orgs","repos_url":"https://api.github.com/users/yiisoft/repos","events_url":"https://api.github.com/users/yiisoft/events{/privacy}","received_events_url":"https://api.github.com/users/yiisoft/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/yiisoft/yii2","description":"Yii 2 framework main development repo","fork":false,"url":"https://api.github.com/repos/yiisoft/yii2","forks_url":"https://api.github.com/repos/yiisoft/yii2/forks","keys_url":"https://api.github.com/repos/yiisoft/yii2/keys{/key_id}","collaborators_url":"https://api.github.com/repos/yiisoft/yii2/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/yiisoft/yii2/teams","hooks_url":"https://api.github.com/repos/yiisoft/yii2/hooks","issue_events_url":"https://api.github.com/repos/yiisoft/yii2/issues/events{/number}","events_url":"https://api.github.com/repos/yiisoft/yii2/events","assignees_url":"https://api.github.com/repos/yiisoft/yii2/assignees{/user}","branches_url":"https://api.github.com/repos/yiisoft/yii2/branches{/branch}","tags_url":"https://api.github.com/repos/yiisoft/yii2/tags","blobs_url":"https://api.github.com/repos/yiisoft/yii2/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/yiisoft/yii2/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/yiisoft/yii2/git/refs{/sha}","trees_url":"https://api.github.com/repos/yiisoft/yii2/git/trees{/sha}","statuses_url":"https://api.github.com/repos/yiisoft/yii2/statuses/{sha}","languages_url":"https://api.github.com/repos/yiisoft/yii2/languages","stargazers_url":"https://api.github.com/repos/yiisoft/yii2/stargazers","contributors_url":"https://api.github.com/repos/yiisoft/yii2/contributors","subscribers_url":"https://api.github.com/repos/yiisoft/yii2/subscribers","subscription_url":"https://api.github.com/repos/yiisoft/yii2/subscription","commits_url":"https://api.github.com/repos/yiisoft/yii2/commits{/sha}","git_commits_url":"https://api.github.com/repos/yiisoft/yii2/git/commits{/sha}","comments_url":"https://api.github.com/repos/yiisoft/yii2/comments{/number}","issue_comment_url":"https://api.github.com/repos/yiisoft/yii2/issues/comments{/number}","contents_url":"https://api.github.com/repos/yiisoft/yii2/contents/{+path}","compare_url":"https://api.github.com/repos/yiisoft/yii2/compare/{base}...{head}","merges_url":"https://api.github.com/repos/yiisoft/yii2/merges","archive_url":"https://api.github.com/repos/yiisoft/yii2/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/yiisoft/yii2/downloads","issues_url":"https://api.github.com/repos/yiisoft/yii2/issues{/number}","pulls_url":"https://api.github.com/repos/yiisoft/yii2/pulls{/number}","milestones_url":"https://api.github.com/repos/yiisoft/yii2/milestones{/number}","notifications_url":"https://api.github.com/repos/yiisoft/yii2/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/yiisoft/yii2/labels{/name}","releases_url":"https://api.github.com/repos/yiisoft/yii2/releases{/id}","deployments_url":"https://api.github.com/repos/yiisoft/yii2/deployments","created_at":"2012-02-13T15:32:36Z","updated_at":"2016-08-28T23:33:55Z","pushed_at":"2016-08-29T10:56:04Z","git_url":"git://github.com/yiisoft/yii2.git","ssh_url":"git@github.com:yiisoft/yii2.git","clone_url":"https://github.com/yiisoft/yii2.git","svn_url":"https://github.com/yiisoft/yii2","homepage":"http://www.yiiframework.com","size":61894,"stargazers_count":8643,"watchers_count":8643,"language":"PHP","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":5042,"mirror_url":null,"open_issues_count":1047,"forks":5042,"open_issues":1047,"watchers":8643,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/yiisoft/yii2/pulls/12240"},"html":{"href":"https://github.com/yiisoft/yii2/pull/12240"},"issue":{"href":"https://api.github.com/repos/yiisoft/yii2/issues/12240"},"comments":{"href":"https://api.github.com/repos/yiisoft/yii2/issues/12240/comments"},"review_comments":{"href":"https://api.github.com/repos/yiisoft/yii2/pulls/12240/comments"},"review_comment":{"href":"https://api.github.com/repos/yiisoft/yii2/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/yiisoft/yii2/pulls/12240/commits"},"statuses":{"href":"https://api.github.com/repos/yiisoft/yii2/statuses/73dfdf297a805fdc73bc0d5bbe8c0168ac88d168"}}}}
{"actor":{"display_login":"SilverFire"}}