Skip to content

Commit 76647b1

Browse files
authored
fix: include application tags in streaming/polling requests (#96)
1 parent e6d8314 commit 76647b1

File tree

6 files changed

+31
-2
lines changed

6 files changed

+31
-2
lines changed

apps/sdk-contract-tests/include/definitions.hpp

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -80,6 +80,14 @@ NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT(ConfigClientSideParams,
8080
evaluationReasons,
8181
useReport);
8282

83+
struct ConfigTags {
84+
std::optional<std::string> applicationId;
85+
std::optional<std::string> applicationVersion;
86+
};
87+
NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT(ConfigTags,
88+
applicationId,
89+
applicationVersion);
90+
8391
struct ConfigParams {
8492
std::string credential;
8593
std::optional<uint32_t> startWaitTimeMs;
@@ -89,6 +97,7 @@ struct ConfigParams {
8997
std::optional<ConfigEventParams> events;
9098
std::optional<ConfigServiceEndpointsParams> serviceEndpoints;
9199
std::optional<ConfigClientSideParams> clientSide;
100+
std::optional<ConfigTags> tags;
92101
};
93102
NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT(ConfigParams,
94103
credential,
@@ -98,7 +107,8 @@ NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT(ConfigParams,
98107
polling,
99108
events,
100109
serviceEndpoints,
101-
clientSide);
110+
clientSide,
111+
tags);
102112

103113
struct ContextSingleParams {
104114
std::optional<std::string> kind;

apps/sdk-contract-tests/src/entity_manager.cpp

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -114,6 +114,15 @@ std::optional<std::string> EntityManager::create(ConfigParams const& in) {
114114
datasource.UseReport(*in.clientSide->useReport);
115115
}
116116

117+
if (in.tags) {
118+
if (in.tags->applicationId) {
119+
config_builder.AppInfo().Identifier(*in.tags->applicationId);
120+
}
121+
if (in.tags->applicationVersion) {
122+
config_builder.AppInfo().Version(*in.tags->applicationVersion);
123+
}
124+
}
125+
117126
auto config = config_builder.Build();
118127
if (!config) {
119128
LD_LOG(logger_, LogLevel::kWarn)

apps/sdk-contract-tests/test-suppressions.txt

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
events/summary events/basic counter behavior
22
events/summary events/reset after each flush
3-
tags/disallowed characters
43

54
# The Client doesn't need to know how to deserialize users.
65
context type/convert/old user to context/{"key": ""}

libs/client-sdk/src/data_sources/polling_data_source.cpp

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,10 @@ static network::HttpRequest MakeRequest(Config const& config,
5757

5858
builder.Header("authorization", config.SdkKey());
5959

60+
if (auto app_tag = config.ApplicationTag()) {
61+
builder.Header("x-launchdarkly-tags", *app_tag);
62+
}
63+
6064
// If no URL is set, then we will fail the request.
6165
return {url.value_or(""), method, builder.Build(), body};
6266
}

libs/client-sdk/src/data_sources/streaming_data_source.cpp

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@ StreamingDataSource::StreamingDataSource(
3333
context_(std::move(context)),
3434
http_config_(config.HttpProperties()),
3535
data_source_config_(config.DataSourceConfig()),
36+
app_tags_(config.ApplicationTag()),
3637
sdk_key_(config.SdkKey()),
3738
streaming_endpoint_(config.ServiceEndpoints().StreamingBaseUrl()) {}
3839

@@ -108,6 +109,10 @@ void StreamingDataSource::Start() {
108109
}
109110
client_builder.header("user-agent", http_config_.UserAgent());
110111

112+
if (app_tags_) {
113+
client_builder.header("x-launchdarkly-tags", *app_tags_);
114+
}
115+
111116
// TODO: Handle proxy support.
112117

113118
auto weak_self = weak_from_this();

libs/client-sdk/src/data_sources/streaming_data_source.hpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,8 @@ class StreamingDataSource final
4848

4949
config::shared::built::HttpProperties http_config_;
5050

51+
std::optional<std::string> app_tags_;
52+
5153
std::string sdk_key_;
5254

5355
Logger const& logger_;

0 commit comments

Comments
 (0)