5 #include <boost/regex.hpp>
6 #include <boost/filesystem.hpp>
7 #include <boost/range/iterator_range_core.hpp>
8 #include <boost/archive/binary_oarchive.hpp>
9 #include <libtorrent/file_storage.hpp>
10 #include <libtorrent/settings_pack.hpp>
11 #include <libtorrent/session.hpp>
12 #include <libtorrent/create_torrent.hpp>
24 Addon::Addon(
const int64_t &
id,
const std::string &addon_name,
const std::string &addon_version,
25 const std::string &interface_version,
const std::string &addon_note,
44 boost::filesystem::directory_iterator dir_iter;
45 switch (wow_version) {
46 case WoWVersion::Retail:
47 dir_iter = boost::filesystem::directory_iterator(
"./wam_files/retail");
49 case WoWVersion::Classic:
50 dir_iter = boost::filesystem::directory_iterator(
"./wam_files/classic");
53 dir_iter = boost::filesystem::directory_iterator(
"./wam_files/ptr");
58 auto addons = std::vector<Addon>{};
59 auto range = boost::make_iterator_range(dir_iter, {});
60 for (
const boost::filesystem::directory_entry &entry: range) {
61 std::cout << entry.path().filename() << std::endl;
90 std::vector<Addon> addons{};
91 auto result = client.Get(
"/api/addons");
92 if(result && result->status == 200) {
94 addons.emplace_back(addon);
112 auto result = client.Get(std::string(
"/api/addons?name=" + addon_name).c_str());
113 if(result && result->status == 200) {
130 libtorrent::settings_pack settings;
131 libtorrent::session ses;
132 settings.set_str(libtorrent::settings_pack::user_agent,
"wam/" LIBTORRENT_VERSION);
133 ses.apply_settings(settings);
135 auto fs = lt::file_storage();
136 boost::filesystem::recursive_directory_iterator dir_iter{filepath};
137 auto range = boost::make_iterator_range(dir_iter, {});
138 for (
const boost::filesystem::directory_entry &entry: range) {
139 if(!boost::filesystem::is_directory(entry)){
140 fs.add_file(entry.path().string(), boost::filesystem::file_size(entry.path()));
144 auto t = libtorrent::create_torrent(fs);
146 t.set_creator(
"WAM Client");
147 t.add_tracker(
"http://192.168.1.14:8081/announce");
149 libtorrent::set_piece_hashes(t,
".");
150 std::ostringstream out(
"my_torrent.torrent", std::ios_base::binary);
152 bencode(std::ostream_iterator<char>(out), t.generate());
160 case WoWVersion::Retail:
161 return std::string(
"Retail");
162 case WoWVersion::Classic:
163 return std::string(
"Classic");
164 case WoWVersion::PTR:
165 return std::string(
"PTR");
167 return std::string(
"Invalid");
173 if(wow_version ==
"Retail")
174 return WoWVersion::Retail;
175 else if(wow_version ==
"Classic")
176 return WoWVersion::Classic;
177 else if(wow_version ==
"PTR")
178 return WoWVersion::PTR;
180 return WoWVersion::Invalid;