@@ -44,14 +44,17 @@ bool CffiProcessContext::hasNonEmptyProperty(std::string_view name) const {
4444 return MinifiProcessContextHasNonEmptyProperty (impl_, utils::minifiStringView (name));
4545}
4646
47- std::expected<MinifiControllerService*, std::error_code> CffiProcessContext::getControllerService (const std::string_view name,
48- const std::string_view type) const {
47+ std::expected<MinifiControllerService*, std::error_code> CffiProcessContext::getControllerService (const minifi::core::PropertyReference& prop) const {
4948 MinifiControllerService* controller_service = nullptr ;
50- if (const MinifiStatus status = MinifiProcessContextGetControllerService (impl_,
51- utils::minifiStringView (name),
52- utils::minifiStringView (type),
49+ gsl_Assert (prop.allowed_types .size () == 1 );
50+ const MinifiStatus status = MinifiProcessContextGetControllerServiceFromProperty (impl_,
51+ utils::minifiStringView (prop.name ),
52+ utils::minifiStringView (prop.allowed_types [0 ]),
5353 &controller_service);
54- status != MINIFI_STATUS_SUCCESS ) {
54+ if (status == MINIFI_STATUS_PROPERTY_NOT_SET ) {
55+ return nullptr ;
56+ }
57+ if (status != MINIFI_STATUS_SUCCESS ) {
5558 return std::unexpected{utils::make_error_code (status)};
5659 }
5760 return controller_service;
@@ -69,7 +72,10 @@ std::map<std::string, std::string> CffiProcessContext::getDynamicProperties(cons
6972 return result;
7073}
7174
72- std::expected<utils::net::SslData, std::error_code> CffiProcessContext::getSslData (const minifi::core::PropertyReference& prop) const {
75+ std::expected<std::optional<utils::net::SslData>, std::error_code> CffiProcessContext::getSslData (const minifi::core::PropertyReference& prop) const {
76+ const auto controller_name = getProperty (prop, nullptr );
77+ if (!controller_name) { return std::nullopt ; }
78+
7379 auto ssl_data = utils::net::SslData{};
7480
7581 if (const auto status = MinifiProcessContextGetSslDataFromProperty (impl_, utils::minifiStringView (prop.name ), [](void * data, const MinifiSslData* minifi_ssl_data) {
@@ -86,4 +92,31 @@ std::expected<utils::net::SslData, std::error_code> CffiProcessContext::getSslDa
8692 return ssl_data;
8793}
8894
95+ std::expected<std::optional<utils::ProxyData>, std::error_code> CffiProcessContext::getProxyData (const minifi::core::PropertyReference& prop) const {
96+ auto proxy_data = utils::ProxyData{};
97+ const auto status = MinifiProcessContextGetProxyDataFromProperty (
98+ impl_,
99+ utils::minifiStringView (prop.name ),
100+ [](void * data, const MinifiProxyData* minifi_proxy_data) {
101+ auto * proxy = static_cast <utils::ProxyData*>(data);
102+ proxy->host = utils::toString (minifi_proxy_data->hostname );
103+ proxy->port = minifi_proxy_data->port ;
104+ if (minifi_proxy_data->password && minifi_proxy_data->username ) {
105+ proxy->proxy_credentials = utils::BasicAuthCredentials{.username = utils::toString (*minifi_proxy_data->username ),
106+ .password = utils::toString (*minifi_proxy_data->password )};
107+ } else {
108+ proxy->proxy_credentials = std::nullopt ;
109+ }
110+ if (minifi_proxy_data->proxy_type == MINIFI_PROXY_TYPE_HTTP ) {
111+ proxy->proxy_type = utils::ProxyType::HTTP ;
112+ } else {
113+ proxy->proxy_type = utils::ProxyType::DIRECT ;
114+ }
115+ },
116+ &proxy_data);
117+ if (status == MINIFI_STATUS_PROPERTY_NOT_SET ) { return std::nullopt ; }
118+ if (status == MINIFI_STATUS_SUCCESS ) { return proxy_data; }
119+ return std::unexpected{utils::make_error_code (status)};
120+ }
121+
89122} // namespace org::apache::nifi::minifi::api::core
0 commit comments