MINIFICPP-1668 Remove request parameters from Azure primary uri
Closes #1201
Signed-off-by: Marton Szasz <szaszm@apache.org>
diff --git a/extensions/azure/storage/AzureBlobStorage.cpp b/extensions/azure/storage/AzureBlobStorage.cpp
index 9708bed..97fbc8c 100644
--- a/extensions/azure/storage/AzureBlobStorage.cpp
+++ b/extensions/azure/storage/AzureBlobStorage.cpp
@@ -48,7 +48,11 @@
auto response = blob_storage_client_->uploadBlob(params, buffer);
UploadBlobResult result;
- result.primary_uri = blob_storage_client_->getUrl(params);
+ auto upload_url = blob_storage_client_->getUrl(params);
+ if (auto query_string_pos = upload_url.find('?'); query_string_pos != std::string::npos) {
+ upload_url = upload_url.substr(0, query_string_pos);
+ }
+ result.primary_uri = upload_url;
if (response.ETag.HasValue()) {
result.etag = response.ETag.ToString();
}
diff --git a/libminifi/test/azure-tests/PutAzureBlobStorageTests.cpp b/libminifi/test/azure-tests/PutAzureBlobStorageTests.cpp
index bbdb7c9..816de5d 100644
--- a/libminifi/test/azure-tests/PutAzureBlobStorageTests.cpp
+++ b/libminifi/test/azure-tests/PutAzureBlobStorageTests.cpp
@@ -43,7 +43,7 @@
class MockBlobStorage : public minifi::azure::storage::BlobStorageClient {
public:
const std::string ETAG = "test-etag";
- const std::string PRIMARY_URI = "test-uri";
+ const std::string PRIMARY_URI = "http://test-uri/file";
const std::string TEST_TIMESTAMP = "Sun, 21 Oct 2018 12:16:24 GMT";
bool createContainerIfNotExists(const minifi::azure::storage::PutAzureBlobStorageParameters& params) override {
@@ -68,7 +68,7 @@
std::string getUrl(const minifi::azure::storage::PutAzureBlobStorageParameters& params) override {
params_ = params;
- return PRIMARY_URI;
+ return RETURNED_PRIMARY_URI;
}
minifi::azure::storage::PutAzureBlobStorageParameters getPassedParams() const {
@@ -88,6 +88,7 @@
}
private:
+ const std::string RETURNED_PRIMARY_URI = "http://test-uri/file?secret-sas";
minifi::azure::storage::PutAzureBlobStorageParameters params_;
bool container_created_ = false;
bool upload_fails_ = false;
@@ -372,7 +373,7 @@
test_controller.runSession(plan, true);
CHECK(LogTestController::getInstance().contains("key:azure.container value:" + CONTAINER_NAME));
CHECK(LogTestController::getInstance().contains("key:azure.blobname value:" + GET_FILE_NAME));
- CHECK(LogTestController::getInstance().contains("key:azure.primaryUri value:" + mock_blob_storage_ptr->PRIMARY_URI));
+ CHECK(LogTestController::getInstance().contains("key:azure.primaryUri value:" + mock_blob_storage_ptr->PRIMARY_URI + "\n"));
CHECK(LogTestController::getInstance().contains("key:azure.etag value:" + mock_blob_storage_ptr->ETAG));
CHECK(LogTestController::getInstance().contains("key:azure.length value:" + std::to_string(TEST_DATA.size())));
CHECK(LogTestController::getInstance().contains("key:azure.timestamp value:" + mock_blob_storage_ptr->TEST_TIMESTAMP));
@@ -393,7 +394,7 @@
test_controller.runSession(plan, true);
CHECK(LogTestController::getInstance().contains("key:azure.container value:" + CONTAINER_NAME));
CHECK(LogTestController::getInstance().contains("key:azure.blobname value:" + BLOB_NAME));
- CHECK(LogTestController::getInstance().contains("key:azure.primaryUri value:" + mock_blob_storage_ptr->PRIMARY_URI));
+ CHECK(LogTestController::getInstance().contains("key:azure.primaryUri value:" + mock_blob_storage_ptr->PRIMARY_URI + "\n"));
CHECK(LogTestController::getInstance().contains("key:azure.etag value:" + mock_blob_storage_ptr->ETAG));
CHECK(LogTestController::getInstance().contains("key:azure.length value:" + std::to_string(TEST_DATA.size())));
CHECK(LogTestController::getInstance().contains("key:azure.timestamp value:" + mock_blob_storage_ptr->TEST_TIMESTAMP));