#pragma once #include #include #include #include #include "proto/credentials.grpc.pb.h" #include "credential_types.hpp" #include "common/error.hpp" namespace smartbotic::credentials { // Configuration for credential client struct CredentialClientConfig { std::string address = "localhost:9013"; // Credential service address int timeout_ms = 5000; }; // gRPC client for credential service class CredentialClient { public: explicit CredentialClient(const CredentialClientConfig& config); ~CredentialClient() = default; // Get HTTP authentication header for a credential common::Result getHttpAuth(const std::string& credential_id, const std::string& workflow_id = ""); // Get IMAP credentials common::Result getImapCredentials(const std::string& credential_id, const std::string& workflow_id = ""); // Get MySQL credentials common::Result getMysqlCredentials(const std::string& credential_id, const std::string& workflow_id = ""); // List available credentials common::Result> listCredentials(const std::string& workflow_id = ""); // Check if connected bool isConnected() const; private: CredentialClientConfig config_; std::shared_ptr channel_; std::unique_ptr stub_; }; } // namespace smartbotic::credentials