credential_client.hpp 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. #pragma once
  2. #include <memory>
  3. #include <string>
  4. #include <vector>
  5. #include <grpcpp/grpcpp.h>
  6. #include "proto/credentials.grpc.pb.h"
  7. #include "credential_types.hpp"
  8. #include "common/error.hpp"
  9. namespace smartbotic::credentials {
  10. // Configuration for credential client
  11. struct CredentialClientConfig {
  12. std::string address = "localhost:9013"; // Credential service address
  13. int timeout_ms = 5000;
  14. };
  15. // gRPC client for credential service
  16. class CredentialClient {
  17. public:
  18. explicit CredentialClient(const CredentialClientConfig& config);
  19. ~CredentialClient() = default;
  20. // Get HTTP authentication header for a credential
  21. common::Result<HttpAuth> getHttpAuth(const std::string& credential_id,
  22. const std::string& workflow_id = "");
  23. // Get IMAP credentials
  24. common::Result<ImapData> getImapCredentials(const std::string& credential_id,
  25. const std::string& workflow_id = "");
  26. // Get MySQL credentials
  27. common::Result<MysqlData> getMysqlCredentials(const std::string& credential_id,
  28. const std::string& workflow_id = "");
  29. // List available credentials
  30. common::Result<std::vector<CredentialInfo>> listCredentials(const std::string& workflow_id = "");
  31. // Check if connected
  32. bool isConnected() const;
  33. private:
  34. CredentialClientConfig config_;
  35. std::shared_ptr<grpc::Channel> channel_;
  36. std::unique_ptr<proto::CredentialService::Stub> stub_;
  37. };
  38. } // namespace smartbotic::credentials