#ifndef HTTP_CLIENT_H #define HTTP_CLIENT_H #include #include #include /** * @brief HTTP client for communicating with WizardMerge backend */ class HttpClient { public: /** * @brief Construct HTTP client with backend URL * @param backendUrl URL of the backend server (e.g., "http://localhost:8080") */ explicit HttpClient(const std::string& backendUrl); /** * @brief Perform a three-way merge via backend API * @param base Base version lines * @param ours Our version lines * @param theirs Their version lines * @param merged Output merged lines * @param hasConflicts Output whether conflicts were detected * @return true if successful, false on error */ bool performMerge( const std::vector& base, const std::vector& ours, const std::vector& theirs, std::vector& merged, bool& hasConflicts ); /** * @brief Check if backend is reachable * @return true if backend responds, false otherwise */ bool checkBackend(); /** * @brief Get last error message * @return Error message string */ std::string getLastError() const { return lastError_; } private: std::string backendUrl_; std::string lastError_; /** * @brief Perform HTTP POST request * @param endpoint API endpoint (e.g., "/api/merge") * @param jsonBody JSON request body * @param response Output response string * @return true if successful, false on error */ bool post(const std::string& endpoint, const std::string& jsonBody, std::string& response); }; #endif // HTTP_CLIENT_H