{"action":"opened","number":49,"pull_request":{"url":"https://api.github.com/repos/metosin/reitit/pulls/49","id":153554353,"html_url":"https://github.com/metosin/reitit/pull/49","diff_url":"https://github.com/metosin/reitit/pull/49.diff","patch_url":"https://github.com/metosin/reitit/pull/49.patch","issue_url":"https://api.github.com/repos/metosin/reitit/issues/49","number":49,"state":"open","locked":false,"title":"Segment router (WIP)","user":{"login":"ikitommi","id":567532,"avatar_url":"https://avatars1.githubusercontent.com/u/567532?v=4","gravatar_id":"","url":"https://api.github.com/users/ikitommi","html_url":"https://github.com/ikitommi","followers_url":"https://api.github.com/users/ikitommi/followers","following_url":"https://api.github.com/users/ikitommi/following{/other_user}","gists_url":"https://api.github.com/users/ikitommi/gists{/gist_id}","starred_url":"https://api.github.com/users/ikitommi/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ikitommi/subscriptions","organizations_url":"https://api.github.com/users/ikitommi/orgs","repos_url":"https://api.github.com/users/ikitommi/repos","events_url":"https://api.github.com/users/ikitommi/events{/privacy}","received_events_url":"https://api.github.com/users/ikitommi/received_events","type":"User","site_admin":false},"body":"The prefix-tree router is broken.\r\n\r\nThe original (Pedestal)-version fails with the following paths:\r\n\r\n```clj\r\n[[\"/:kikka\"]\r\n [\"/api/ping\"]\r\n [\"/api/users/\"]]\r\n```\r\n\r\n[By design](https://github.com/pedestal/pedestal/issues/532), the first route masks ALL OTHER ROUTES in the tree.\r\n\r\nReitit [prefix-tree](https://github.com/metosin/reitit/blob/master/modules/reitit-core/src/reitit/trie.cljc) fixes this but still fails on the following:\r\n\r\n```clj\r\n[[\"/:kikka\"]\r\n [\"/:kukka/ping\"]\r\n [\"/api/users/\"]]\r\n```\r\n\r\n=> only one wildcard can be defined in a route node.\r\n\r\nThus, rethink and rewrite a wildcard-router for correctness. \r\n\r\n# segment-router\r\n\r\n* splits paths into tokens between the `/` (both for the tree & request)\r\n* reified protocols for managed mutability & speed\r\n\r\n## performance\r\n\r\n* 4x faster than Pedestal\r\n* 30% faster than Reitit \r\n\r\n## WIP?\r\n\r\n* need to implement `catch-all` handling.\r\n\r\n\r\n","created_at":"2017-11-20T06:43:02Z","updated_at":"2017-11-20T06:43:02Z","closed_at":null,"merged_at":null,"merge_commit_sha":null,"assignee":null,"assignees":[],"requested_reviewers":[],"milestone":null,"commits_url":"https://api.github.com/repos/metosin/reitit/pulls/49/commits","review_comments_url":"https://api.github.com/repos/metosin/reitit/pulls/49/comments","review_comment_url":"https://api.github.com/repos/metosin/reitit/pulls/comments{/number}","comments_url":"https://api.github.com/repos/metosin/reitit/issues/49/comments","statuses_url":"https://api.github.com/repos/metosin/reitit/statuses/3aa1d11cc605530221a29164ce11096bec08675e","head":{"label":"metosin:segment-router","ref":"segment-router","sha":"3aa1d11cc605530221a29164ce11096bec08675e","user":{"login":"metosin","id":1569418,"avatar_url":"https://avatars1.githubusercontent.com/u/1569418?v=4","gravatar_id":"","url":"https://api.github.com/users/metosin","html_url":"https://github.com/metosin","followers_url":"https://api.github.com/users/metosin/followers","following_url":"https://api.github.com/users/metosin/following{/other_user}","gists_url":"https://api.github.com/users/metosin/gists{/gist_id}","starred_url":"https://api.github.com/users/metosin/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/metosin/subscriptions","organizations_url":"https://api.github.com/users/metosin/orgs","repos_url":"https://api.github.com/users/metosin/repos","events_url":"https://api.github.com/users/metosin/events{/privacy}","received_events_url":"https://api.github.com/users/metosin/received_events","type":"Organization","site_admin":false},"repo":{"id":99566414,"name":"reitit","full_name":"metosin/reitit","owner":{"login":"metosin","id":1569418,"avatar_url":"https://avatars1.githubusercontent.com/u/1569418?v=4","gravatar_id":"","url":"https://api.github.com/users/metosin","html_url":"https://github.com/metosin","followers_url":"https://api.github.com/users/metosin/followers","following_url":"https://api.github.com/users/metosin/following{/other_user}","gists_url":"https://api.github.com/users/metosin/gists{/gist_id}","starred_url":"https://api.github.com/users/metosin/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/metosin/subscriptions","organizations_url":"https://api.github.com/users/metosin/orgs","repos_url":"https://api.github.com/users/metosin/repos","events_url":"https://api.github.com/users/metosin/events{/privacy}","received_events_url":"https://api.github.com/users/metosin/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/metosin/reitit","description":"A friendly data-driven router for Clojure(Script).","fork":false,"url":"https://api.github.com/repos/metosin/reitit","forks_url":"https://api.github.com/repos/metosin/reitit/forks","keys_url":"https://api.github.com/repos/metosin/reitit/keys{/key_id}","collaborators_url":"https://api.github.com/repos/metosin/reitit/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/metosin/reitit/teams","hooks_url":"https://api.github.com/repos/metosin/reitit/hooks","issue_events_url":"https://api.github.com/repos/metosin/reitit/issues/events{/number}","events_url":"https://api.github.com/repos/metosin/reitit/events","assignees_url":"https://api.github.com/repos/metosin/reitit/assignees{/user}","branches_url":"https://api.github.com/repos/metosin/reitit/branches{/branch}","tags_url":"https://api.github.com/repos/metosin/reitit/tags","blobs_url":"https://api.github.com/repos/metosin/reitit/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/metosin/reitit/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/metosin/reitit/git/refs{/sha}","trees_url":"https://api.github.com/repos/metosin/reitit/git/trees{/sha}","statuses_url":"https://api.github.com/repos/metosin/reitit/statuses/{sha}","languages_url":"https://api.github.com/repos/metosin/reitit/languages","stargazers_url":"https://api.github.com/repos/metosin/reitit/stargazers","contributors_url":"https://api.github.com/repos/metosin/reitit/contributors","subscribers_url":"https://api.github.com/repos/metosin/reitit/subscribers","subscription_url":"https://api.github.com/repos/metosin/reitit/subscription","commits_url":"https://api.github.com/repos/metosin/reitit/commits{/sha}","git_commits_url":"https://api.github.com/repos/metosin/reitit/git/commits{/sha}","comments_url":"https://api.github.com/repos/metosin/reitit/comments{/number}","issue_comment_url":"https://api.github.com/repos/metosin/reitit/issues/comments{/number}","contents_url":"https://api.github.com/repos/metosin/reitit/contents/{+path}","compare_url":"https://api.github.com/repos/metosin/reitit/compare/{base}...{head}","merges_url":"https://api.github.com/repos/metosin/reitit/merges","archive_url":"https://api.github.com/repos/metosin/reitit/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/metosin/reitit/downloads","issues_url":"https://api.github.com/repos/metosin/reitit/issues{/number}","pulls_url":"https://api.github.com/repos/metosin/reitit/pulls{/number}","milestones_url":"https://api.github.com/repos/metosin/reitit/milestones{/number}","notifications_url":"https://api.github.com/repos/metosin/reitit/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/metosin/reitit/labels{/name}","releases_url":"https://api.github.com/repos/metosin/reitit/releases{/id}","deployments_url":"https://api.github.com/repos/metosin/reitit/deployments","created_at":"2017-08-07T10:29:40Z","updated_at":"2017-11-14T07:57:55Z","pushed_at":"2017-11-20T06:31:23Z","git_url":"git://github.com/metosin/reitit.git","ssh_url":"git@github.com:metosin/reitit.git","clone_url":"https://github.com/metosin/reitit.git","svn_url":"https://github.com/metosin/reitit","homepage":"","size":1352,"stargazers_count":12,"watchers_count":12,"language":"Clojure","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":true,"forks_count":0,"mirror_url":null,"archived":false,"open_issues_count":11,"forks":0,"open_issues":11,"watchers":12,"default_branch":"master"}},"base":{"label":"metosin:master","ref":"master","sha":"8d99163aef40a14418ac34dff7215ebe1958d377","user":{"login":"metosin","id":1569418,"avatar_url":"https://avatars1.githubusercontent.com/u/1569418?v=4","gravatar_id":"","url":"https://api.github.com/users/metosin","html_url":"https://github.com/metosin","followers_url":"https://api.github.com/users/metosin/followers","following_url":"https://api.github.com/users/metosin/following{/other_user}","gists_url":"https://api.github.com/users/metosin/gists{/gist_id}","starred_url":"https://api.github.com/users/metosin/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/metosin/subscriptions","organizations_url":"https://api.github.com/users/metosin/orgs","repos_url":"https://api.github.com/users/metosin/repos","events_url":"https://api.github.com/users/metosin/events{/privacy}","received_events_url":"https://api.github.com/users/metosin/received_events","type":"Organization","site_admin":false},"repo":{"id":99566414,"name":"reitit","full_name":"metosin/reitit","owner":{"login":"metosin","id":1569418,"avatar_url":"https://avatars1.githubusercontent.com/u/1569418?v=4","gravatar_id":"","url":"https://api.github.com/users/metosin","html_url":"https://github.com/metosin","followers_url":"https://api.github.com/users/metosin/followers","following_url":"https://api.github.com/users/metosin/following{/other_user}","gists_url":"https://api.github.com/users/metosin/gists{/gist_id}","starred_url":"https://api.github.com/users/metosin/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/metosin/subscriptions","organizations_url":"https://api.github.com/users/metosin/orgs","repos_url":"https://api.github.com/users/metosin/repos","events_url":"https://api.github.com/users/metosin/events{/privacy}","received_events_url":"https://api.github.com/users/metosin/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/metosin/reitit","description":"A friendly data-driven router for Clojure(Script).","fork":false,"url":"https://api.github.com/repos/metosin/reitit","forks_url":"https://api.github.com/repos/metosin/reitit/forks","keys_url":"https://api.github.com/repos/metosin/reitit/keys{/key_id}","collaborators_url":"https://api.github.com/repos/metosin/reitit/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/metosin/reitit/teams","hooks_url":"https://api.github.com/repos/metosin/reitit/hooks","issue_events_url":"https://api.github.com/repos/metosin/reitit/issues/events{/number}","events_url":"https://api.github.com/repos/metosin/reitit/events","assignees_url":"https://api.github.com/repos/metosin/reitit/assignees{/user}","branches_url":"https://api.github.com/repos/metosin/reitit/branches{/branch}","tags_url":"https://api.github.com/repos/metosin/reitit/tags","blobs_url":"https://api.github.com/repos/metosin/reitit/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/metosin/reitit/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/metosin/reitit/git/refs{/sha}","trees_url":"https://api.github.com/repos/metosin/reitit/git/trees{/sha}","statuses_url":"https://api.github.com/repos/metosin/reitit/statuses/{sha}","languages_url":"https://api.github.com/repos/metosin/reitit/languages","stargazers_url":"https://api.github.com/repos/metosin/reitit/stargazers","contributors_url":"https://api.github.com/repos/metosin/reitit/contributors","subscribers_url":"https://api.github.com/repos/metosin/reitit/subscribers","subscription_url":"https://api.github.com/repos/metosin/reitit/subscription","commits_url":"https://api.github.com/repos/metosin/reitit/commits{/sha}","git_commits_url":"https://api.github.com/repos/metosin/reitit/git/commits{/sha}","comments_url":"https://api.github.com/repos/metosin/reitit/comments{/number}","issue_comment_url":"https://api.github.com/repos/metosin/reitit/issues/comments{/number}","contents_url":"https://api.github.com/repos/metosin/reitit/contents/{+path}","compare_url":"https://api.github.com/repos/metosin/reitit/compare/{base}...{head}","merges_url":"https://api.github.com/repos/metosin/reitit/merges","archive_url":"https://api.github.com/repos/metosin/reitit/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/metosin/reitit/downloads","issues_url":"https://api.github.com/repos/metosin/reitit/issues{/number}","pulls_url":"https://api.github.com/repos/metosin/reitit/pulls{/number}","milestones_url":"https://api.github.com/repos/metosin/reitit/milestones{/number}","notifications_url":"https://api.github.com/repos/metosin/reitit/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/metosin/reitit/labels{/name}","releases_url":"https://api.github.com/repos/metosin/reitit/releases{/id}","deployments_url":"https://api.github.com/repos/metosin/reitit/deployments","created_at":"2017-08-07T10:29:40Z","updated_at":"2017-11-14T07:57:55Z","pushed_at":"2017-11-20T06:31:23Z","git_url":"git://github.com/metosin/reitit.git","ssh_url":"git@github.com:metosin/reitit.git","clone_url":"https://github.com/metosin/reitit.git","svn_url":"https://github.com/metosin/reitit","homepage":"","size":1352,"stargazers_count":12,"watchers_count":12,"language":"Clojure","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":true,"forks_count":0,"mirror_url":null,"archived":false,"open_issues_count":11,"forks":0,"open_issues":11,"watchers":12,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/metosin/reitit/pulls/49"},"html":{"href":"https://github.com/metosin/reitit/pull/49"},"issue":{"href":"https://api.github.com/repos/metosin/reitit/issues/49"},"comments":{"href":"https://api.github.com/repos/metosin/reitit/issues/49/comments"},"review_comments":{"href":"https://api.github.com/repos/metosin/reitit/pulls/49/comments"},"review_comment":{"href":"https://api.github.com/repos/metosin/reitit/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/metosin/reitit/pulls/49/commits"},"statuses":{"href":"https://api.github.com/repos/metosin/reitit/statuses/3aa1d11cc605530221a29164ce11096bec08675e"}},"author_association":"OWNER","merged":false,"mergeable":null,"rebaseable":null,"mergeable_state":"unknown","merged_by":null,"comments":0,"review_comments":0,"maintainer_can_modify":false,"commits":2,"additions":75,"deletions":1,"changed_files":3}}
{"actor":{"display_login":"ikitommi"}}