// Küçük test: lisans_canli.cpp'deki urlCoz mantığını tekrarlar. #include #include #include struct UrlParca { bool https = true; unsigned short port = 443; std::string host, yol; }; bool urlCoz(const std::string& url, UrlParca& u) { std::string kalan = url; for (char& c : kalan) if (c == static_cast(92)) c = '/'; if (kalan.rfind("https://", 0) == 0) { u.https = true; kalan.erase(0, 8); } else if (kalan.rfind("http://", 0) == 0) { u.https = false; kalan.erase(0, 7); } if (kalan.empty()) return false; std::string yetki = kalan, yol = "/"; if (const size_t egik = kalan.find('/'); egik != std::string::npos) { yetki = kalan.substr(0, egik); yol = kalan.substr(egik); } if (yetki.empty()) return false; std::string host = yetki; if (!yetki.empty() && yetki.front() == '[') { const size_t kapa = yetki.find(']'); if (kapa == std::string::npos) return false; host = yetki.substr(1, kapa - 1); if (kapa + 1 < yetki.size() && yetki[kapa + 1] == ':') u.port = (unsigned short)std::atoi(yetki.c_str() + kapa + 2); } else if (const size_t iki = yetki.rfind(':'); iki != std::string::npos) { host = yetki.substr(0, iki); u.port = (unsigned short)std::atoi(yetki.c_str() + iki + 1); } if (host.empty() || u.port == 0) return false; u.host = host; u.yol = yol; return true; } int main() { const char* urls[] = { "https://fikoyt.com:9000/isans.socket.io/", "https://fikoyt.com/isans.socket.io/", "http://localhost:9000/lisans.socket.io/" }; int basarili = 0; for (const char* u : urls) { UrlParca p; if (urlCoz(u, p)) { printf("OK | %-45s -> https=%d port=%d host=%s yol=%s\n", u, p.https, p.port, p.host.c_str(), p.yol.c_str()); basarili++; } else { printf("FAIL | %-45s -> parse basarisiz\n", u); } } printf("\n%d/3 basarili\n", basarili); return basarili == 3 ? 0 : 1; }