11package com .featureprobe .sdk .server ;
22
3+ import okhttp3 .Headers ;
34import org .slf4j .Logger ;
45
6+ import java .io .IOException ;
57import java .net .MalformedURLException ;
68import java .net .URL ;
79import java .time .Duration ;
@@ -11,6 +13,14 @@ final class FPContext {
1113
1214 private static final Logger logger = Loggers .MAIN ;
1315
16+ private static final String GET_SDK_KEY_HEADER = "Authorization" ;
17+
18+ private static final String USER_AGENT_HEADER = "user-agent" ;
19+
20+ private static final String DEFAULT_SDK_VERSION = "unknown" ;
21+
22+ private static final String SDK_FLAG_PREFIX = "Java/" ;
23+
1424 private static final String GET_REPOSITORY_DATA_API = "/api/server-sdk/toggles" ;
1525
1626 private static final String POST_EVENTS_DATA_API = "/api/events" ;
@@ -27,6 +37,8 @@ final class FPContext {
2737
2838 private final HttpConfiguration httpConfiguration ;
2939
40+ private final Headers headers ;
41+
3042 FPContext (String serverSdkKey , FPConfig config ) {
3143 try {
3244 if (Objects .isNull (config .synchronizerUrl )) {
@@ -46,6 +58,16 @@ final class FPContext {
4658 this .refreshInterval = config .refreshInterval ;
4759 this .location = config .location ;
4860 this .httpConfiguration = config .httpConfiguration ;
61+ String sdkVersion = DEFAULT_SDK_VERSION ;
62+ try {
63+ sdkVersion = Utils .readSdkVersion ();
64+ } catch (IOException e ) {
65+ logger .error ("read sdk version error" , e );
66+ }
67+ this .headers = config .httpConfiguration .headers .newBuilder ()
68+ .add (GET_SDK_KEY_HEADER , serverSdkKey )
69+ .add (USER_AGENT_HEADER , SDK_FLAG_PREFIX + sdkVersion )
70+ .build ();
4971 }
5072
5173 public URL getSynchronizerUrl () {
@@ -71,4 +93,8 @@ public String getLocation() {
7193 public HttpConfiguration getHttpConfiguration () {
7294 return httpConfiguration ;
7395 }
96+
97+ public Headers getHeaders () {
98+ return headers ;
99+ }
74100}
0 commit comments