Adding options for telemetry and transport policy (#889)

Fixes: https://github.com/Azure/azure-sdk-for-cpp/issues/819
This commit is contained in:
Victor Vazquez 2020-11-06 17:01:03 -08:00 committed by GitHub
parent c48bb033af
commit 742e385350
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
28 changed files with 153 additions and 155 deletions

View File

@ -8,6 +8,7 @@ list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake-modules")
option(WARNINGS_AS_ERRORS "Treat compiler warnings as errors" ON)
option(BUILD_TRANSPORT_CURL "Build an HTTP transport implementation with CURL" OFF)
option(BUILD_TRANSPORT_WINHTTP "Build an HTTP transport implementation with WIN HTTP" OFF)
option(BUILD_TRANSPORT_CUSTOM "Implementation for GetCustomHttpTransport method must be linked to the final application" OFF)
option(BUILD_TESTING "Build test cases" OFF)
option(BUILD_CODE_COVERAGE "Build gcov targets for HTML and XML reports. Requires debug build and BUILD_TESTING" OFF)
option(BUILD_DOCUMENTATION "Create HTML based API documentation (requires Doxygen)" OFF)

View File

@ -11,6 +11,8 @@
- Added `strings.hpp` with `Azure::Core::Strings::LocaleInvariantCaseInsensitiveEqual` and `Azure::Core::Strings::ToLower`.
- Added `OperationCanceledException`.
- Added `GetPort()` to `Url`.
- Added `TransportPolicyOptions`.
- Added `TelemetryPolicyOptions`.
### Other changes and Improvements

View File

@ -15,7 +15,7 @@
#include "azure/core/http/curl/curl_connection_pool.hpp"
#include "azure/core/http/curl/curl_session.hpp"
#include "azure/core/http/http.hpp"
#include "azure/core/http/policy.hpp"
#include "azure/core/http/transport.hpp"
namespace Azure { namespace Core { namespace Http {
/**

View File

@ -14,6 +14,8 @@
#include "azure/core/logging/logging.hpp"
#include "azure/core/uuid.hpp"
#include "azure/core/http/curl/curl.hpp"
#include <chrono>
#include <utility>
@ -95,13 +97,39 @@ namespace Azure { namespace Core { namespace Http {
std::unique_ptr<RawResponse> Send(Context const& ctx, Request& req);
};
/**
* @brief The options for the #TransportPolicy.
*
*/
struct TransportPolicyOptions
{
#ifdef BUILD_TRANSPORT_CUSTOM
/**
* @brief Set the #HttpTransport for the transport policy.
*
* @remark The implementation for GetCustomHttpTransport must be linked in the end-user
* application.
*
*/
std::shared_ptr<HttpTransport> Transport = ::GetCustomHttpTransport();
#else
/**
* @brief Set the #HttpTransport for the transport policy.
*
* @remark When no option is set, the default transport adapter is the curl transport adapter.
*
*/
std::shared_ptr<HttpTransport> Transport = std::make_shared<Azure::Core::Http::CurlTransport>();
#endif
};
/**
* @brief Applying this policy sends an HTTP request over the wire.
* @remark This policy must be the bottom policy in the stack of the HTTP policy stack.
*/
class TransportPolicy : public HttpPolicy {
private:
std::shared_ptr<HttpTransport> m_transport;
TransportPolicyOptions m_options;
public:
/**
@ -110,14 +138,14 @@ namespace Azure { namespace Core { namespace Http {
* @param transport A pointer to the #HttpTransport implementation to use when this policy gets
* applied (#Send).
*/
explicit TransportPolicy(std::shared_ptr<HttpTransport> transport)
: m_transport(std::move(transport))
explicit TransportPolicy(TransportPolicyOptions options = TransportPolicyOptions())
: m_options(std::move(options))
{
}
std::unique_ptr<HttpPolicy> Clone() const override
{
return std::make_unique<TransportPolicy>(m_transport);
return std::make_unique<TransportPolicy>(*this);
}
std::unique_ptr<RawResponse> Send(
@ -217,6 +245,22 @@ namespace Azure { namespace Core { namespace Http {
}
};
/**
* @brief The options for the #TelemetryPolicy
*
*/
struct TelemetryPolicyOptions
{
/**
* @brief The Application id is the last part of the user agent for telemetry.
*
* @remark This option allows an end-user to create an SDK client and report telemetry with a
* specific ID for it. The default is an empty string.
*
*/
std::string ApplicationId;
};
/**
* @brief HTTP telemetry policy.
*
@ -225,9 +269,7 @@ namespace Azure { namespace Core { namespace Http {
* @remark See https://azure.github.io/azure-sdk/general_azurecore.html#telemetry-policy.
*/
class TelemetryPolicy : public HttpPolicy {
std::string m_telemetryId;
static std::string const g_emptyApplicationId;
std::string const m_telemetryId;
static std::string BuildTelemetryId(
std::string const& componentName,
@ -236,29 +278,17 @@ namespace Azure { namespace Core { namespace Http {
public:
/**
* @brief Construct HTTP telemetry policy with component name and component version.
* @brief Construct HTTP telemetry policy.
*
* @param componentName Azure SDK component name (e.g. "storage.blobs")
* @param componentVersion Azure SDK component version (e.g. "11.0.0")
*/
explicit TelemetryPolicy(std::string const& componentName, std::string const& componentVersion)
: TelemetryPolicy(componentName, componentVersion, g_emptyApplicationId)
{
}
/**
* @brief Construct HTTP telemetry policy with component name, component version, and an
* applicatin ID.
*
* @param componentName Azure SDK component name (e.g. "storage.blobs")
* @param componentVersion Azure SDK component version (e.g. "11.0.0")
* @param applicationId Customer Application ID (e.g. "AzCopy")
* @param componentName Azure SDK component name (e.g. "storage.blobs").
* @param componentVersion Azure SDK component version (e.g. "11.0.0").
* @param options The optional parameters for the policy (e.g. "AzCopy")
*/
explicit TelemetryPolicy(
std::string const& componentName,
std::string const& componentVersion,
std::string const& applicationId)
: m_telemetryId(BuildTelemetryId(componentName, componentVersion, applicationId))
TelemetryPolicyOptions options = TelemetryPolicyOptions())
: m_telemetryId(BuildTelemetryId(componentName, componentVersion, options.ApplicationId))
{
}

View File

@ -3,6 +3,8 @@
#include "azure/core/http/curl/curl.hpp"
#include "azure/core/http/http.hpp"
#include "azure/core/http/policy.hpp"
#include "azure/core/http/transport.hpp"
#include "azure/core/internal/log.hpp"
#ifdef POSIX

View File

@ -111,8 +111,6 @@ std::string TrimString(std::string s)
using namespace Azure::Core::Http;
std::string const TelemetryPolicy::g_emptyApplicationId;
std::string TelemetryPolicy::BuildTelemetryId(
std::string const& componentName,
std::string const& componentVersion,

View File

@ -15,7 +15,7 @@ std::unique_ptr<RawResponse> TransportPolicy::Send(
* The transport policy is always the last policy.
* Call the transport and return
*/
auto response = m_transport->Send(ctx, request);
auto response = m_options.Transport->Send(ctx, request);
auto statusCode = static_cast<typename std::underlying_type<Http::HttpStatusCode>::type>(
response->GetStatusCode());

View File

@ -17,13 +17,10 @@ using namespace std;
int main()
{
// Create the Transport
std::shared_ptr<HttpTransport> transport = std::make_unique<CurlTransport>();
std::vector<std::unique_ptr<HttpPolicy>> policies;
// Add the transport policy
policies.push_back(std::make_unique<TransportPolicy>(std::move(transport)));
policies.push_back(std::make_unique<TransportPolicy>());
auto httpPipeline = Http::HttpPipeline(policies);

View File

@ -21,13 +21,10 @@ using namespace std;
int main()
{
// Create the Transport
std::shared_ptr<HttpTransport> transport = std::make_unique<CurlTransport>();
std::vector<std::unique_ptr<HttpPolicy>> policies;
// Add the transport policy
policies.push_back(std::make_unique<TransportPolicy>(std::move(transport)));
policies.push_back(std::make_unique<TransportPolicy>());
auto httpPipeline = Http::HttpPipeline(policies);

View File

@ -43,14 +43,13 @@ int main()
{
try
{
// Create the Transport
std::shared_ptr<HttpTransport> transport = std::make_unique<CurlTransport>();
std::vector<std::unique_ptr<HttpPolicy>> policies;
policies.push_back(std::make_unique<RequestIdPolicy>());
RetryOptions retryOptions;
policies.push_back(std::make_unique<RetryPolicy>(retryOptions));
// Add the transport policy
policies.push_back(std::make_unique<TransportPolicy>(std::move(transport)));
policies.push_back(std::make_unique<TransportPolicy>());
auto httpPipeline = Http::HttpPipeline(policies);
auto context = Azure::Core::GetApplicationContext();
@ -75,7 +74,8 @@ void doFileRequest(Context const& context, HttpPipeline& pipeline)
{
Azure::Core::Http::Url host("https://httpbin.org/put");
cout << "Creating a Put From File request to" << endl << "Host: " << host.GetAbsoluteUrl() << endl;
cout << "Creating a Put From File request to" << endl
<< "Host: " << host.GetAbsoluteUrl() << endl;
// Open a file that contains: {{"key":"value"}, {"key2":"value2"}, {"key3":"value3"}}
int fd = open("/home/vivazqu/workspace/a", O_RDONLY);

View File

@ -39,9 +39,6 @@ int main()
try
{
// Create the Transport
std::shared_ptr<HttpTransport> transport = std::make_unique<CurlTransport>();
std::vector<std::unique_ptr<HttpPolicy>> policies;
policies.push_back(std::make_unique<RequestIdPolicy>());
@ -49,7 +46,7 @@ int main()
policies.push_back(std::make_unique<RetryPolicy>(retryOptions));
// Add the transport policy
policies.push_back(std::make_unique<TransportPolicy>(std::move(transport)));
policies.push_back(std::make_unique<TransportPolicy>());
auto httpPipeline = Http::HttpPipeline(policies);

View File

@ -4,12 +4,14 @@
#include "gtest/gtest.h"
#include <azure/core/context.hpp>
#include <azure/core/http/curl/curl.hpp>
#include <azure/core/http/http.hpp>
#include <azure/core/http/pipeline.hpp>
#include <azure/core/http/policy.hpp>
#include <azure/core/http/transport.hpp>
#include <azure/core/response.hpp>
#include <azure/core/http/curl/curl.hpp>
#include <string>
#include <vector>
@ -25,7 +27,9 @@ namespace Azure { namespace Core { namespace Test {
curlOptions.Proxy = "136.228.165.138:8080";
auto transportAdapter = std::make_shared<Azure::Core::Http::CurlTransport>(curlOptions);
auto transportPolicy = std::make_unique<Azure::Core::Http::TransportPolicy>(transportAdapter);
Azure::Core::Http::TransportPolicyOptions options;
options.Transport = transportAdapter;
auto transportPolicy = std::make_unique<Azure::Core::Http::TransportPolicy>(options);
std::vector<std::unique_ptr<Azure::Core::Http::HttpPolicy>> policies;
policies.emplace_back(std::move(transportPolicy));
@ -52,7 +56,9 @@ namespace Azure { namespace Core { namespace Test {
curlOptions.SSLOptions.NoRevoke = true;
auto transportAdapter = std::make_shared<Azure::Core::Http::CurlTransport>(curlOptions);
auto transportPolicy = std::make_unique<Azure::Core::Http::TransportPolicy>(transportAdapter);
Azure::Core::Http::TransportPolicyOptions options;
options.Transport = transportAdapter;
auto transportPolicy = std::make_unique<Azure::Core::Http::TransportPolicy>(options);
std::vector<std::unique_ptr<Azure::Core::Http::HttpPolicy>> policies;
policies.emplace_back(std::move(transportPolicy));
@ -82,7 +88,9 @@ namespace Azure { namespace Core { namespace Test {
curlOptions.SSLOptions.AllowBeast = true;
auto transportAdapter = std::make_shared<Azure::Core::Http::CurlTransport>(curlOptions);
auto transportPolicy = std::make_unique<Azure::Core::Http::TransportPolicy>(transportAdapter);
Azure::Core::Http::TransportPolicyOptions options;
options.Transport = transportAdapter;
auto transportPolicy = std::make_unique<Azure::Core::Http::TransportPolicy>(options);
std::vector<std::unique_ptr<Azure::Core::Http::HttpPolicy>> policies;
policies.emplace_back(std::move(transportPolicy));
@ -198,7 +206,9 @@ namespace Azure { namespace Core { namespace Test {
curlOptions.CAInfo = "/";
auto transportAdapter = std::make_shared<Azure::Core::Http::CurlTransport>(curlOptions);
auto transportPolicy = std::make_unique<Azure::Core::Http::TransportPolicy>(transportAdapter);
Azure::Core::Http::TransportPolicyOptions options;
options.Transport = transportAdapter;
auto transportPolicy = std::make_unique<Azure::Core::Http::TransportPolicy>(options);
std::vector<std::unique_ptr<Azure::Core::Http::HttpPolicy>> policies;
policies.emplace_back(std::move(transportPolicy));
@ -226,7 +236,9 @@ namespace Azure { namespace Core { namespace Test {
TEST(CurlTransportOptions, httpsDefault)
{
auto transportAdapter = std::make_shared<Azure::Core::Http::CurlTransport>();
auto transportPolicy = std::make_unique<Azure::Core::Http::TransportPolicy>(transportAdapter);
Azure::Core::Http::TransportPolicyOptions options;
options.Transport = transportAdapter;
auto transportPolicy = std::make_unique<Azure::Core::Http::TransportPolicy>(options);
std::vector<std::unique_ptr<Azure::Core::Http::HttpPolicy>> policies;
policies.emplace_back(std::move(transportPolicy));
@ -257,7 +269,9 @@ namespace Azure { namespace Core { namespace Test {
curlOptions.HttpKeepAlive = false;
auto transportAdapter = std::make_shared<Azure::Core::Http::CurlTransport>(curlOptions);
auto transportPolicy = std::make_unique<Azure::Core::Http::TransportPolicy>(transportAdapter);
Azure::Core::Http::TransportPolicyOptions options;
options.Transport = transportAdapter;
auto transportPolicy = std::make_unique<Azure::Core::Http::TransportPolicy>(options);
{
// use inner scope to remove the pipeline and make sure we don't keep the connection in the

View File

@ -42,20 +42,23 @@ TEST(TelemetryPolicy, telemetryString)
HttpPipeline pipeline1(policy1);
std::string const expected2 = "AzCopy/10.0.4-Preview azsdk-cpp-storage-blob/11.0.0 (";
policy2.emplace_back(
std::make_unique<TelemetryPolicy>("storage-blob", "11.0.0", "AzCopy/10.0.4-Preview"));
Azure::Core::Http::TelemetryPolicyOptions options2;
options2.ApplicationId = "AzCopy/10.0.4-Preview";
policy2.emplace_back(std::make_unique<TelemetryPolicy>("storage-blob", "11.0.0", options2));
policy2.emplace_back(std::make_unique<NoOpPolicy>());
HttpPipeline pipeline2(policy2);
std::string const expected3 = "AzCopy / 10.0.4-Preview azsdk-cpp-storage-blob/11.0.0 (";
policy3.emplace_back(
std::make_unique<TelemetryPolicy>("storage-blob", "11.0.0", " AzCopy / 10.0.4-Preview "));
Azure::Core::Http::TelemetryPolicyOptions options3;
options3.ApplicationId = " AzCopy / 10.0.4-Preview ";
policy3.emplace_back(std::make_unique<TelemetryPolicy>("storage-blob", "11.0.0", options3));
policy3.emplace_back(std::make_unique<NoOpPolicy>());
HttpPipeline pipeline3(policy3);
std::string const expected4 = "01234567890123456789abcd azsdk-cpp-storage-blob/11.0.0 (";
policy4.emplace_back(
std::make_unique<TelemetryPolicy>("storage-blob", "11.0.0", " 01234567890123456789abcde "));
Azure::Core::Http::TelemetryPolicyOptions options4;
options4.ApplicationId = " 01234567890123456789abcde ";
policy4.emplace_back(std::make_unique<TelemetryPolicy>("storage-blob", "11.0.0", options4));
policy4.emplace_back(std::make_unique<NoOpPolicy>());
HttpPipeline pipeline4(policy4);

View File

@ -13,14 +13,12 @@ namespace Azure { namespace Core { namespace Test {
static std::vector<std::unique_ptr<Azure::Core::Http::HttpPolicy>> CreatePolicies()
{
std::vector<std::unique_ptr<Azure::Core::Http::HttpPolicy>> p;
std::shared_ptr<Azure::Core::Http::HttpTransport> transport
= std::make_shared<Azure::Core::Http::CurlTransport>();
Azure::Core::Http::RetryOptions opt;
opt.RetryDelay = std::chrono::milliseconds(10);
// Retry policy will help to prevent server-occasionally-errors
p.push_back(std::make_unique<Azure::Core::Http::RetryPolicy>(opt));
p.push_back(std::make_unique<Azure::Core::Http::TransportPolicy>(std::move(transport)));
p.push_back(std::make_unique<Azure::Core::Http::TransportPolicy>());
return p;
}

View File

@ -80,15 +80,13 @@ Azure::Core::AccessToken ClientSecretCredential::GetToken(
request.AddHeader("Content-Type", "application/x-www-form-urlencoded");
request.AddHeader("Content-Length", std::to_string(bodyString.size()));
std::shared_ptr<HttpTransport> transport = std::make_unique<CurlTransport>();
std::vector<std::unique_ptr<HttpPolicy>> policies;
policies.push_back(std::make_unique<RequestIdPolicy>());
RetryOptions retryOptions;
policies.push_back(std::make_unique<RetryPolicy>(retryOptions));
policies.push_back(std::make_unique<TransportPolicy>(std::move(transport)));
policies.push_back(std::make_unique<TransportPolicy>());
HttpPipeline httpPipeline(policies);

View File

@ -8,7 +8,7 @@
#include <memory>
#include "azure/core/credentials.hpp"
#include "azure/core/http/curl/curl.hpp"
#include "azure/core/http/policy.hpp"
#include "azure/storage/blobs/version.hpp"
#include "azure/storage/common/constants.hpp"
#include "azure/storage/common/shared_key_policy.hpp"
@ -105,8 +105,7 @@ namespace Azure { namespace Storage { namespace Blobs {
}
policies.emplace_back(std::make_unique<StoragePerRetryPolicy>());
policies.emplace_back(std::make_unique<SharedKeyPolicy>(credential));
policies.emplace_back(std::make_unique<Azure::Core::Http::TransportPolicy>(
std::make_shared<Azure::Core::Http::CurlTransport>()));
policies.emplace_back(std::make_unique<Azure::Core::Http::TransportPolicy>());
m_pipeline = std::make_shared<Azure::Core::Http::HttpPipeline>(policies);
policies.clear();
@ -147,8 +146,7 @@ namespace Azure { namespace Storage { namespace Blobs {
policies.emplace_back(std::make_unique<StoragePerRetryPolicy>());
policies.emplace_back(std::make_unique<Core::BearerTokenAuthenticationPolicy>(
credential, Details::c_StorageScope));
policies.emplace_back(std::make_unique<Azure::Core::Http::TransportPolicy>(
std::make_shared<Azure::Core::Http::CurlTransport>()));
policies.emplace_back(std::make_unique<Azure::Core::Http::TransportPolicy>());
m_pipeline = std::make_shared<Azure::Core::Http::HttpPipeline>(policies);
policies.clear();
@ -187,8 +185,7 @@ namespace Azure { namespace Storage { namespace Blobs {
policies.emplace_back(p->Clone());
}
policies.emplace_back(std::make_unique<StoragePerRetryPolicy>());
policies.emplace_back(std::make_unique<Azure::Core::Http::TransportPolicy>(
std::make_shared<Azure::Core::Http::CurlTransport>()));
policies.emplace_back(std::make_unique<Azure::Core::Http::TransportPolicy>());
m_pipeline = std::make_shared<Azure::Core::Http::HttpPipeline>(policies);
policies.clear();

View File

@ -4,7 +4,7 @@
#include "azure/storage/blobs/blob_client.hpp"
#include "azure/core/credentials.hpp"
#include "azure/core/http/curl/curl.hpp"
#include "azure/core/http/policy.hpp"
#include "azure/storage/blobs/append_blob_client.hpp"
#include "azure/storage/blobs/block_blob_client.hpp"
#include "azure/storage/blobs/page_blob_client.hpp"
@ -61,8 +61,7 @@ namespace Azure { namespace Storage { namespace Blobs {
}
policies.emplace_back(std::make_unique<StoragePerRetryPolicy>());
policies.emplace_back(std::make_unique<SharedKeyPolicy>(credential));
policies.emplace_back(std::make_unique<Azure::Core::Http::TransportPolicy>(
std::make_shared<Azure::Core::Http::CurlTransport>()));
policies.emplace_back(std::make_unique<Azure::Core::Http::TransportPolicy>());
m_pipeline = std::make_shared<Azure::Core::Http::HttpPipeline>(policies);
}
@ -88,8 +87,7 @@ namespace Azure { namespace Storage { namespace Blobs {
policies.emplace_back(std::make_unique<StoragePerRetryPolicy>());
policies.emplace_back(std::make_unique<Core::BearerTokenAuthenticationPolicy>(
credential, Details::c_StorageScope));
policies.emplace_back(std::make_unique<Azure::Core::Http::TransportPolicy>(
std::make_shared<Azure::Core::Http::CurlTransport>()));
policies.emplace_back(std::make_unique<Azure::Core::Http::TransportPolicy>());
m_pipeline = std::make_shared<Azure::Core::Http::HttpPipeline>(policies);
}
@ -111,8 +109,7 @@ namespace Azure { namespace Storage { namespace Blobs {
policies.emplace_back(p->Clone());
}
policies.emplace_back(std::make_unique<StoragePerRetryPolicy>());
policies.emplace_back(std::make_unique<Azure::Core::Http::TransportPolicy>(
std::make_shared<Azure::Core::Http::CurlTransport>()));
policies.emplace_back(std::make_unique<Azure::Core::Http::TransportPolicy>());
m_pipeline = std::make_shared<Azure::Core::Http::HttpPipeline>(policies);
}

View File

@ -4,7 +4,7 @@
#include "azure/storage/blobs/blob_container_client.hpp"
#include "azure/core/credentials.hpp"
#include "azure/core/http/curl/curl.hpp"
#include "azure/core/http/policy.hpp"
#include "azure/storage/blobs/append_blob_client.hpp"
#include "azure/storage/blobs/block_blob_client.hpp"
#include "azure/storage/blobs/page_blob_client.hpp"
@ -57,8 +57,7 @@ namespace Azure { namespace Storage { namespace Blobs {
}
policies.emplace_back(std::make_unique<StoragePerRetryPolicy>());
policies.emplace_back(std::make_unique<SharedKeyPolicy>(credential));
policies.emplace_back(std::make_unique<Azure::Core::Http::TransportPolicy>(
std::make_shared<Azure::Core::Http::CurlTransport>()));
policies.emplace_back(std::make_unique<Azure::Core::Http::TransportPolicy>());
m_pipeline = std::make_shared<Azure::Core::Http::HttpPipeline>(policies);
}
@ -84,8 +83,7 @@ namespace Azure { namespace Storage { namespace Blobs {
policies.emplace_back(std::make_unique<StoragePerRetryPolicy>());
policies.emplace_back(std::make_unique<Core::BearerTokenAuthenticationPolicy>(
credential, Details::c_StorageScope));
policies.emplace_back(std::make_unique<Azure::Core::Http::TransportPolicy>(
std::make_shared<Azure::Core::Http::CurlTransport>()));
policies.emplace_back(std::make_unique<Azure::Core::Http::TransportPolicy>());
m_pipeline = std::make_shared<Azure::Core::Http::HttpPipeline>(policies);
}
@ -109,8 +107,7 @@ namespace Azure { namespace Storage { namespace Blobs {
policies.emplace_back(p->Clone());
}
policies.emplace_back(std::make_unique<StoragePerRetryPolicy>());
policies.emplace_back(std::make_unique<Azure::Core::Http::TransportPolicy>(
std::make_shared<Azure::Core::Http::CurlTransport>()));
policies.emplace_back(std::make_unique<Azure::Core::Http::TransportPolicy>());
m_pipeline = std::make_shared<Azure::Core::Http::HttpPipeline>(policies);
}

View File

@ -4,7 +4,7 @@
#include "azure/storage/blobs/blob_service_client.hpp"
#include "azure/core/credentials.hpp"
#include "azure/core/http/curl/curl.hpp"
#include "azure/core/http/policy.hpp"
#include "azure/storage/blobs/version.hpp"
#include "azure/storage/common/constants.hpp"
#include "azure/storage/common/shared_key_policy.hpp"
@ -52,8 +52,7 @@ namespace Azure { namespace Storage { namespace Blobs {
}
policies.emplace_back(std::make_unique<StoragePerRetryPolicy>());
policies.emplace_back(std::make_unique<SharedKeyPolicy>(credential));
policies.emplace_back(std::make_unique<Azure::Core::Http::TransportPolicy>(
std::make_shared<Azure::Core::Http::CurlTransport>()));
policies.emplace_back(std::make_unique<Azure::Core::Http::TransportPolicy>());
m_pipeline = std::make_shared<Azure::Core::Http::HttpPipeline>(policies);
}
@ -79,8 +78,7 @@ namespace Azure { namespace Storage { namespace Blobs {
policies.emplace_back(std::make_unique<StoragePerRetryPolicy>());
policies.emplace_back(std::make_unique<Core::BearerTokenAuthenticationPolicy>(
credential, Details::c_StorageScope));
policies.emplace_back(std::make_unique<Azure::Core::Http::TransportPolicy>(
std::make_shared<Azure::Core::Http::CurlTransport>()));
policies.emplace_back(std::make_unique<Azure::Core::Http::TransportPolicy>());
m_pipeline = std::make_shared<Azure::Core::Http::HttpPipeline>(policies);
}
@ -103,8 +101,7 @@ namespace Azure { namespace Storage { namespace Blobs {
policies.emplace_back(p->Clone());
}
policies.emplace_back(std::make_unique<StoragePerRetryPolicy>());
policies.emplace_back(std::make_unique<Azure::Core::Http::TransportPolicy>(
std::make_shared<Azure::Core::Http::CurlTransport>()));
policies.emplace_back(std::make_unique<Azure::Core::Http::TransportPolicy>());
m_pipeline = std::make_shared<Azure::Core::Http::HttpPipeline>(policies);
}

View File

@ -4,7 +4,7 @@
#include "azure/storage/files/datalake/datalake_directory_client.hpp"
#include "azure/core/credentials.hpp"
#include "azure/core/http/curl/curl.hpp"
#include "azure/core/http/policy.hpp"
#include "azure/storage/common/constants.hpp"
#include "azure/storage/common/crypt.hpp"
#include "azure/storage/common/shared_key_policy.hpp"
@ -67,8 +67,7 @@ namespace Azure { namespace Storage { namespace Files { namespace DataLake {
policies.emplace_back(std::make_unique<StoragePerRetryPolicy>());
policies.emplace_back(std::make_unique<SharedKeyPolicy>(credential));
policies.emplace_back(std::make_unique<Azure::Core::Http::TransportPolicy>(
std::make_shared<Azure::Core::Http::CurlTransport>()));
policies.emplace_back(std::make_unique<Azure::Core::Http::TransportPolicy>());
m_pipeline = std::make_shared<Azure::Core::Http::HttpPipeline>(policies);
}
@ -97,8 +96,7 @@ namespace Azure { namespace Storage { namespace Files { namespace DataLake {
policies.emplace_back(std::make_unique<StoragePerRetryPolicy>());
policies.emplace_back(std::make_unique<Core::BearerTokenAuthenticationPolicy>(
credential, Azure::Storage::Details::c_StorageScope));
policies.emplace_back(std::make_unique<Azure::Core::Http::TransportPolicy>(
std::make_shared<Azure::Core::Http::CurlTransport>()));
policies.emplace_back(std::make_unique<Azure::Core::Http::TransportPolicy>());
m_pipeline = std::make_shared<Azure::Core::Http::HttpPipeline>(policies);
}
@ -124,8 +122,7 @@ namespace Azure { namespace Storage { namespace Files { namespace DataLake {
policies.emplace_back(p->Clone());
}
policies.emplace_back(std::make_unique<StoragePerRetryPolicy>());
policies.emplace_back(std::make_unique<Azure::Core::Http::TransportPolicy>(
std::make_shared<Azure::Core::Http::CurlTransport>()));
policies.emplace_back(std::make_unique<Azure::Core::Http::TransportPolicy>());
m_pipeline = std::make_shared<Azure::Core::Http::HttpPipeline>(policies);
}

View File

@ -4,7 +4,7 @@
#include "azure/storage/files/datalake/datalake_file_client.hpp"
#include "azure/core/credentials.hpp"
#include "azure/core/http/curl/curl.hpp"
#include "azure/core/http/policy.hpp"
#include "azure/storage/common/constants.hpp"
#include "azure/storage/common/crypt.hpp"
#include "azure/storage/common/shared_key_policy.hpp"
@ -145,8 +145,7 @@ namespace Azure { namespace Storage { namespace Files { namespace DataLake {
policies.emplace_back(std::make_unique<StoragePerRetryPolicy>());
policies.emplace_back(std::make_unique<SharedKeyPolicy>(credential));
policies.emplace_back(std::make_unique<Azure::Core::Http::TransportPolicy>(
std::make_shared<Azure::Core::Http::CurlTransport>()));
policies.emplace_back(std::make_unique<Azure::Core::Http::TransportPolicy>());
m_pipeline = std::make_shared<Azure::Core::Http::HttpPipeline>(policies);
}
@ -177,8 +176,7 @@ namespace Azure { namespace Storage { namespace Files { namespace DataLake {
policies.emplace_back(std::make_unique<StoragePerRetryPolicy>());
policies.emplace_back(std::make_unique<Core::BearerTokenAuthenticationPolicy>(
credential, Azure::Storage::Details::c_StorageScope));
policies.emplace_back(std::make_unique<Azure::Core::Http::TransportPolicy>(
std::make_shared<Azure::Core::Http::CurlTransport>()));
policies.emplace_back(std::make_unique<Azure::Core::Http::TransportPolicy>());
m_pipeline = std::make_shared<Azure::Core::Http::HttpPipeline>(policies);
}
@ -203,8 +201,7 @@ namespace Azure { namespace Storage { namespace Files { namespace DataLake {
}
policies.emplace_back(std::make_unique<StoragePerRetryPolicy>());
policies.emplace_back(std::make_unique<Azure::Core::Http::TransportPolicy>(
std::make_shared<Azure::Core::Http::CurlTransport>()));
policies.emplace_back(std::make_unique<Azure::Core::Http::TransportPolicy>());
m_pipeline = std::make_shared<Azure::Core::Http::HttpPipeline>(policies);
}

View File

@ -4,7 +4,7 @@
#include "azure/storage/files/datalake/datalake_file_system_client.hpp"
#include "azure/core/credentials.hpp"
#include "azure/core/http/curl/curl.hpp"
#include "azure/core/http/policy.hpp"
#include "azure/storage/blobs/protocol/blob_rest_client.hpp"
#include "azure/storage/common/constants.hpp"
#include "azure/storage/common/crypt.hpp"
@ -89,8 +89,7 @@ namespace Azure { namespace Storage { namespace Files { namespace DataLake {
policies.emplace_back(std::make_unique<StoragePerRetryPolicy>());
policies.emplace_back(std::make_unique<SharedKeyPolicy>(credential));
policies.emplace_back(std::make_unique<Azure::Core::Http::TransportPolicy>(
std::make_shared<Azure::Core::Http::CurlTransport>()));
policies.emplace_back(std::make_unique<Azure::Core::Http::TransportPolicy>());
m_pipeline = std::make_shared<Azure::Core::Http::HttpPipeline>(policies);
}
@ -124,8 +123,7 @@ namespace Azure { namespace Storage { namespace Files { namespace DataLake {
policies.emplace_back(std::make_unique<StoragePerRetryPolicy>());
policies.emplace_back(std::make_unique<Core::BearerTokenAuthenticationPolicy>(
credential, Azure::Storage::Details::c_StorageScope));
policies.emplace_back(std::make_unique<Azure::Core::Http::TransportPolicy>(
std::make_shared<Azure::Core::Http::CurlTransport>()));
policies.emplace_back(std::make_unique<Azure::Core::Http::TransportPolicy>());
m_pipeline = std::make_shared<Azure::Core::Http::HttpPipeline>(policies);
}
@ -155,8 +153,7 @@ namespace Azure { namespace Storage { namespace Files { namespace DataLake {
}
policies.emplace_back(std::make_unique<StoragePerRetryPolicy>());
policies.emplace_back(std::make_unique<Azure::Core::Http::TransportPolicy>(
std::make_shared<Azure::Core::Http::CurlTransport>()));
policies.emplace_back(std::make_unique<Azure::Core::Http::TransportPolicy>());
m_pipeline = std::make_shared<Azure::Core::Http::HttpPipeline>(policies);
}

View File

@ -4,7 +4,7 @@
#include "azure/storage/files/datalake/datalake_path_client.hpp"
#include "azure/core/credentials.hpp"
#include "azure/core/http/curl/curl.hpp"
#include "azure/core/http/policy.hpp"
#include "azure/storage/common/constants.hpp"
#include "azure/storage/common/crypt.hpp"
#include "azure/storage/common/shared_key_policy.hpp"
@ -129,8 +129,7 @@ namespace Azure { namespace Storage { namespace Files { namespace DataLake {
policies.emplace_back(std::make_unique<StoragePerRetryPolicy>());
policies.emplace_back(std::make_unique<SharedKeyPolicy>(credential));
policies.emplace_back(std::make_unique<Azure::Core::Http::TransportPolicy>(
std::make_shared<Azure::Core::Http::CurlTransport>()));
policies.emplace_back(std::make_unique<Azure::Core::Http::TransportPolicy>());
m_pipeline = std::make_shared<Azure::Core::Http::HttpPipeline>(policies);
}
@ -161,8 +160,7 @@ namespace Azure { namespace Storage { namespace Files { namespace DataLake {
policies.emplace_back(std::make_unique<StoragePerRetryPolicy>());
policies.emplace_back(std::make_unique<Core::BearerTokenAuthenticationPolicy>(
credential, Azure::Storage::Details::c_StorageScope));
policies.emplace_back(std::make_unique<Azure::Core::Http::TransportPolicy>(
std::make_shared<Azure::Core::Http::CurlTransport>()));
policies.emplace_back(std::make_unique<Azure::Core::Http::TransportPolicy>());
m_pipeline = std::make_shared<Azure::Core::Http::HttpPipeline>(policies);
}
@ -188,8 +186,7 @@ namespace Azure { namespace Storage { namespace Files { namespace DataLake {
policies.emplace_back(p->Clone());
}
policies.emplace_back(std::make_unique<Azure::Core::Http::TransportPolicy>(
std::make_shared<Azure::Core::Http::CurlTransport>()));
policies.emplace_back(std::make_unique<Azure::Core::Http::TransportPolicy>());
m_pipeline = std::make_shared<Azure::Core::Http::HttpPipeline>(policies);
}

View File

@ -4,7 +4,7 @@
#include "azure/storage/files/datalake/datalake_service_client.hpp"
#include "azure/core/credentials.hpp"
#include "azure/core/http/curl/curl.hpp"
#include "azure/core/http/policy.hpp"
#include "azure/storage/blobs/protocol/blob_rest_client.hpp"
#include "azure/storage/common/constants.hpp"
#include "azure/storage/common/shared_key_policy.hpp"
@ -96,8 +96,7 @@ namespace Azure { namespace Storage { namespace Files { namespace DataLake {
}
policies.emplace_back(std::make_unique<StoragePerRetryPolicy>());
policies.emplace_back(std::make_unique<SharedKeyPolicy>(credential));
policies.emplace_back(std::make_unique<Azure::Core::Http::TransportPolicy>(
std::make_shared<Azure::Core::Http::CurlTransport>()));
policies.emplace_back(std::make_unique<Azure::Core::Http::TransportPolicy>());
m_pipeline = std::make_shared<Azure::Core::Http::HttpPipeline>(policies);
}
@ -129,8 +128,7 @@ namespace Azure { namespace Storage { namespace Files { namespace DataLake {
policies.emplace_back(std::make_unique<StoragePerRetryPolicy>());
policies.emplace_back(std::make_unique<Core::BearerTokenAuthenticationPolicy>(
credential, Azure::Storage::Details::c_StorageScope));
policies.emplace_back(std::make_unique<Azure::Core::Http::TransportPolicy>(
std::make_shared<Azure::Core::Http::CurlTransport>()));
policies.emplace_back(std::make_unique<Azure::Core::Http::TransportPolicy>());
m_pipeline = std::make_shared<Azure::Core::Http::HttpPipeline>(policies);
}
@ -156,8 +154,7 @@ namespace Azure { namespace Storage { namespace Files { namespace DataLake {
policies.emplace_back(p->Clone());
}
policies.emplace_back(std::make_unique<StoragePerRetryPolicy>());
policies.emplace_back(std::make_unique<Azure::Core::Http::TransportPolicy>(
std::make_shared<Azure::Core::Http::CurlTransport>()));
policies.emplace_back(std::make_unique<Azure::Core::Http::TransportPolicy>());
m_pipeline = std::make_shared<Azure::Core::Http::HttpPipeline>(policies);
}

View File

@ -4,7 +4,7 @@
#include "azure/storage/files/shares/share_client.hpp"
#include "azure/core/credentials.hpp"
#include "azure/core/http/curl/curl.hpp"
#include "azure/core/http/policy.hpp"
#include "azure/storage/common/constants.hpp"
#include "azure/storage/common/crypt.hpp"
#include "azure/storage/common/shared_key_policy.hpp"
@ -58,8 +58,7 @@ namespace Azure { namespace Storage { namespace Files { namespace Shares {
}
policies.emplace_back(std::make_unique<StoragePerRetryPolicy>());
policies.emplace_back(std::make_unique<SharedKeyPolicy>(credential));
policies.emplace_back(std::make_unique<Azure::Core::Http::TransportPolicy>(
std::make_shared<Azure::Core::Http::CurlTransport>()));
policies.emplace_back(std::make_unique<Azure::Core::Http::TransportPolicy>());
m_pipeline = std::make_shared<Azure::Core::Http::HttpPipeline>(policies);
}
@ -85,8 +84,7 @@ namespace Azure { namespace Storage { namespace Files { namespace Shares {
policies.emplace_back(std::make_unique<StoragePerRetryPolicy>());
policies.emplace_back(std::make_unique<Core::BearerTokenAuthenticationPolicy>(
credential, Azure::Storage::Details::c_StorageScope));
policies.emplace_back(std::make_unique<Azure::Core::Http::TransportPolicy>(
std::make_shared<Azure::Core::Http::CurlTransport>()));
policies.emplace_back(std::make_unique<Azure::Core::Http::TransportPolicy>());
m_pipeline = std::make_shared<Azure::Core::Http::HttpPipeline>(policies);
}
@ -107,8 +105,7 @@ namespace Azure { namespace Storage { namespace Files { namespace Shares {
policies.emplace_back(p->Clone());
}
policies.emplace_back(std::make_unique<StoragePerRetryPolicy>());
policies.emplace_back(std::make_unique<Azure::Core::Http::TransportPolicy>(
std::make_shared<Azure::Core::Http::CurlTransport>()));
policies.emplace_back(std::make_unique<Azure::Core::Http::TransportPolicy>());
m_pipeline = std::make_shared<Azure::Core::Http::HttpPipeline>(policies);
}

View File

@ -4,7 +4,7 @@
#include "azure/storage/files/shares/share_directory_client.hpp"
#include "azure/core/credentials.hpp"
#include "azure/core/http/curl/curl.hpp"
#include "azure/core/http/policy.hpp"
#include "azure/storage/common/constants.hpp"
#include "azure/storage/common/crypt.hpp"
#include "azure/storage/common/shared_key_policy.hpp"
@ -59,8 +59,7 @@ namespace Azure { namespace Storage { namespace Files { namespace Shares {
}
policies.emplace_back(std::make_unique<StoragePerRetryPolicy>());
policies.emplace_back(std::make_unique<SharedKeyPolicy>(credential));
policies.emplace_back(std::make_unique<Azure::Core::Http::TransportPolicy>(
std::make_shared<Azure::Core::Http::CurlTransport>()));
policies.emplace_back(std::make_unique<Azure::Core::Http::TransportPolicy>());
m_pipeline = std::make_shared<Azure::Core::Http::HttpPipeline>(policies);
}
@ -86,8 +85,7 @@ namespace Azure { namespace Storage { namespace Files { namespace Shares {
policies.emplace_back(std::make_unique<StoragePerRetryPolicy>());
policies.emplace_back(std::make_unique<Core::BearerTokenAuthenticationPolicy>(
credential, Azure::Storage::Details::c_StorageScope));
policies.emplace_back(std::make_unique<Azure::Core::Http::TransportPolicy>(
std::make_shared<Azure::Core::Http::CurlTransport>()));
policies.emplace_back(std::make_unique<Azure::Core::Http::TransportPolicy>());
m_pipeline = std::make_shared<Azure::Core::Http::HttpPipeline>(policies);
}
@ -110,8 +108,7 @@ namespace Azure { namespace Storage { namespace Files { namespace Shares {
policies.emplace_back(p->Clone());
}
policies.emplace_back(std::make_unique<StoragePerRetryPolicy>());
policies.emplace_back(std::make_unique<Azure::Core::Http::TransportPolicy>(
std::make_shared<Azure::Core::Http::CurlTransport>()));
policies.emplace_back(std::make_unique<Azure::Core::Http::TransportPolicy>());
m_pipeline = std::make_shared<Azure::Core::Http::HttpPipeline>(policies);
}

View File

@ -4,7 +4,7 @@
#include "azure/storage/files/shares/share_file_client.hpp"
#include "azure/core/credentials.hpp"
#include "azure/core/http/curl/curl.hpp"
#include "azure/core/http/policy.hpp"
#include "azure/storage/common/concurrent_transfer.hpp"
#include "azure/storage/common/constants.hpp"
#include "azure/storage/common/crypt.hpp"
@ -62,8 +62,7 @@ namespace Azure { namespace Storage { namespace Files { namespace Shares {
}
policies.emplace_back(std::make_unique<StoragePerRetryPolicy>());
policies.emplace_back(std::make_unique<SharedKeyPolicy>(credential));
policies.emplace_back(std::make_unique<Azure::Core::Http::TransportPolicy>(
std::make_shared<Azure::Core::Http::CurlTransport>()));
policies.emplace_back(std::make_unique<Azure::Core::Http::TransportPolicy>());
m_pipeline = std::make_shared<Azure::Core::Http::HttpPipeline>(policies);
}
@ -89,8 +88,7 @@ namespace Azure { namespace Storage { namespace Files { namespace Shares {
policies.emplace_back(std::make_unique<StoragePerRetryPolicy>());
policies.emplace_back(std::make_unique<Core::BearerTokenAuthenticationPolicy>(
credential, Azure::Storage::Details::c_StorageScope));
policies.emplace_back(std::make_unique<Azure::Core::Http::TransportPolicy>(
std::make_shared<Azure::Core::Http::CurlTransport>()));
policies.emplace_back(std::make_unique<Azure::Core::Http::TransportPolicy>());
m_pipeline = std::make_shared<Azure::Core::Http::HttpPipeline>(policies);
}
@ -111,8 +109,7 @@ namespace Azure { namespace Storage { namespace Files { namespace Shares {
policies.emplace_back(p->Clone());
}
policies.emplace_back(std::make_unique<StoragePerRetryPolicy>());
policies.emplace_back(std::make_unique<Azure::Core::Http::TransportPolicy>(
std::make_shared<Azure::Core::Http::CurlTransport>()));
policies.emplace_back(std::make_unique<Azure::Core::Http::TransportPolicy>());
m_pipeline = std::make_shared<Azure::Core::Http::HttpPipeline>(policies);
}

View File

@ -4,7 +4,7 @@
#include "azure/storage/files/shares/share_service_client.hpp"
#include "azure/core/credentials.hpp"
#include "azure/core/http/curl/curl.hpp"
#include "azure/core/http/policy.hpp"
#include "azure/storage/common/constants.hpp"
#include "azure/storage/common/shared_key_policy.hpp"
#include "azure/storage/common/storage_common.hpp"
@ -54,8 +54,7 @@ namespace Azure { namespace Storage { namespace Files { namespace Shares {
}
policies.emplace_back(std::make_unique<StoragePerRetryPolicy>());
policies.emplace_back(std::make_unique<SharedKeyPolicy>(credential));
policies.emplace_back(std::make_unique<Azure::Core::Http::TransportPolicy>(
std::make_shared<Azure::Core::Http::CurlTransport>()));
policies.emplace_back(std::make_unique<Azure::Core::Http::TransportPolicy>());
m_pipeline = std::make_shared<Azure::Core::Http::HttpPipeline>(policies);
}
@ -81,8 +80,7 @@ namespace Azure { namespace Storage { namespace Files { namespace Shares {
policies.emplace_back(std::make_unique<StoragePerRetryPolicy>());
policies.emplace_back(std::make_unique<Core::BearerTokenAuthenticationPolicy>(
credential, Azure::Storage::Details::c_StorageScope));
policies.emplace_back(std::make_unique<Azure::Core::Http::TransportPolicy>(
std::make_shared<Azure::Core::Http::CurlTransport>()));
policies.emplace_back(std::make_unique<Azure::Core::Http::TransportPolicy>());
m_pipeline = std::make_shared<Azure::Core::Http::HttpPipeline>(policies);
}
@ -103,8 +101,7 @@ namespace Azure { namespace Storage { namespace Files { namespace Shares {
policies.emplace_back(p->Clone());
}
policies.emplace_back(std::make_unique<StoragePerRetryPolicy>());
policies.emplace_back(std::make_unique<Azure::Core::Http::TransportPolicy>(
std::make_shared<Azure::Core::Http::CurlTransport>()));
policies.emplace_back(std::make_unique<Azure::Core::Http::TransportPolicy>());
m_pipeline = std::make_shared<Azure::Core::Http::HttpPipeline>(policies);
}