├── .gitignore ├── .travis.yml ├── LICENSE ├── README.md ├── bin ├── download.cr ├── readbencode.cr └── readtorrent.cr ├── shard.yml ├── spec ├── fixtures │ └── debian.torrent ├── helper │ ├── test_node.cr │ └── test_peer.cr ├── spec_helper.cr └── torrent │ ├── bencode │ ├── any_spec.cr │ ├── extensions_spec.cr │ ├── lexer_spec.cr │ ├── mapping_spec.cr │ └── pull_parser_spec.cr │ ├── client │ └── peer_spec.cr │ ├── dht │ ├── bucket_spec.cr │ ├── default_rpc_methods_spec.cr │ ├── dispatcher_spec.cr │ ├── node_list_spec.cr │ ├── node_spec.cr │ ├── peer_list_spec.cr │ └── structure_spec.cr │ ├── transfer_spec.cr │ └── util │ ├── bitfield_spec.cr │ ├── endian_spec.cr │ ├── gmp_spec.cr │ ├── kademlia_list_spec.cr │ ├── network_order_struct_spec.cr │ └── request_list_spec.cr └── src ├── torrent.cr └── torrent ├── bencode.cr ├── bencode ├── any.cr ├── extensions.cr ├── lexer.cr ├── mapping.cr └── pull_parser.cr ├── client.cr ├── client ├── http_tracker.cr ├── peer.cr ├── protocol.cr ├── tcp_peer.cr ├── tracker.cr ├── udp_tracker.cr └── wire.cr ├── dht ├── bucket.cr ├── default_rpc_methods.cr ├── dispatcher.cr ├── error.cr ├── error_code.cr ├── finder.cr ├── manager.cr ├── node.cr ├── node_address.cr ├── node_finder.cr ├── node_list.cr ├── peer_list.cr ├── peers_finder.cr ├── structure.cr └── udp_node.cr ├── extension ├── handler.cr ├── manager.cr └── peer_exchange.cr ├── file.cr ├── file_manager ├── base.cr └── file_system.cr ├── leech_strategy ├── base.cr ├── default.cr └── null.cr ├── manager ├── base.cr └── transfer.cr ├── peer_list.cr ├── piece_picker ├── base.cr ├── rarest_first.cr └── sequential.cr ├── structure.cr ├── transfer.cr ├── util ├── async_io_channel.cr ├── bitfield.cr ├── endian.cr ├── gmp.cr ├── kademlia_list.cr ├── logger.cr ├── network_order_struct.cr ├── random.cr ├── request_list.cr ├── spawn.cr └── udp_socket.cr └── version.cr /.gitignore: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Papierkorb/torrent/HEAD/.gitignore -------------------------------------------------------------------------------- /.travis.yml: -------------------------------------------------------------------------------- 1 | language: crystal 2 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Papierkorb/torrent/HEAD/LICENSE -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Papierkorb/torrent/HEAD/README.md -------------------------------------------------------------------------------- /bin/download.cr: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Papierkorb/torrent/HEAD/bin/download.cr -------------------------------------------------------------------------------- /bin/readbencode.cr: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Papierkorb/torrent/HEAD/bin/readbencode.cr -------------------------------------------------------------------------------- /bin/readtorrent.cr: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Papierkorb/torrent/HEAD/bin/readtorrent.cr -------------------------------------------------------------------------------- /shard.yml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Papierkorb/torrent/HEAD/shard.yml -------------------------------------------------------------------------------- /spec/fixtures/debian.torrent: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Papierkorb/torrent/HEAD/spec/fixtures/debian.torrent -------------------------------------------------------------------------------- /spec/helper/test_node.cr: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Papierkorb/torrent/HEAD/spec/helper/test_node.cr -------------------------------------------------------------------------------- /spec/helper/test_peer.cr: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Papierkorb/torrent/HEAD/spec/helper/test_peer.cr -------------------------------------------------------------------------------- /spec/spec_helper.cr: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Papierkorb/torrent/HEAD/spec/spec_helper.cr -------------------------------------------------------------------------------- /spec/torrent/bencode/any_spec.cr: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Papierkorb/torrent/HEAD/spec/torrent/bencode/any_spec.cr -------------------------------------------------------------------------------- /spec/torrent/bencode/extensions_spec.cr: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Papierkorb/torrent/HEAD/spec/torrent/bencode/extensions_spec.cr -------------------------------------------------------------------------------- /spec/torrent/bencode/lexer_spec.cr: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Papierkorb/torrent/HEAD/spec/torrent/bencode/lexer_spec.cr -------------------------------------------------------------------------------- /spec/torrent/bencode/mapping_spec.cr: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Papierkorb/torrent/HEAD/spec/torrent/bencode/mapping_spec.cr -------------------------------------------------------------------------------- /spec/torrent/bencode/pull_parser_spec.cr: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Papierkorb/torrent/HEAD/spec/torrent/bencode/pull_parser_spec.cr -------------------------------------------------------------------------------- /spec/torrent/client/peer_spec.cr: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Papierkorb/torrent/HEAD/spec/torrent/client/peer_spec.cr -------------------------------------------------------------------------------- /spec/torrent/dht/bucket_spec.cr: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Papierkorb/torrent/HEAD/spec/torrent/dht/bucket_spec.cr -------------------------------------------------------------------------------- /spec/torrent/dht/default_rpc_methods_spec.cr: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Papierkorb/torrent/HEAD/spec/torrent/dht/default_rpc_methods_spec.cr -------------------------------------------------------------------------------- /spec/torrent/dht/dispatcher_spec.cr: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Papierkorb/torrent/HEAD/spec/torrent/dht/dispatcher_spec.cr -------------------------------------------------------------------------------- /spec/torrent/dht/node_list_spec.cr: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Papierkorb/torrent/HEAD/spec/torrent/dht/node_list_spec.cr -------------------------------------------------------------------------------- /spec/torrent/dht/node_spec.cr: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Papierkorb/torrent/HEAD/spec/torrent/dht/node_spec.cr -------------------------------------------------------------------------------- /spec/torrent/dht/peer_list_spec.cr: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Papierkorb/torrent/HEAD/spec/torrent/dht/peer_list_spec.cr -------------------------------------------------------------------------------- /spec/torrent/dht/structure_spec.cr: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Papierkorb/torrent/HEAD/spec/torrent/dht/structure_spec.cr -------------------------------------------------------------------------------- /spec/torrent/transfer_spec.cr: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Papierkorb/torrent/HEAD/spec/torrent/transfer_spec.cr -------------------------------------------------------------------------------- /spec/torrent/util/bitfield_spec.cr: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Papierkorb/torrent/HEAD/spec/torrent/util/bitfield_spec.cr -------------------------------------------------------------------------------- /spec/torrent/util/endian_spec.cr: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Papierkorb/torrent/HEAD/spec/torrent/util/endian_spec.cr -------------------------------------------------------------------------------- /spec/torrent/util/gmp_spec.cr: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Papierkorb/torrent/HEAD/spec/torrent/util/gmp_spec.cr -------------------------------------------------------------------------------- /spec/torrent/util/kademlia_list_spec.cr: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Papierkorb/torrent/HEAD/spec/torrent/util/kademlia_list_spec.cr -------------------------------------------------------------------------------- /spec/torrent/util/network_order_struct_spec.cr: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Papierkorb/torrent/HEAD/spec/torrent/util/network_order_struct_spec.cr -------------------------------------------------------------------------------- /spec/torrent/util/request_list_spec.cr: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Papierkorb/torrent/HEAD/spec/torrent/util/request_list_spec.cr -------------------------------------------------------------------------------- /src/torrent.cr: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Papierkorb/torrent/HEAD/src/torrent.cr -------------------------------------------------------------------------------- /src/torrent/bencode.cr: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Papierkorb/torrent/HEAD/src/torrent/bencode.cr -------------------------------------------------------------------------------- /src/torrent/bencode/any.cr: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Papierkorb/torrent/HEAD/src/torrent/bencode/any.cr -------------------------------------------------------------------------------- /src/torrent/bencode/extensions.cr: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Papierkorb/torrent/HEAD/src/torrent/bencode/extensions.cr -------------------------------------------------------------------------------- /src/torrent/bencode/lexer.cr: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Papierkorb/torrent/HEAD/src/torrent/bencode/lexer.cr -------------------------------------------------------------------------------- /src/torrent/bencode/mapping.cr: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Papierkorb/torrent/HEAD/src/torrent/bencode/mapping.cr -------------------------------------------------------------------------------- /src/torrent/bencode/pull_parser.cr: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Papierkorb/torrent/HEAD/src/torrent/bencode/pull_parser.cr -------------------------------------------------------------------------------- /src/torrent/client.cr: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Papierkorb/torrent/HEAD/src/torrent/client.cr -------------------------------------------------------------------------------- /src/torrent/client/http_tracker.cr: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Papierkorb/torrent/HEAD/src/torrent/client/http_tracker.cr -------------------------------------------------------------------------------- /src/torrent/client/peer.cr: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Papierkorb/torrent/HEAD/src/torrent/client/peer.cr -------------------------------------------------------------------------------- /src/torrent/client/protocol.cr: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Papierkorb/torrent/HEAD/src/torrent/client/protocol.cr -------------------------------------------------------------------------------- /src/torrent/client/tcp_peer.cr: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Papierkorb/torrent/HEAD/src/torrent/client/tcp_peer.cr -------------------------------------------------------------------------------- /src/torrent/client/tracker.cr: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Papierkorb/torrent/HEAD/src/torrent/client/tracker.cr -------------------------------------------------------------------------------- /src/torrent/client/udp_tracker.cr: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Papierkorb/torrent/HEAD/src/torrent/client/udp_tracker.cr -------------------------------------------------------------------------------- /src/torrent/client/wire.cr: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Papierkorb/torrent/HEAD/src/torrent/client/wire.cr -------------------------------------------------------------------------------- /src/torrent/dht/bucket.cr: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Papierkorb/torrent/HEAD/src/torrent/dht/bucket.cr -------------------------------------------------------------------------------- /src/torrent/dht/default_rpc_methods.cr: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Papierkorb/torrent/HEAD/src/torrent/dht/default_rpc_methods.cr -------------------------------------------------------------------------------- /src/torrent/dht/dispatcher.cr: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Papierkorb/torrent/HEAD/src/torrent/dht/dispatcher.cr -------------------------------------------------------------------------------- /src/torrent/dht/error.cr: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Papierkorb/torrent/HEAD/src/torrent/dht/error.cr -------------------------------------------------------------------------------- /src/torrent/dht/error_code.cr: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Papierkorb/torrent/HEAD/src/torrent/dht/error_code.cr -------------------------------------------------------------------------------- /src/torrent/dht/finder.cr: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Papierkorb/torrent/HEAD/src/torrent/dht/finder.cr -------------------------------------------------------------------------------- /src/torrent/dht/manager.cr: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Papierkorb/torrent/HEAD/src/torrent/dht/manager.cr -------------------------------------------------------------------------------- /src/torrent/dht/node.cr: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Papierkorb/torrent/HEAD/src/torrent/dht/node.cr -------------------------------------------------------------------------------- /src/torrent/dht/node_address.cr: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Papierkorb/torrent/HEAD/src/torrent/dht/node_address.cr -------------------------------------------------------------------------------- /src/torrent/dht/node_finder.cr: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Papierkorb/torrent/HEAD/src/torrent/dht/node_finder.cr -------------------------------------------------------------------------------- /src/torrent/dht/node_list.cr: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Papierkorb/torrent/HEAD/src/torrent/dht/node_list.cr -------------------------------------------------------------------------------- /src/torrent/dht/peer_list.cr: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Papierkorb/torrent/HEAD/src/torrent/dht/peer_list.cr -------------------------------------------------------------------------------- /src/torrent/dht/peers_finder.cr: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Papierkorb/torrent/HEAD/src/torrent/dht/peers_finder.cr -------------------------------------------------------------------------------- /src/torrent/dht/structure.cr: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Papierkorb/torrent/HEAD/src/torrent/dht/structure.cr -------------------------------------------------------------------------------- /src/torrent/dht/udp_node.cr: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Papierkorb/torrent/HEAD/src/torrent/dht/udp_node.cr -------------------------------------------------------------------------------- /src/torrent/extension/handler.cr: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Papierkorb/torrent/HEAD/src/torrent/extension/handler.cr -------------------------------------------------------------------------------- /src/torrent/extension/manager.cr: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Papierkorb/torrent/HEAD/src/torrent/extension/manager.cr -------------------------------------------------------------------------------- /src/torrent/extension/peer_exchange.cr: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Papierkorb/torrent/HEAD/src/torrent/extension/peer_exchange.cr -------------------------------------------------------------------------------- /src/torrent/file.cr: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Papierkorb/torrent/HEAD/src/torrent/file.cr -------------------------------------------------------------------------------- /src/torrent/file_manager/base.cr: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Papierkorb/torrent/HEAD/src/torrent/file_manager/base.cr -------------------------------------------------------------------------------- /src/torrent/file_manager/file_system.cr: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Papierkorb/torrent/HEAD/src/torrent/file_manager/file_system.cr -------------------------------------------------------------------------------- /src/torrent/leech_strategy/base.cr: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Papierkorb/torrent/HEAD/src/torrent/leech_strategy/base.cr -------------------------------------------------------------------------------- /src/torrent/leech_strategy/default.cr: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Papierkorb/torrent/HEAD/src/torrent/leech_strategy/default.cr -------------------------------------------------------------------------------- /src/torrent/leech_strategy/null.cr: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Papierkorb/torrent/HEAD/src/torrent/leech_strategy/null.cr -------------------------------------------------------------------------------- /src/torrent/manager/base.cr: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Papierkorb/torrent/HEAD/src/torrent/manager/base.cr -------------------------------------------------------------------------------- /src/torrent/manager/transfer.cr: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Papierkorb/torrent/HEAD/src/torrent/manager/transfer.cr -------------------------------------------------------------------------------- /src/torrent/peer_list.cr: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Papierkorb/torrent/HEAD/src/torrent/peer_list.cr -------------------------------------------------------------------------------- /src/torrent/piece_picker/base.cr: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Papierkorb/torrent/HEAD/src/torrent/piece_picker/base.cr -------------------------------------------------------------------------------- /src/torrent/piece_picker/rarest_first.cr: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Papierkorb/torrent/HEAD/src/torrent/piece_picker/rarest_first.cr -------------------------------------------------------------------------------- /src/torrent/piece_picker/sequential.cr: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Papierkorb/torrent/HEAD/src/torrent/piece_picker/sequential.cr -------------------------------------------------------------------------------- /src/torrent/structure.cr: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Papierkorb/torrent/HEAD/src/torrent/structure.cr -------------------------------------------------------------------------------- /src/torrent/transfer.cr: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Papierkorb/torrent/HEAD/src/torrent/transfer.cr -------------------------------------------------------------------------------- /src/torrent/util/async_io_channel.cr: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Papierkorb/torrent/HEAD/src/torrent/util/async_io_channel.cr -------------------------------------------------------------------------------- /src/torrent/util/bitfield.cr: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Papierkorb/torrent/HEAD/src/torrent/util/bitfield.cr -------------------------------------------------------------------------------- /src/torrent/util/endian.cr: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Papierkorb/torrent/HEAD/src/torrent/util/endian.cr -------------------------------------------------------------------------------- /src/torrent/util/gmp.cr: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Papierkorb/torrent/HEAD/src/torrent/util/gmp.cr -------------------------------------------------------------------------------- /src/torrent/util/kademlia_list.cr: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Papierkorb/torrent/HEAD/src/torrent/util/kademlia_list.cr -------------------------------------------------------------------------------- /src/torrent/util/logger.cr: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Papierkorb/torrent/HEAD/src/torrent/util/logger.cr -------------------------------------------------------------------------------- /src/torrent/util/network_order_struct.cr: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Papierkorb/torrent/HEAD/src/torrent/util/network_order_struct.cr -------------------------------------------------------------------------------- /src/torrent/util/random.cr: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Papierkorb/torrent/HEAD/src/torrent/util/random.cr -------------------------------------------------------------------------------- /src/torrent/util/request_list.cr: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Papierkorb/torrent/HEAD/src/torrent/util/request_list.cr -------------------------------------------------------------------------------- /src/torrent/util/spawn.cr: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Papierkorb/torrent/HEAD/src/torrent/util/spawn.cr -------------------------------------------------------------------------------- /src/torrent/util/udp_socket.cr: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Papierkorb/torrent/HEAD/src/torrent/util/udp_socket.cr -------------------------------------------------------------------------------- /src/torrent/version.cr: -------------------------------------------------------------------------------- 1 | module Torrent 2 | VERSION = "0.2.0" 3 | end 4 | --------------------------------------------------------------------------------