{"payload":{"feedbackUrl":"https://github.com/orgs/community/discussions/53140","repo":{"id":805956963,"defaultBranch":"main","name":"caddy-lura","ownerLogin":"xico42","currentUserCanPush":false,"isFork":false,"isEmpty":false,"createdAt":"2024-05-26T00:26:34.000Z","ownerAvatar":"https://avatars.githubusercontent.com/u/6249736?v=4","public":true,"private":false,"isOrgOwned":false},"refInfo":{"name":"","listCacheKey":"v0:1721263149.0","currentOid":""},"activityList":{"items":[{"before":"964e62340ecec9f846613e3e829c097f417ff79a","after":null,"ref":"refs/heads/feat/caddy-router","pushedAt":"2024-07-18T00:39:09.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"xico42","name":"Francisco Edno","path":"/xico42","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/6249736?s=80&v=4"}},{"before":"0bf8e4f726081bd15a2a680cbeb6c10cb9439aaa","after":"63ab3e1b709e4839f585ed0451d97cfc5cef619b","ref":"refs/heads/main","pushedAt":"2024-07-18T00:39:04.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"xico42","name":"Francisco Edno","path":"/xico42","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/6249736?s=80&v=4"},"commit":{"message":"refactor: rewrite the router layer\n\nThe router layer abstraction provided by lura is expected to be executed\nas a standalone application, which is not the case in this integration,\nwhat forced us to implement workarounds in order to access the inner\nhttp handler.\n\nAlso, as the errors generated by the proxy layer are not propagated\noutside the router, because the router implements the default `http.Handler`,\nit was not possible to propagate these erros through caddy global error\nhandling mechanism.\n\nSo it seems to make sense to write from scratch a router that better\nintegrates with caddy.\n\nThe http router was copied from the `julienschmidt/httprouter` and\nrefactored to work with `caddyhttp.Handler` interface.\n\nPart of the mux router layer implementation provided by the lura team\nwas also copied and modified accordingly.\n\nRegarding the usage of placeholders in backend request, the processing\nwas done partially by caddy and partially by lura itself, now every url\npath parameter is exposed as caddy placeholder and replaced by using a\n`caddy.Replacer` instance.","shortMessageHtmlLink":"refactor: rewrite the router layer"}},{"before":"d59b7aa2886773bb37db4343563c361a0b62ad16","after":"964e62340ecec9f846613e3e829c097f417ff79a","ref":"refs/heads/feat/caddy-router","pushedAt":"2024-07-18T00:38:30.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"xico42","name":"Francisco Edno","path":"/xico42","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/6249736?s=80&v=4"},"commit":{"message":"refactor: rewrite the router layer\n\nThe router layer abstraction provided by lura is expected to be executed\nas a standalone application, which is not the case in this integration,\nwhat forced us to implement workarounds in order to access the inner\nhttp handler.\n\nAlso, as the errors generated by the proxy layer are not propagated\noutside the router, because the router implements the default `http.Handler`,\nit was not possible to propagate these erros through caddy global error\nhandling mechanism.\n\nSo it seems to make sense to write from scratch a router that better\nintegrates with caddy.\n\nThe http router was copied from the `julienschmidt/httprouter` and\nrefactored to work with `caddyhttp.Handler` interface.\n\nPart of the mux router layer implementation provided by the lura team\nwas also copied and modified accordingly.\n\nRegarding the usage of placeholders in backend request, the processing\nwas done partially by caddy and partially by lura itself, now every url\npath parameter is exposed as caddy placeholder and replaced by using a\n`caddy.Replacer` instance.","shortMessageHtmlLink":"refactor: rewrite the router layer"}},{"before":null,"after":"d59b7aa2886773bb37db4343563c361a0b62ad16","ref":"refs/heads/feat/caddy-router","pushedAt":"2024-07-18T00:00:16.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"xico42","name":"Francisco Edno","path":"/xico42","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/6249736?s=80&v=4"},"commit":{"message":"refactor: rewrite the router layer\n\nThe router layer abstraction provided by lura is expected to be executed\nas a standalone application, which is not the case in this integration,\nwhat forced us to implement workarounds in order to access the inner\nhttp handler.\n\nAlso, as the errors generated by the proxy layer are not propagated\noutside the router, because the router implements the default `http.Handler`,\nit was not possible to propagate these erros through caddy global error\nhandling mechanism.\n\nSo it seems to make sense to write from scratch a router that better\nintegrates with caddy.\n\nThe http router was copied from the `julienschmidt/httprouter` and\nrefactored to work with `caddyhttp.Handler` interface.\n\nPart of the mux router layer implementation provided by the lura team\nwas also copied and modified accordingly.\n\nRegarding the usage of placeholders in backend request, the processing\nwas done partially by caddy and partially by lura itself, now every url\npath parameter is exposed as caddy placeholder and replaced by using a\n`caddy.Replacer` instance.","shortMessageHtmlLink":"refactor: rewrite the router layer"}},{"before":"c0f35fbdf7d4cbda10401dd6e3ee017090a3ef8f","after":"0bf8e4f726081bd15a2a680cbeb6c10cb9439aaa","ref":"refs/heads/main","pushedAt":"2024-06-16T01:34:20.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"xico42","name":"Francisco Edno","path":"/xico42","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/6249736?s=80&v=4"},"commit":{"message":"docs: fix helper endpoints documentation","shortMessageHtmlLink":"docs: fix helper endpoints documentation"}},{"before":null,"after":"350a7f3427054b464489cc2f35df31f79451f8e7","ref":"refs/heads/docs/caddy-docs","pushedAt":"2024-06-16T01:33:58.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"xico42","name":"Francisco Edno","path":"/xico42","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/6249736?s=80&v=4"},"commit":{"message":"docs: fix helper endpoints documentation","shortMessageHtmlLink":"docs: fix helper endpoints documentation"}},{"before":"9c255b8bc57f358cda30b0965e4a21aef1dde7a7","after":null,"ref":"refs/heads/docs/caddy-docs","pushedAt":"2024-06-16T01:33:48.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"xico42","name":"Francisco Edno","path":"/xico42","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/6249736?s=80&v=4"}},{"before":null,"after":"9c255b8bc57f358cda30b0965e4a21aef1dde7a7","ref":"refs/heads/docs/caddy-docs","pushedAt":"2024-06-16T01:32:09.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"xico42","name":"Francisco Edno","path":"/xico42","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/6249736?s=80&v=4"},"commit":{"message":"docs: fix helper endpoints documentation","shortMessageHtmlLink":"docs: fix helper endpoints documentation"}},{"before":"9c255b8bc57f358cda30b0965e4a21aef1dde7a7","after":null,"ref":"refs/heads/docs/caddy-docs","pushedAt":"2024-06-16T01:32:01.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"xico42","name":"Francisco Edno","path":"/xico42","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/6249736?s=80&v=4"}},{"before":"323e74e20c00743f8b479c5651e87fcfa2181e8d","after":"9c255b8bc57f358cda30b0965e4a21aef1dde7a7","ref":"refs/heads/docs/caddy-docs","pushedAt":"2024-06-16T01:31:45.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"xico42","name":"Francisco Edno","path":"/xico42","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/6249736?s=80&v=4"},"commit":{"message":"docs: fix helper endpoints documentation","shortMessageHtmlLink":"docs: fix helper endpoints documentation"}},{"before":"c32c154ea0ae05cd001b1ac70b77551a6c718a53","after":"c0f35fbdf7d4cbda10401dd6e3ee017090a3ef8f","ref":"refs/heads/main","pushedAt":"2024-06-16T01:24:53.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"xico42","name":"Francisco Edno","path":"/xico42","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/6249736?s=80&v=4"},"commit":{"message":"docs: add caddy module documentation","shortMessageHtmlLink":"docs: add caddy module documentation"}},{"before":null,"after":"323e74e20c00743f8b479c5651e87fcfa2181e8d","ref":"refs/heads/docs/caddy-docs","pushedAt":"2024-06-16T01:24:27.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"xico42","name":"Francisco Edno","path":"/xico42","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/6249736?s=80&v=4"},"commit":{"message":"docs: add caddy module documentation","shortMessageHtmlLink":"docs: add caddy module documentation"}},{"before":"53be12a041f0bb000619b0150dab55aa1f855a0e","after":null,"ref":"refs/heads/lura-tests","pushedAt":"2024-06-11T17:56:06.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"xico42","name":"Francisco Edno","path":"/xico42","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/6249736?s=80&v=4"}},{"before":"2fa16f35669d2841d4b7e919d7bb28723aa8aeac","after":null,"ref":"refs/heads/lura-module","pushedAt":"2024-06-11T17:56:05.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"xico42","name":"Francisco Edno","path":"/xico42","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/6249736?s=80&v=4"}},{"before":"822e8eb757b31483d1dcbc2e10eb9221c442bba1","after":null,"ref":"refs/heads/feat/unmarshal-caddy","pushedAt":"2024-06-11T17:56:04.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"xico42","name":"Francisco Edno","path":"/xico42","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/6249736?s=80&v=4"}},{"before":"a8f419bfab50c9cc87e694e6820596f7bee374dc","after":null,"ref":"refs/heads/chore/license","pushedAt":"2024-06-11T17:56:02.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"xico42","name":"Francisco Edno","path":"/xico42","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/6249736?s=80&v=4"}},{"before":"0f47c01c56317d9c37863dc620b944a96088f7e5","after":null,"ref":"refs/heads/chore/directive-order","pushedAt":"2024-06-11T17:56:01.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"xico42","name":"Francisco Edno","path":"/xico42","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/6249736?s=80&v=4"}},{"before":"974d9b454efe705a14fd61a9d0ab44481481fc72","after":null,"ref":"refs/heads/feat/router-layer","pushedAt":"2024-06-11T17:56:00.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"xico42","name":"Francisco Edno","path":"/xico42","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/6249736?s=80&v=4"}},{"before":"b247e1890c4a2541ef8b57153dee332beab5f7ea","after":null,"ref":"refs/heads/chore/logger","pushedAt":"2024-06-11T17:55:59.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"xico42","name":"Francisco Edno","path":"/xico42","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/6249736?s=80&v=4"}},{"before":"07550ce3a5905eadcb057b90324513929753e56b","after":null,"ref":"refs/heads/feat/helper-endpoints","pushedAt":"2024-06-11T17:55:54.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"xico42","name":"Francisco Edno","path":"/xico42","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/6249736?s=80&v=4"}},{"before":"c82f9e783872b867b3d540b2526623831a18e19e","after":"c32c154ea0ae05cd001b1ac70b77551a6c718a53","ref":"refs/heads/main","pushedAt":"2024-06-09T00:24:01.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"xico42","name":"Francisco Edno","path":"/xico42","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/6249736?s=80&v=4"},"commit":{"message":"feat: add config for helper endpoints\n\nLura provides handler implementation for two helper endpoints, namely\n\"/__echo\" and \"/__debug\".\n\nAdd caddyfile directives for enabling and customizing these endpoints.","shortMessageHtmlLink":"feat: add config for helper endpoints"}},{"before":null,"after":"07550ce3a5905eadcb057b90324513929753e56b","ref":"refs/heads/feat/helper-endpoints","pushedAt":"2024-06-09T00:21:43.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"xico42","name":"Francisco Edno","path":"/xico42","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/6249736?s=80&v=4"},"commit":{"message":"feat: add config for helper endpoints\n\nLura provides handler implementation for two helper endpoints, namely\n\"/__echo\" and \"/__debug\".\n\nAdd caddyfile directives for enabling and customizing these endpoints.","shortMessageHtmlLink":"feat: add config for helper endpoints"}},{"before":"2d006af9bf41c044ab9dc37c167c9aa53b16c951","after":"c82f9e783872b867b3d540b2526623831a18e19e","ref":"refs/heads/main","pushedAt":"2024-06-08T15:39:56.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"xico42","name":"Francisco Edno","path":"/xico42","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/6249736?s=80&v=4"},"commit":{"message":"chore: wrap lura logger with caddy logger\n\nThe logging implementation of lura was not the same, causing some\ndivergences in logging style.\n\nCreate an adapter to allow using caddy logger (zap) as a lura logger.","shortMessageHtmlLink":"chore: wrap lura logger with caddy logger"}},{"before":null,"after":"b247e1890c4a2541ef8b57153dee332beab5f7ea","ref":"refs/heads/chore/logger","pushedAt":"2024-06-08T15:39:34.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"xico42","name":"Francisco Edno","path":"/xico42","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/6249736?s=80&v=4"},"commit":{"message":"chore: wrap lura logger with caddy logger\n\nThe logging implementation of lura was not the same, causing some\ndivergences in logging style.\n\nCreate an adapter to allow using caddy logger (zap) as a lura logger.","shortMessageHtmlLink":"chore: wrap lura logger with caddy logger"}},{"before":"329833eb009f103a2f8a5056a11de518f864e268","after":"2d006af9bf41c044ab9dc37c167c9aa53b16c951","ref":"refs/heads/main","pushedAt":"2024-06-08T14:26:52.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"xico42","name":"Francisco Edno","path":"/xico42","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/6249736?s=80&v=4"},"commit":{"message":"feat: enable dynamic routing\n\nBy default lura only allows to use in the backend url patterns\nvariables that were defined in the endpoint configuration,\nlimitting what is possible in terms of backend routing.\n\nHowever, some very specific variable names are allowed,\nso we used this and prefixed all unknown values with a\nname that would pass lura config initialization rules.\n\nNow every variable not automatically replaced by lura mechanisms\ngets replaced by caddy, allowing the usage of any available\ncaddy placeholders at runtime.\n\nThis path variables replacement strategy takes place in a custom\nbackend factory tha wraps the default one.","shortMessageHtmlLink":"feat: enable dynamic routing"}},{"before":"4271e950bfefe8752f56023fa4e7c3a9f80251a5","after":"329833eb009f103a2f8a5056a11de518f864e268","ref":"refs/heads/main","pushedAt":"2024-06-08T02:06:07.000Z","pushType":"pr_merge","commitsCount":2,"pusher":{"login":"xico42","name":"Francisco Edno","path":"/xico42","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/6249736?s=80&v=4"},"commit":{"message":"feat: write a custom router layer\n\nThe default router layer is based on the gin framework, which is\noverkill for the use case of an embedded lura instance.\n\nAlso, the gin adapter provided by lura does not the same level of\ncustomization that the mux router provides.\n\nWrite a new router layer based on the standard mux one with httprouter.\n\nThe proxy stack was also customized, so that caddy placeholders might be\nused when defining the backend url pattern.","shortMessageHtmlLink":"feat: write a custom router layer"}},{"before":null,"after":"974d9b454efe705a14fd61a9d0ab44481481fc72","ref":"refs/heads/feat/router-layer","pushedAt":"2024-06-08T02:04:41.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"xico42","name":"Francisco Edno","path":"/xico42","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/6249736?s=80&v=4"},"commit":{"message":"feat: write a custom router layer\n\nThe default router layer is based on the gin framework, which is\noverkill for the use case of an embedded lura instance.\n\nAlso, the gin adapter provided by lura does not the same level of\ncustomization that the mux router provides.\n\nWrite a new router layer based on the standard mux one with httprouter.\n\nThe proxy stack was also customized, so that caddy placeholders might be\nused when defining the backend url pattern.","shortMessageHtmlLink":"feat: write a custom router layer"}},{"before":"e37a3840ccee1b67f106b997cfcd2bdfc405c68d","after":"4271e950bfefe8752f56023fa4e7c3a9f80251a5","ref":"refs/heads/main","pushedAt":"2024-06-05T00:14:17.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"xico42","name":"Francisco Edno","path":"/xico42","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/6249736?s=80&v=4"},"commit":{"message":"feat: add direct order\n\nSet a default order for the lura directive so that the configuration is\nsimpler to write.","shortMessageHtmlLink":"feat: add direct order"}},{"before":null,"after":"0f47c01c56317d9c37863dc620b944a96088f7e5","ref":"refs/heads/chore/directive-order","pushedAt":"2024-06-05T00:14:03.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"xico42","name":"Francisco Edno","path":"/xico42","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/6249736?s=80&v=4"},"commit":{"message":"feat: add direct order\n\nSet a default order for the lura directive so that the configuration is\nsimpler to write.","shortMessageHtmlLink":"feat: add direct order"}},{"before":"d484d7488015468469ad9073e47e895a1e961b04","after":"e37a3840ccee1b67f106b997cfcd2bdfc405c68d","ref":"refs/heads/main","pushedAt":"2024-06-05T00:05:50.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"xico42","name":"Francisco Edno","path":"/xico42","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/6249736?s=80&v=4"},"commit":{"message":"chore: add license","shortMessageHtmlLink":"chore: add license"}}],"hasNextPage":true,"hasPreviousPage":false,"activityType":"all","actor":null,"timePeriod":"all","sort":"DESC","perPage":30,"cursor":"Y3Vyc29yOnYyOpK7MjAyNC0wNy0xOFQwMDozOTowOS4wMDAwMDBazwAAAASCYD52","startCursor":"Y3Vyc29yOnYyOpK7MjAyNC0wNy0xOFQwMDozOTowOS4wMDAwMDBazwAAAASCYD52","endCursor":"Y3Vyc29yOnYyOpK7MjAyNC0wNi0wNVQwMDowNTo1MC4wMDAwMDBazwAAAARcj10l"}},"title":"Activity ยท xico42/caddy-lura"}