// net.fox - Продвинутая сетевая библиотека FoxLang с FastAPI-подобным функционалом // Подключается через: include("net.fox"); // === FASTAPI-ПОДОБНЫЙ ВЕБ СЕРВЕР === global int server_port = 8000; global bool server_running = false; // Запуск сервера на указанном порту void start_server(int port) { server_port = port; string result = server_start(port); server_running = true; print("🚀 Server started on http://localhost:" + port); print(result); } // Остановка сервера void stop_server() { if (server_running) { string result = server_stop(); server_running = false; print("🛑 Server stopped"); print(result); } else { print("❌ Server is not running"); } } // Регистрация GET маршрута void register_get(string path, string handler_name) { if (!server_running) { print("⚠️ Warning: Server not started. Call start_server() first"); } string result = route_get(path, handler_name); print("📥 GET " + path + " -> " + handler_name); } // Регистрация POST маршрута void register_post(string path, string handler_name) { if (!server_running) { print("⚠️ Warning: Server not started. Call start_server() first"); } string result = route_post(path, handler_name); print("📤 POST " + path + " -> " + handler_name); } // Отправка JSON ответа void json_response(string json_data) { send_response(json_data); } // Отправка текстового ответа void text_response(string text) { string json = "{\"message\":\"" + text + "\"}"; send_response(json); } // === ПРИМЕРЫ ОБРАБОТЧИКОВ === // Простой обработчик для главной страницы void home_handler() { json_response("{\"message\":\"Welcome to FoxLang API!\",\"version\":\"5.0.1\"}"); } // Обработчик для API статуса void status_handler() { json_response("{\"status\":\"ok\",\"server\":\"FoxLang\",\"port\":" + server_port + "}"); } // Обработчик для пользователей void users_handler() { json_response("{\"users\":[{\"id\":1,\"name\":\"Alice\"},{\"id\":2,\"name\":\"Bob\"}]}"); } // Обработчик для создания пользователя void create_user_handler() { text_response("User created successfully"); } // === БЫСТРЫЙ СТАРТ СЕРВЕРА === void quick_start() { print("🦊 Starting FoxLang FastAPI Server..."); // Запуск сервера start_server(8000); // Регистрация маршрутов register_get("/", "home_handler"); register_get("/status", "status_handler"); register_get("/users", "users_handler"); register_post("/users", "create_user_handler"); print("✅ Server configured with routes:"); print(" GET / -> Welcome page"); print(" GET /status -> Server status"); print(" GET /users -> List users"); print(" POST /users -> Create user"); print(""); print("🌐 Visit: http://localhost:8000"); print("⏹️ To stop: stop_server()"); } // === РАСШИРЕННЫЕ HTTP ФУНКЦИИ === // === РАСШИРЕННЫЕ HTTP ФУНКЦИИ === // HTTP GET запрос (встроенная функция httpget уже реализована) string http_get_simple(string url) { string response = httpget(url); if (response == "") { print("ERROR: Failed to fetch " + url); return "{}"; } return response; } // POST с JSON данными (используем встроенную httppost) string post_json(string url, string json_data) { string response = httppost(url, json_data, "application/json"); if (response == "") { print("ERROR: Failed to POST to " + url); return "{}"; } return response; } // === API КЛИЕНТ === // REST API клиент string api_get(string base_url, string endpoint) { return http_get_simple(base_url + endpoint); } string api_post(string base_url, string endpoint, string data) { return post_json(base_url + endpoint, data); } // === УТИЛИТЫ === // Получение публичного IP string get_public_ip() { return http_get_simple("https://api.ipify.org"); } // Отправка webhook bool send_webhook(string url, string message) { string json = "{\"text\":\"" + message + "\"}"; string response = post_json(url, json); return true; // Упрощено для совместимости } // === ДЕМО ФУНКЦИИ === void demo_server() { print("=== FastAPI Demo ==="); quick_start(); // Ждем немного для запуска сервера wait(2000); // Тестируем API print("🧪 Testing API endpoints..."); string home = http_get_simple("http://localhost:8000/"); print("Home: " + home); string status = http_get_simple("http://localhost:8000/status"); print("Status: " + status); string users = http_get_simple("http://localhost:8000/users"); print("Users: " + users); } void demo_client() { print("=== HTTP Client Demo ==="); string ip = get_public_ip(); print("Your IP: " + ip); // Тест внешнего API string response = api_get("https://jsonplaceholder.typicode.com", "/posts/1"); print("External API: " + response); } // === ОСНОВНАЯ ДЕМО ФУНКЦИЯ === void net_demo() { print("🦊 FoxLang Network Library Demo"); print("================================"); demo_client(); print(""); demo_server(); }