{"payload":{"feedbackUrl":"https://github.com/orgs/community/discussions/53140","repo":{"id":736735983,"defaultBranch":"main","name":"gorage-sale","ownerLogin":"avearmin","currentUserCanPush":false,"isFork":false,"isEmpty":false,"createdAt":"2023-12-28T18:15:17.000Z","ownerAvatar":"https://avatars.githubusercontent.com/u/117543612?v=4","public":true,"private":false,"isOrgOwned":false},"refInfo":{"name":"","listCacheKey":"v0:1707293060.0","currentOid":""},"activityList":{"items":[{"before":"7f6f33b23051aa304d5b4722db21420f9b49ecb9","after":"2c4c64bdfc1e7bc84e5b2712f307b903dc7e55a7","ref":"refs/heads/main","pushedAt":"2024-02-07T23:52:24.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"avearmin","name":"Armin Radoncic","path":"/avearmin","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/117543612?s=80&v=4"},"commit":{"message":"Add `/api/` to api related endpoints","shortMessageHtmlLink":"Add /api/ to api related endpoints"}},{"before":"fca794295e48e1360634f81807f076904a375795","after":null,"ref":"refs/heads/refactor-middleware","pushedAt":"2024-02-07T08:04:20.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"avearmin","name":"Armin Radoncic","path":"/avearmin","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/117543612?s=80&v=4"}},{"before":"e58e762893044c93d3a4d4011813cd2223694360","after":"7f6f33b23051aa304d5b4722db21420f9b49ecb9","ref":"refs/heads/main","pushedAt":"2024-02-07T08:04:16.000Z","pushType":"pr_merge","commitsCount":20,"pusher":{"login":"avearmin","name":"Armin Radoncic","path":"/avearmin","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/117543612?s=80&v=4"},"commit":{"message":"Merge pull request #11 from avearmin/refactor-middleware\n\nRefactor middleware, refactor handler error response, enhance StateStore capabilities","shortMessageHtmlLink":"Merge pull request #11 from avearmin/refactor-middleware"}},{"before":"6b05933a81bedeb3eccaf0294e74ba6979497129","after":"fca794295e48e1360634f81807f076904a375795","ref":"refs/heads/refactor-middleware","pushedAt":"2024-02-07T08:02:29.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"avearmin","name":"Armin Radoncic","path":"/avearmin","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/117543612?s=80&v=4"},"commit":{"message":"Add mu field to StateStore tests","shortMessageHtmlLink":"Add mu field to StateStore tests"}},{"before":"084a50f5dc96a3954c3508d6ca4e2aa3fe18cc98","after":"6b05933a81bedeb3eccaf0294e74ba6979497129","ref":"refs/heads/refactor-middleware","pushedAt":"2024-02-07T07:54:29.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"avearmin","name":"Armin Radoncic","path":"/avearmin","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/117543612?s=80&v=4"},"commit":{"message":"Add refreshAccessToken()","shortMessageHtmlLink":"Add refreshAccessToken()"}},{"before":"9f24e8eb11f71c5afe300f225e14a89c414781b8","after":"084a50f5dc96a3954c3508d6ca4e2aa3fe18cc98","ref":"refs/heads/refactor-middleware","pushedAt":"2024-02-07T02:15:41.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"avearmin","name":"Armin Radoncic","path":"/avearmin","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/117543612?s=80&v=4"},"commit":{"message":"Add startReapLoop() to StateStore\n\nAny state generated by the server for the Google OAuth2 flow should be deleted once it's used. However, there's a possibility that a malicious actor could trigger the login endpoint without proceeding to the callback. This action would accumulate unnecessary state strings in the store that would never be deleted. To address this issue, a goroutine regularly scans the state store for expired tokens and removes them. This process ensures that all unused states are effectively managed and disposed of.","shortMessageHtmlLink":"Add startReapLoop() to StateStore"}},{"before":"3dff1323c7212fff19e111e54d65db42814fee63","after":"9f24e8eb11f71c5afe300f225e14a89c414781b8","ref":"refs/heads/refactor-middleware","pushedAt":"2024-02-07T01:21:29.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"avearmin","name":"Armin Radoncic","path":"/avearmin","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/117543612?s=80&v=4"},"commit":{"message":"Refactor stateStore to track expiry time\n\nThe store map now tracks the expiry time of the state instead of a bool value. This change allows a future worker go routine to delete expired states.","shortMessageHtmlLink":"Refactor stateStore to track expiry time"}},{"before":"723a38ec6dbc2bd89fc642eec0cb27dc159d90be","after":"3dff1323c7212fff19e111e54d65db42814fee63","ref":"refs/heads/refactor-middleware","pushedAt":"2024-02-06T20:09:34.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"avearmin","name":"Armin Radoncic","path":"/avearmin","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/117543612?s=80&v=4"},"commit":{"message":"Add tests for isCookieValid function","shortMessageHtmlLink":"Add tests for isCookieValid function"}},{"before":"2d5faed4650d713f8fe0e66e61e4f4ab11348dba","after":"723a38ec6dbc2bd89fc642eec0cb27dc159d90be","ref":"refs/heads/refactor-middleware","pushedAt":"2024-02-06T19:37:43.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"avearmin","name":"Armin Radoncic","path":"/avearmin","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/117543612?s=80&v=4"},"commit":{"message":"Refactor the authentication middleware to refresh the access token\n\nThis commit refactors the auth middleware to attempt a refresh of the access token if the access token or cookie is expired. Any other issues with the access token or its cookie will cause authentication to fail.\n\nAdditionally, I have also refactored the authedUser struct to contain an Error field instead of an IsAuthed field. This ensures handlers can handle specific failed authentications if needed.","shortMessageHtmlLink":"Refactor the authentication middleware to refresh the access token"}},{"before":"fb2d2216dd735b7b7c4de300621ede81b9b14280","after":"2d5faed4650d713f8fe0e66e61e4f4ab11348dba","ref":"refs/heads/refactor-middleware","pushedAt":"2024-02-05T18:51:16.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"avearmin","name":"Armin Radoncic","path":"/avearmin","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/117543612?s=80&v=4"},"commit":{"message":"Fix an issue where cookies were not being sent with request","shortMessageHtmlLink":"Fix an issue where cookies were not being sent with request"}},{"before":"447d3fced8be3b0bef93ebf831f5e356615d7c3d","after":"fb2d2216dd735b7b7c4de300621ede81b9b14280","ref":"refs/heads/refactor-middleware","pushedAt":"2024-02-04T18:20:27.000Z","pushType":"push","commitsCount":2,"pusher":{"login":"avearmin","name":"Armin Radoncic","path":"/avearmin","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/117543612?s=80&v=4"},"commit":{"message":"Update .gitignore","shortMessageHtmlLink":"Update .gitignore"}},{"before":"2067a8d613e6866ce5cd560d0a3f771a2bb56eda","after":"447d3fced8be3b0bef93ebf831f5e356615d7c3d","ref":"refs/heads/refactor-middleware","pushedAt":"2024-02-03T07:29:29.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"avearmin","name":"Armin Radoncic","path":"/avearmin","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/117543612?s=80&v=4"},"commit":{"message":"Center error div to center of body","shortMessageHtmlLink":"Center error div to center of body"}},{"before":"cbf889c10b87ec8207d1b26a9aa2b62286f12b78","after":"2067a8d613e6866ce5cd560d0a3f771a2bb56eda","ref":"refs/heads/refactor-middleware","pushedAt":"2024-02-03T07:24:18.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"avearmin","name":"Armin Radoncic","path":"/avearmin","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/117543612?s=80&v=4"},"commit":{"message":"Fix issue where tailwind config didn't match .gohtml","shortMessageHtmlLink":"Fix issue where tailwind config didn't match .gohtml"}},{"before":"8849222ac74eb5c5484d12e2409bb44dc8e0d561","after":"cbf889c10b87ec8207d1b26a9aa2b62286f12b78","ref":"refs/heads/refactor-middleware","pushedAt":"2024-02-03T07:07:54.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"avearmin","name":"Armin Radoncic","path":"/avearmin","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/117543612?s=80&v=4"},"commit":{"message":"Create function for logging internal errors\n\nThe function was created to log the specific error that cause a code 500, while\nstill hiding details the user does not need to know.","shortMessageHtmlLink":"Create function for logging internal errors"}},{"before":"539b03cd01326af3b7ed769804580aa9e8079cd8","after":"8849222ac74eb5c5484d12e2409bb44dc8e0d561","ref":"refs/heads/refactor-middleware","pushedAt":"2024-02-03T02:39:25.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"avearmin","name":"Armin Radoncic","path":"/avearmin","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/117543612?s=80&v=4"},"commit":{"message":"Fix capitalization issues in error.gohtml","shortMessageHtmlLink":"Fix capitalization issues in error.gohtml"}},{"before":"7a6296ae4c45ee736a4b072fc702d06e88e7ce4e","after":"539b03cd01326af3b7ed769804580aa9e8079cd8","ref":"refs/heads/refactor-middleware","pushedAt":"2024-02-03T02:33:24.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"avearmin","name":"Armin Radoncic","path":"/avearmin","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/117543612?s=80&v=4"},"commit":{"message":"Fix typo in error redirect URL","shortMessageHtmlLink":"Fix typo in error redirect URL"}},{"before":"499aba68babff26ab8c438b063945856c681bc82","after":"7a6296ae4c45ee736a4b072fc702d06e88e7ce4e","ref":"refs/heads/refactor-middleware","pushedAt":"2024-02-03T02:06:17.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"avearmin","name":"Armin Radoncic","path":"/avearmin","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/117543612?s=80&v=4"},"commit":{"message":"Add handler to get login user widget","shortMessageHtmlLink":"Add handler to get login user widget"}},{"before":"60815452c83eda06f6e97c07acbb9fa48664afb8","after":"499aba68babff26ab8c438b063945856c681bc82","ref":"refs/heads/refactor-middleware","pushedAt":"2024-02-03T01:00:25.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"avearmin","name":"Armin Radoncic","path":"/avearmin","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/117543612?s=80&v=4"},"commit":{"message":"Refined Error Handling in API Package for Enhanced UX\n\nUpdated the error handling strategy in the api package to offer a more user-friendly\nexperience. Specifically, in the OAuth callback handler, failures in the OAuth flow\nnow redirect users to a dedicated error page. This page displays the relevant status\ncode and a descriptive message, making error responses more informative and helpful.\n\nAdditionally, removed the `respondWithErrorHTML` method in favor of this streamlined\napproach. This change reduces complexity in error handling and aligns with our goals\nfor a more intuitive and responsive API.","shortMessageHtmlLink":"Refined Error Handling in API Package for Enhanced UX"}},{"before":"f4ec7b352bcaee4ff264e22477631cb309ecea4d","after":"60815452c83eda06f6e97c07acbb9fa48664afb8","ref":"refs/heads/refactor-middleware","pushedAt":"2024-02-02T00:09:41.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"avearmin","name":"Armin Radoncic","path":"/avearmin","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/117543612?s=80&v=4"},"commit":{"message":"Refactor middlewareAuth to enhance control over unauthorized user handling\n\nHandlers in a hypermedia application require control over how unauthorized users are managed.\nDifferent parts of the application, such as a navbar, might need to display a login button\nfor unauthenticated users, while other areas may require completely blocking access. The\nmiddleware cannot inherently discern the specific needs of each handler.\n\nTo provide this flexibility to the handlers, the authedHandler type has been modified to accept\nan authedUser type instead of a standard user type. Handlers can now check the IsAuthed field\nto determine the user's authentication status and decide how to appropriately handle each case.","shortMessageHtmlLink":"Refactor middlewareAuth to enhance control over unauthorized user han…"}},{"before":"48ae26b6a4e21e5e875a6d71f6b72f403ebaea14","after":"f4ec7b352bcaee4ff264e22477631cb309ecea4d","ref":"refs/heads/refactor-middleware","pushedAt":"2024-02-01T23:31:34.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"avearmin","name":"Armin Radoncic","path":"/avearmin","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/117543612?s=80&v=4"},"commit":{"message":"Refactor respondWithErrorHTML function\n\nThe function was refactored to provide a more general way to send\nerror HTML back to the client. Previously, a simple format would be\nsent back with no flexibility for other HTML error formats. More flexibility\nallows us to accomidate more diverse HTML formats.\n\nIn addition, I added respondWithHTML functions to provide a simple way\nto send html back to the client.","shortMessageHtmlLink":"Refactor respondWithErrorHTML function"}},{"before":null,"after":"48ae26b6a4e21e5e875a6d71f6b72f403ebaea14","ref":"refs/heads/refactor-middleware","pushedAt":"2024-02-01T21:11:26.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"avearmin","name":"Armin Radoncic","path":"/avearmin","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/117543612?s=80&v=4"},"commit":{"message":"Add respondWithErrorHTML function\n\nThis function replaces the old JSON respondWithError function. Instead of\nproviding JSON with the error, the function now responds with HTML containing\nthe error message to be displayed by the client. This brings the project more\ninline with its goal of being a hypermedia application.","shortMessageHtmlLink":"Add respondWithErrorHTML function"}},{"before":"00a7aa6c3dd1b00364ef40639d2af005aca3d1da","after":"e58e762893044c93d3a4d4011813cd2223694360","ref":"refs/heads/main","pushedAt":"2024-02-01T20:28:59.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"avearmin","name":"Armin Radoncic","path":"/avearmin","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/117543612?s=80&v=4"},"commit":{"message":"Remove JSON based handlers and helper functions\n\nThe decision to turn the project into a hypermedia application means it\nhas no real use for the old JSON based handlers. This is a necessary step\nto simplfy the project before we begin refactoring the middleware, and\nadd new hypermedia based handlers.","shortMessageHtmlLink":"Remove JSON based handlers and helper functions"}},{"before":"8efd73418ef1056d3f2b71fa52c267160ff8d999","after":null,"ref":"refs/heads/add-homepage","pushedAt":"2024-01-31T03:04:08.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"avearmin","name":"Armin Radoncic","path":"/avearmin","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/117543612?s=80&v=4"}},{"before":"0ea7cd2f7b847282a3f3dfa85ea78f0259df6bad","after":"00a7aa6c3dd1b00364ef40639d2af005aca3d1da","ref":"refs/heads/main","pushedAt":"2024-01-31T03:04:05.000Z","pushType":"pr_merge","commitsCount":4,"pusher":{"login":"avearmin","name":"Armin Radoncic","path":"/avearmin","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/117543612?s=80&v=4"},"commit":{"message":"Merge pull request #10 from avearmin/add-homepage\n\nAdd homepage","shortMessageHtmlLink":"Merge pull request #10 from avearmin/add-homepage"}},{"before":"182015f191ed422e608444efcd858c2904d113d5","after":"8efd73418ef1056d3f2b71fa52c267160ff8d999","ref":"refs/heads/add-homepage","pushedAt":"2024-01-31T03:00:20.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"avearmin","name":"Armin Radoncic","path":"/avearmin","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/117543612?s=80&v=4"},"commit":{"message":"Add css styling to index.html","shortMessageHtmlLink":"Add css styling to index.html"}},{"before":"b3875a59bfefb4b8e84c21e32b4e3a1cb4028a4c","after":"182015f191ed422e608444efcd858c2904d113d5","ref":"refs/heads/add-homepage","pushedAt":"2024-01-30T19:51:01.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"avearmin","name":"Armin Radoncic","path":"/avearmin","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/117543612?s=80&v=4"},"commit":{"message":"add handler to serve homepage","shortMessageHtmlLink":"add handler to serve homepage"}},{"before":null,"after":"b3875a59bfefb4b8e84c21e32b4e3a1cb4028a4c","ref":"refs/heads/add-homepage","pushedAt":"2024-01-28T18:36:17.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"avearmin","name":"Armin Radoncic","path":"/avearmin","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/117543612?s=80&v=4"},"commit":{"message":"Add bolierplate for hompage.html\n\nThe project now incorporates HTMX and Tailwind CSS for the frontend.\nThey are imported in the hompage template, and will be used throughout\nthe project from here on out.","shortMessageHtmlLink":"Add bolierplate for hompage.html"}},{"before":"f801f6b38af0cf8957039a98e35ae975ccdd773a","after":"0ea7cd2f7b847282a3f3dfa85ea78f0259df6bad","ref":"refs/heads/main","pushedAt":"2024-01-27T01:58:46.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"avearmin","name":"Armin Radoncic","path":"/avearmin","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/117543612?s=80&v=4"},"commit":{"message":"Remove gorage-sale binary","shortMessageHtmlLink":"Remove gorage-sale binary"}},{"before":"7c514cf32dbce16a20b7f8d46a971767f9d9f41e","after":"f801f6b38af0cf8957039a98e35ae975ccdd773a","ref":"refs/heads/main","pushedAt":"2024-01-27T01:57:17.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"avearmin","name":"Armin Radoncic","path":"/avearmin","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/117543612?s=80&v=4"},"commit":{"message":"Add missing cmd/gorage-sale/main.go","shortMessageHtmlLink":"Add missing cmd/gorage-sale/main.go"}},{"before":"0d8980d68d18f4ecc38713c96a1b39fd6aa563ae","after":null,"ref":"refs/heads/restructure-project-files","pushedAt":"2024-01-27T01:54:34.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"avearmin","name":"Armin Radoncic","path":"/avearmin","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/117543612?s=80&v=4"}}],"hasNextPage":true,"hasPreviousPage":false,"activityType":"all","actor":null,"timePeriod":"all","sort":"DESC","perPage":30,"cursor":"djE6ks8AAAAD9P13LAA","startCursor":null,"endCursor":null}},"title":"Activity · avearmin/gorage-sale"}