Github user achristianson commented on a diff in the pull request:

    https://github.com/apache/nifi-minifi-cpp/pull/134#discussion_r137881667
  
    --- Diff: libminifi/src/RemoteProcessorGroupPort.cpp ---
    @@ -221,51 +223,28 @@ void 
RemoteProcessorGroupPort::refreshRemoteSite2SiteInfo() {
     
       if (!rest_user_name_.empty()) {
         std::string loginUrl = this->protocol_ + this->host_ + ":" + 
std::to_string(this->port_) + "/nifi-api/access/token";
    -    token = utils::get_token(loginUrl, this->rest_user_name_, 
this->rest_password_, this->securityConfig_);
    -    logger_->log_debug("Token from NiFi REST Api endpoint %s", token);
    +    utils::HTTPClient client(loginUrl, ssl_service);
    +    client.setVerbose();
    +    token = utils::get_token(client, this->rest_user_name_, 
this->rest_password_);
    +    logger_->log_debug("Token from NiFi REST Api endpoint %s,  %s", 
loginUrl, token);
         if (token.empty())
    -        return;
    +      return;
       }
     
    -  CURL *http_session = curl_easy_init();
    +  utils::HTTPClient client(fullUrl.c_str(), ssl_service);
     
    -  if (fullUrl.find("https") != std::string::npos) {
    -    this->securityConfig_.configureSecureConnection(http_session);
    -  }
    +  client.initialize("GET");
     
       struct curl_slist *list = NULL;
       if (!token.empty()) {
         std::string header = "Authorization: " + token;
         list = curl_slist_append(list, header.c_str());
    -    curl_easy_setopt(http_session, CURLOPT_HTTPHEADER, list);
    +    client.setHeaders(list);
       }
     
    -  curl_easy_setopt(http_session, CURLOPT_URL, fullUrl.c_str());
    -
    -  utils::HTTPRequestResponse content;
    -  curl_easy_setopt(http_session, CURLOPT_WRITEFUNCTION,
    -      &utils::HTTPRequestResponse::recieve_write);
    -
    -  curl_easy_setopt(http_session, CURLOPT_WRITEDATA,
    -      static_cast<void*>(&content));
    -
    -  CURLcode res = curl_easy_perform(http_session);
    -  if (list)
    -    curl_slist_free_all(list);
    -
    -  if (res == CURLE_OK) {
    -    std::string response_body(content.data.begin(), content.data.end());
    -    int64_t http_code = 0;
    -    curl_easy_getinfo(http_session, CURLINFO_RESPONSE_CODE, &http_code);
    -    char *content_type;
    -    /* ask for the content-type */
    -    curl_easy_getinfo(http_session, CURLINFO_CONTENT_TYPE, &content_type);
    -
    -    bool isSuccess = ((int32_t) (http_code / 100)) == 2
    -        && res != CURLE_ABORTED_BY_CALLBACK;
    -    bool body_empty = IsNullOrEmpty(content.data);
    -
    -    if (isSuccess && !body_empty) {
    +  if (client.submit() == CURLE_OK && client.getResponseCode() == 200) {
    --- End diff --
    
    Our curl abstraction is leaking here (referencing curl constants).


---

Reply via email to