{"payload":{"feedbackUrl":"https://github.com/orgs/community/discussions/53140","repo":{"id":749109299,"defaultBranch":"master","name":"crux-torrent","ownerLogin":"crux-bphc","currentUserCanPush":false,"isFork":false,"isEmpty":false,"createdAt":"2024-01-27T15:56:44.000Z","ownerAvatar":"https://github.com/avatars/u/11003211?v=4","public":true,"private":false,"isOrgOwned":true},"refInfo":{"name":"","listCacheKey":"v0:1722613577.0","currentOid":""},"activityList":{"items":[{"before":null,"after":"bc004cf3924787775cf470c145a2a1fd88687f17","ref":"refs/heads/engine","pushedAt":"2024-08-02T15:46:17.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"poisonpwn","name":"Adithyadev R","path":"/poisonpwn","primaryAvatarUrl":"https://github.com/avatars/u/45178461?s=80&v=4"},"commit":{"message":"refactor: add type alias PeerAddr for SocketAddrV4\n\n- rename PeerAddr struct containing addr to PeerConnector","shortMessageHtmlLink":"refactor: add type alias PeerAddr for SocketAddrV4"}},{"before":"d5730e089f3d32bb0521f9f7d9e24eff36756858","after":"9cc62ab1260213202a94c13c40f72d1587d98ca6","ref":"refs/heads/master","pushedAt":"2024-07-16T21:27:10.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"poisonpwn","name":"Adithyadev R","path":"/poisonpwn","primaryAvatarUrl":"https://github.com/avatars/u/45178461?s=80&v=4"},"commit":{"message":"chore: fix clippy warnings\n\n- remove useless as_ref in tracker/request.rs fold closure\n- silence clippy warnings for using Into instead of From,\n for Http and Udp url types, this is to prevent From for being used\n to construct them from arbitrary url types but otherway conversion\n is totally okay.","shortMessageHtmlLink":"chore: fix clippy warnings"}},{"before":"066aa53c6d66a293fd07d4f196cfde7990eed4f3","after":"d5730e089f3d32bb0521f9f7d9e24eff36756858","ref":"refs/heads/master","pushedAt":"2024-07-16T21:14:38.000Z","pushType":"push","commitsCount":10,"pusher":{"login":"poisonpwn","name":"Adithyadev R","path":"/poisonpwn","primaryAvatarUrl":"https://github.com/avatars/u/45178461?s=80&v=4"},"commit":{"message":"refactor(metainfo): split metainfo/files into download_info.rs &\nfile_info.rs\n\n- rename File to FileInfo (which used to be the name of DownloadInfo, not\n anymore)\n- move PieceHash to metainfo/mod.rs, change imports accordingly\n- re-export DownloadInfo and FileInfo from metainfo.","shortMessageHtmlLink":"refactor(metainfo): split metainfo/files into download_info.rs &"}},{"before":"92577e856c02d629f73ab160e0b2227f4a5a8126","after":null,"ref":"refs/heads/peer-download-worker","pushedAt":"2024-06-30T12:52:07.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"poisonpwn","name":"Adithyadev R","path":"/poisonpwn","primaryAvatarUrl":"https://github.com/avatars/u/45178461?s=80&v=4"}},{"before":"61ff16b27cac1d8bdee3ca4d399cd3c3f72d4e43","after":"066aa53c6d66a293fd07d4f196cfde7990eed4f3","ref":"refs/heads/master","pushedAt":"2024-06-30T12:51:56.000Z","pushType":"pr_merge","commitsCount":14,"pusher":{"login":"poisonpwn","name":"Adithyadev R","path":"/poisonpwn","primaryAvatarUrl":"https://github.com/avatars/u/45178461?s=80&v=4"},"commit":{"message":"Merge pull request #4 from crux-bphc/peer-download-worker\n\nPeer download worker","shortMessageHtmlLink":"Merge pull request #4 from crux-bphc/peer-download-worker"}},{"before":null,"after":"92577e856c02d629f73ab160e0b2227f4a5a8126","ref":"refs/heads/peer-download-worker","pushedAt":"2024-06-30T12:41:34.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"poisonpwn","name":"Adithyadev R","path":"/poisonpwn","primaryAvatarUrl":"https://github.com/avatars/u/45178461?s=80&v=4"},"commit":{"message":"feat(main): add test code for downloading piece 0 inside main","shortMessageHtmlLink":"feat(main): add test code for downloading piece 0 inside main"}},{"before":"11928f502735476726d15425910dedb46c98d16f","after":null,"ref":"refs/heads/bitfield","pushedAt":"2024-06-16T18:46:22.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"poisonpwn","name":"Adithyadev R","path":"/poisonpwn","primaryAvatarUrl":"https://github.com/avatars/u/45178461?s=80&v=4"}},{"before":null,"after":"11928f502735476726d15425910dedb46c98d16f","ref":"refs/heads/bitfield","pushedAt":"2024-06-16T18:46:18.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"poisonpwn","name":"Adithyadev R","path":"/poisonpwn","primaryAvatarUrl":"https://github.com/avatars/u/45178461?s=80&v=4"},"commit":{"message":"test: add sanity check test for Bitfield","shortMessageHtmlLink":"test: add sanity check test for Bitfield"}},{"before":"11928f502735476726d15425910dedb46c98d16f","after":null,"ref":"refs/heads/bitfield","pushedAt":"2024-06-16T18:45:58.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"poisonpwn","name":"Adithyadev R","path":"/poisonpwn","primaryAvatarUrl":"https://github.com/avatars/u/45178461?s=80&v=4"}},{"before":"0ce0c9969e84544e48d51cf572b9876e4d3ef33b","after":"61ff16b27cac1d8bdee3ca4d399cd3c3f72d4e43","ref":"refs/heads/master","pushedAt":"2024-06-16T18:45:12.000Z","pushType":"pr_merge","commitsCount":14,"pusher":{"login":"poisonpwn","name":"Adithyadev R","path":"/poisonpwn","primaryAvatarUrl":"https://github.com/avatars/u/45178461?s=80&v=4"},"commit":{"message":"Merge pull request #3 from crux-bphc/bitfield\n\nAdd Bitfield","shortMessageHtmlLink":"Merge pull request #3 from crux-bphc/bitfield"}},{"before":null,"after":"11928f502735476726d15425910dedb46c98d16f","ref":"refs/heads/bitfield","pushedAt":"2024-06-16T18:39:16.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"poisonpwn","name":"Adithyadev R","path":"/poisonpwn","primaryAvatarUrl":"https://github.com/avatars/u/45178461?s=80&v=4"},"commit":{"message":"test: add sanity check test for Bitfield","shortMessageHtmlLink":"test: add sanity check test for Bitfield"}},{"before":"379f4995023fd04b32a29ee832e1a93060a5257b","after":"0ce0c9969e84544e48d51cf572b9876e4d3ef33b","ref":"refs/heads/master","pushedAt":"2024-06-15T17:46:39.000Z","pushType":"push","commitsCount":4,"pusher":{"login":"poisonpwn","name":"Adithyadev R","path":"/poisonpwn","primaryAvatarUrl":"https://github.com/avatars/u/45178461?s=80&v=4"},"commit":{"message":"refactor: move InfoHash and PeerId to torrent module","shortMessageHtmlLink":"refactor: move InfoHash and PeerId to torrent module"}},{"before":"4b3216f6cbe254ea66532cf1d849bef7447c4b71","after":"379f4995023fd04b32a29ee832e1a93060a5257b","ref":"refs/heads/master","pushedAt":"2024-06-06T08:41:02.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"poisonpwn","name":"Adithyadev R","path":"/poisonpwn","primaryAvatarUrl":"https://github.com/avatars/u/45178461?s=80&v=4"},"commit":{"message":"test: add tests for PeerHandshake","shortMessageHtmlLink":"test: add tests for PeerHandshake"}},{"before":"2f2bdd791dec50969b449ab0ca8f45fa00c441b6","after":null,"ref":"refs/heads/peer-protocol-codec","pushedAt":"2024-06-06T08:38:55.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"poisonpwn","name":"Adithyadev R","path":"/poisonpwn","primaryAvatarUrl":"https://github.com/avatars/u/45178461?s=80&v=4"}},{"before":"36a9efbc63c7a8b338ba296d6e22a55ab3e4bfe8","after":"4b3216f6cbe254ea66532cf1d849bef7447c4b71","ref":"refs/heads/master","pushedAt":"2024-06-06T08:38:26.000Z","pushType":"pr_merge","commitsCount":12,"pusher":{"login":"poisonpwn","name":"Adithyadev R","path":"/poisonpwn","primaryAvatarUrl":"https://github.com/avatars/u/45178461?s=80&v=4"},"commit":{"message":"Merge pull request #2 from crux-bphc/peer-protocol-codec\n\nImplement Peer Message Codec","shortMessageHtmlLink":"Merge pull request #2 from crux-bphc/peer-protocol-codec"}},{"before":"026d47bd45180d4d8a974d038f1b1acb723ee477","after":"2f2bdd791dec50969b449ab0ca8f45fa00c441b6","ref":"refs/heads/peer-protocol-codec","pushedAt":"2024-06-05T18:20:45.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"poisonpwn","name":"Adithyadev R","path":"/poisonpwn","primaryAvatarUrl":"https://github.com/avatars/u/45178461?s=80&v=4"},"commit":{"message":"fix: fix test in main.rs to handle PeerMessage instead of Option","shortMessageHtmlLink":"fix: fix test in main.rs to handle PeerMessage instead of Option<PM>"}},{"before":"a92c72d6ce95d7e5542693070b4ecb50e65ad87d","after":"026d47bd45180d4d8a974d038f1b1acb723ee477","ref":"refs/heads/peer-protocol-codec","pushedAt":"2024-06-05T17:50:03.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"poisonpwn","name":"Adithyadev R","path":"/poisonpwn","primaryAvatarUrl":"https://github.com/avatars/u/45178461?s=80&v=4"},"commit":{"message":"feat(codec): codec returns PeerMessage instead of Option,\nsince Keep Alive messages are just discarded in Codec instead of passing\nit back up to caller by producing None.","shortMessageHtmlLink":"feat(codec): codec returns PeerMessage instead of Option<PeerMessage>,"}},{"before":"133f9d5788031a5ae537bf88f4e8da346e154013","after":"a92c72d6ce95d7e5542693070b4ecb50e65ad87d","ref":"refs/heads/peer-protocol-codec","pushedAt":"2024-05-30T18:26:03.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"poisonpwn","name":"Adithyadev R","path":"/poisonpwn","primaryAvatarUrl":"https://github.com/avatars/u/45178461?s=80&v=4"},"commit":{"message":"fix(codec): fix bug where wrong bytes were read leading to erroneous\nframes being made.\n\n- fix by not advancing the cursor (not using src.get_u32()) for length,\n as it advances the cursor, even if maybe enough bytes are not there\n for a full frame, then the next time the method is called after,\n the cursor has already moved past the length, and the data frames are\n incorrectly read as the length.","shortMessageHtmlLink":"fix(codec): fix bug where wrong bytes were read leading to erroneous"}},{"before":"afa8568ab1c4443ae8d18c7fdc58483b8074a4df","after":"133f9d5788031a5ae537bf88f4e8da346e154013","ref":"refs/heads/peer-protocol-codec","pushedAt":"2024-05-30T15:45:41.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"poisonpwn","name":"Adithyadev R","path":"/poisonpwn","primaryAvatarUrl":"https://github.com/avatars/u/45178461?s=80&v=4"},"commit":{"message":"refactor(codec): add PeerMessageTags struct to as a container for the\ntags for each PeerMessage variant, acts as the source of truth for the\ntags. this is to avoid mismatch between the tags in the enum definition\n(the discrimints are used to be used by the encoder) and pattern matching\nin the decoder.\n\n- use PeerMessageTags in the PeerMessage definition to specify the\n discriminants\n- match on PeerMessageTags constants in Decoder instead of u8 literals.","shortMessageHtmlLink":"refactor(codec): add PeerMessageTags struct to as a container for the"}},{"before":"80342c2c1a19ebde43b05045b9facec1b0796fbe","after":"048f82fa1d7e30fb639eef84f3c81c259ff4b36e","ref":"refs/heads/add-udp-handshake","pushedAt":"2024-05-28T12:13:58.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"skoriop","name":"Karthik Prakash","path":"/skoriop","primaryAvatarUrl":"https://github.com/avatars/u/116057817?s=80&v=4"},"commit":{"message":"feat: implement connect for UDP","shortMessageHtmlLink":"feat: implement connect for UDP"}},{"before":null,"after":"80342c2c1a19ebde43b05045b9facec1b0796fbe","ref":"refs/heads/add-udp-handshake","pushedAt":"2024-05-28T11:26:05.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"skoriop","name":"Karthik Prakash","path":"/skoriop","primaryAvatarUrl":"https://github.com/avatars/u/116057817?s=80&v=4"},"commit":{"message":"feat: add skeleton implementation","shortMessageHtmlLink":"feat: add skeleton implementation"}},{"before":"470f340fbbb7027e174d441ca0cb2914ab301171","after":"afa8568ab1c4443ae8d18c7fdc58483b8074a4df","ref":"refs/heads/peer-protocol-codec","pushedAt":"2024-05-26T07:33:50.000Z","pushType":"push","commitsCount":3,"pusher":{"login":"poisonpwn","name":"Adithyadev R","path":"/poisonpwn","primaryAvatarUrl":"https://github.com/avatars/u/45178461?s=80&v=4"},"commit":{"message":"fix: improve error mesg","shortMessageHtmlLink":"fix: improve error mesg"}},{"before":null,"after":"470f340fbbb7027e174d441ca0cb2914ab301171","ref":"refs/heads/peer-protocol-codec","pushedAt":"2024-05-26T03:24:30.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"poisonpwn","name":"Adithyadev R","path":"/poisonpwn","primaryAvatarUrl":"https://github.com/avatars/u/45178461?s=80&v=4"},"commit":{"message":"feat: impl part of Encoder for PeerMessageCodec","shortMessageHtmlLink":"feat: impl part of Encoder for PeerMessageCodec"}},{"before":"db91e1dc3869f89cb8241e2be2246e4251523b96","after":"36a9efbc63c7a8b338ba296d6e22a55ab3e4bfe8","ref":"refs/heads/master","pushedAt":"2024-05-26T03:20:50.000Z","pushType":"push","commitsCount":2,"pusher":{"login":"poisonpwn","name":"Adithyadev R","path":"/poisonpwn","primaryAvatarUrl":"https://github.com/avatars/u/45178461?s=80&v=4"},"commit":{"message":"fix: remove metainfo_file_path module from src/metainfo/mod.rs","shortMessageHtmlLink":"fix: remove metainfo_file_path module from src/metainfo/mod.rs"}},{"before":"b9de9f1a3d6779aeef556cf59c9c741558e71d40","after":"db91e1dc3869f89cb8241e2be2246e4251523b96","ref":"refs/heads/master","pushedAt":"2024-05-23T20:16:30.000Z","pushType":"push","commitsCount":2,"pusher":{"login":"poisonpwn","name":"Adithyadev R","path":"/poisonpwn","primaryAvatarUrl":"https://github.com/avatars/u/45178461?s=80&v=4"},"commit":{"message":"docs: add reason for repr(C) on PeerHandshake","shortMessageHtmlLink":"docs: add reason for repr(C) on PeerHandshake"}},{"before":"09ed35662478caf8c7b7d5ea2ca7d7fac8507a4b","after":"b9de9f1a3d6779aeef556cf59c9c741558e71d40","ref":"refs/heads/master","pushedAt":"2024-05-17T16:02:34.000Z","pushType":"push","commitsCount":3,"pusher":{"login":"poisonpwn","name":"Adithyadev R","path":"/poisonpwn","primaryAvatarUrl":"https://github.com/avatars/u/45178461?s=80&v=4"},"commit":{"message":"feat(main): for testing, concurrently call all peers, select the first one to\nrespond. move to a thread pool executor implementation later.","shortMessageHtmlLink":"feat(main): for testing, concurrently call all peers, select the firs…"}},{"before":null,"after":"a4da6af756cb800cc57f439aa98bf97958113081","ref":"refs/heads/peer-handshake","pushedAt":"2024-04-23T09:14:12.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"poisonpwn","name":"Adithyadev R","path":"/poisonpwn","primaryAvatarUrl":"https://github.com/avatars/u/45178461?s=80&v=4"},"commit":{"message":"feat(peer_protocol): added PeerHandshake in peer_protocol module.\n\n- PeerHandshake can be byte cast and sent over TCP to perform handshake,\n the response returned by peer also should have the same structure, so it can be\n turned back into a PeerHandshake.","shortMessageHtmlLink":"feat(peer_protocol): added PeerHandshake in peer_protocol module."}},{"before":"b9ce4c7068655820374773d29f71c8fe9fdedf9d","after":"09ed35662478caf8c7b7d5ea2ca7d7fac8507a4b","ref":"refs/heads/master","pushedAt":"2024-04-19T15:12:22.000Z","pushType":"push","commitsCount":2,"pusher":{"login":"poisonpwn","name":"Adithyadev R","path":"/poisonpwn","primaryAvatarUrl":"https://github.com/avatars/u/45178461?s=80&v=4"},"commit":{"message":"refactor: created new InfoHash wrapper struct instead of using [u8; 20] for better encapsulation","shortMessageHtmlLink":"refactor: created new InfoHash wrapper struct instead of using [u8; 2…"}},{"before":"62ed3504e6c363fc153672cd5a2e351c7b1a9eb9","after":"b9ce4c7068655820374773d29f71c8fe9fdedf9d","ref":"refs/heads/master","pushedAt":"2024-03-23T08:56:45.000Z","pushType":"push","commitsCount":5,"pusher":{"login":"poisonpwn","name":"Adithyadev R","path":"/poisonpwn","primaryAvatarUrl":"https://github.com/avatars/u/45178461?s=80&v=4"},"commit":{"message":"docs(tracker response): add explanation for TrackerResponseResult","shortMessageHtmlLink":"docs(tracker response): add explanation for TrackerResponseResult"}},{"before":"4968284523150e6152cfe46aa6368d862aa9454e","after":"62ed3504e6c363fc153672cd5a2e351c7b1a9eb9","ref":"refs/heads/master","pushedAt":"2024-03-22T18:21:07.000Z","pushType":"push","commitsCount":12,"pusher":{"login":"poisonpwn","name":"Adithyadev R","path":"/poisonpwn","primaryAvatarUrl":"https://github.com/avatars/u/45178461?s=80&v=4"},"commit":{"message":"Merge branch 'http_tracking'","shortMessageHtmlLink":"Merge branch 'http_tracking'"}}],"hasNextPage":true,"hasPreviousPage":false,"activityType":"all","actor":null,"timePeriod":"all","sort":"DESC","perPage":30,"cursor":"Y3Vyc29yOnYyOpK7MjAyNC0wOC0wMlQxNTo0NjoxNy4wMDAwMDBazwAAAASQUyER","startCursor":"Y3Vyc29yOnYyOpK7MjAyNC0wOC0wMlQxNTo0NjoxNy4wMDAwMDBazwAAAASQUyER","endCursor":"Y3Vyc29yOnYyOpK7MjAyNC0wMy0yMlQxODoyMTowNy4wMDAwMDBazwAAAAQdBvae"}},"title":"Activity · crux-bphc/crux-torrent"}