Skip to content

Commit 84564ae

Browse files
committed
Merge pull request #2371 from wing328/csharp_user_agent
[C#] add httpUserAgent option, add configurable user-agent support to C#
2 parents c69abad + cdecb51 commit 84564ae

File tree

14 files changed

+124
-3
lines changed

14 files changed

+124
-3
lines changed

modules/swagger-codegen-cli/src/main/java/io/swagger/codegen/cmd/Generate.java

+7
Original file line numberDiff line numberDiff line change
@@ -117,6 +117,9 @@ public class Generate implements Runnable {
117117

118118
@Option(name = {"--release-version"}, title = "release version", description = CodegenConstants.RELEASE_VERSION_DESC)
119119
private String releaseVersion;
120+
121+
@Option(name = {"--http-user-agent"}, title = "http user agent", description = CodegenConstants.HTTP_USER_AGENT)
122+
private String httpUserAgent;
120123

121124
@Override
122125
public void run() {
@@ -210,6 +213,10 @@ public void run() {
210213
if (isNotEmpty(releaseVersion)) {
211214
configurator.setReleaseVersion(releaseVersion);
212215
}
216+
217+
if (isNotEmpty(httpUserAgent)) {
218+
configurator.setHttpUserAgent(httpUserAgent);
219+
}
213220

214221
applySystemPropertiesKvp(systemProperties, configurator);
215222
applyInstantiationTypesKvp(instantiationTypes, configurator);

modules/swagger-codegen/src/main/java/io/swagger/codegen/CodegenConfig.java

+4
Original file line numberDiff line numberDiff line change
@@ -184,4 +184,8 @@ public interface CodegenConfig {
184184

185185
String getReleaseVersion();
186186

187+
void setHttpUserAgent(String httpUserAgent);
188+
189+
String getHttpUserAgent();
190+
187191
}

modules/swagger-codegen/src/main/java/io/swagger/codegen/CodegenConstants.java

+3
Original file line numberDiff line numberDiff line change
@@ -103,4 +103,7 @@ public static enum MODEL_PROPERTY_NAMING_TYPE {camelCase, PascalCase, snake_case
103103
public static final String RELEASE_VERSION = "releaseVersion";
104104
public static final String RELEASE_VERSION_DESC= "Release version, e.g. 1.2.5, default to 0.1.0.";
105105

106+
public static final String HTTP_USER_AGENT = "httpUserAgent";
107+
public static final String HTTP_USER_AGENT_DESC = "HTTP user agent, e.g. codegen_csharp_api_client, default to 'Swagger-Codegen/{releaseVersion}}/{language}'";
108+
106109
}

modules/swagger-codegen/src/main/java/io/swagger/codegen/DefaultCodegen.java

+19
Original file line numberDiff line numberDiff line change
@@ -84,6 +84,7 @@ public class DefaultCodegen {
8484
protected Boolean sortParamsByRequiredFlag = true;
8585
protected Boolean ensureUniqueParams = true;
8686
protected String gitUserId, gitRepoId, releaseNote, releaseVersion;
87+
protected String httpUserAgent;
8788

8889
public List<CliOption> cliOptions() {
8990
return cliOptions;
@@ -2431,6 +2432,24 @@ public String getReleaseVersion() {
24312432
return releaseVersion;
24322433
}
24332434

2435+
/**
2436+
* Set HTTP user agent.
2437+
*
2438+
* @param httpUserAgent HTTP user agent
2439+
*/
2440+
public void setHttpUserAgent(String httpUserAgent) {
2441+
this.httpUserAgent = httpUserAgent;
2442+
}
2443+
2444+
/**
2445+
* HTTP user agent
2446+
*
2447+
* @return HTTP user agent
2448+
*/
2449+
public String getHttpUserAgent() {
2450+
return httpUserAgent;
2451+
}
2452+
24342453
@SuppressWarnings("static-method")
24352454
protected CliOption buildLibraryCliOption(Map<String, String> supportedLibraries) {
24362455
StringBuilder sb = new StringBuilder("library template (sub-template) to use:");

modules/swagger-codegen/src/main/java/io/swagger/codegen/config/CodegenConfigurator.java

+11
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,7 @@ public class CodegenConfigurator {
6464
private String gitRepoId="YOUR_GIT_REPO_ID";
6565
private String releaseNote="Minor update";
6666
private String releaseVersion="0.1.0";
67+
private String httpUserAgent;
6768

6869
private final Map<String, String> dynamicProperties = new HashMap<String, String>(); //the map that holds the JsonAnySetter/JsonAnyGetter values
6970

@@ -334,6 +335,15 @@ public CodegenConfigurator setReleaseVersion(String releaseVersion) {
334335
this.releaseVersion = releaseVersion;
335336
return this;
336337
}
338+
339+
public String getHttpUserAgent() {
340+
return httpUserAgent;
341+
}
342+
343+
public CodegenConfigurator setHttpUserAgent(String httpUserAgent) {
344+
this.httpUserAgent= httpUserAgent;
345+
return this;
346+
}
337347

338348
public ClientOptInput toClientOptInput() {
339349

@@ -366,6 +376,7 @@ public ClientOptInput toClientOptInput() {
366376
checkAndSetAdditionalProperty(gitRepoId, CodegenConstants.GIT_REPO_ID);
367377
checkAndSetAdditionalProperty(releaseVersion, CodegenConstants.RELEASE_VERSION);
368378
checkAndSetAdditionalProperty(releaseNote, CodegenConstants.RELEASE_NOTE);
379+
checkAndSetAdditionalProperty(httpUserAgent, CodegenConstants.HTTP_USER_AGENT);
369380

370381
handleDynamicProperties(config);
371382

modules/swagger-codegen/src/main/resources/csharp/ApiClient.mustache

+3
Original file line numberDiff line numberDiff line change
@@ -84,6 +84,9 @@ namespace {{packageName}}.Client
8484
String contentType)
8585
{
8686
var request = new RestRequest(path, method);
87+
88+
// add user agent header
89+
request.AddHeader("User-Agent", Configuration.HttpUserAgent);
8790
8891
// add path parameter, if any
8992
foreach(var param in pathParams)

modules/swagger-codegen/src/main/resources/csharp/Configuration.mustache

+9-1
Original file line numberDiff line numberDiff line change
@@ -34,14 +34,16 @@ namespace {{packageName}}.Client
3434
Dictionary<String, String> apiKeyPrefix = null,
3535
string tempFolderPath = null,
3636
string dateTimeFormat = null,
37-
int timeout = 100000
37+
int timeout = 100000,
38+
string httpUserAgent = "{{#httpUserAgent}}{{.}}{{/httpUserAgent}}{{^httpUserAgent}}Swagger-Codegen/{{packageVersion}}/csharp{{/httpUserAgent}}"
3839
)
3940
{
4041
setApiClientUsingDefault(apiClient);
4142
4243
Username = username;
4344
Password = password;
4445
AccessToken = accessToken;
46+
HttpUserAgent = httpUserAgent;
4547
4648
if (defaultHeader != null)
4749
DefaultHeader = defaultHeader;
@@ -146,6 +148,12 @@ namespace {{packageName}}.Client
146148
_defaultHeaderMap.Add(key, value);
147149
}
148150

151+
/// <summary>
152+
/// Gets or sets the HTTP user agent.
153+
/// </summary>
154+
/// <value>Http user agent.</value>
155+
public String HttpUserAgent { get; set; }
156+
149157
/// <summary>
150158
/// Gets or sets the username (HTTP basic authentication).
151159
/// </summary>

modules/swagger-codegen/src/main/resources/csharp/api.mustache

+12
Original file line numberDiff line numberDiff line change
@@ -82,6 +82,12 @@ namespace {{packageName}}.Api
8282
public {{classname}}(String basePath)
8383
{
8484
this.Configuration = new Configuration(new ApiClient(basePath));
85+
86+
// ensure API client has configuration ready
87+
if (Configuration.ApiClient.Configuration == null)
88+
{
89+
this.Configuration.ApiClient.Configuration = this.Configuration;
90+
}
8591
}
8692

8793
/// <summary>
@@ -96,6 +102,12 @@ namespace {{packageName}}.Api
96102
this.Configuration = Configuration.Default;
97103
else
98104
this.Configuration = configuration;
105+
106+
// ensure API client has configuration ready
107+
if (Configuration.ApiClient.Configuration == null)
108+
{
109+
this.Configuration.ApiClient.Configuration = this.Configuration;
110+
}
99111
}
100112

101113
/// <summary>

samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient/src/main/csharp/IO/Swagger/Api/PetApi.cs

+12
Original file line numberDiff line numberDiff line change
@@ -541,6 +541,12 @@ public class PetApi : IPetApi
541541
public PetApi(String basePath)
542542
{
543543
this.Configuration = new Configuration(new ApiClient(basePath));
544+
545+
// ensure API client has configuration ready
546+
if (Configuration.ApiClient.Configuration == null)
547+
{
548+
this.Configuration.ApiClient.Configuration = this.Configuration;
549+
}
544550
}
545551

546552
/// <summary>
@@ -555,6 +561,12 @@ public PetApi(Configuration configuration = null)
555561
this.Configuration = Configuration.Default;
556562
else
557563
this.Configuration = configuration;
564+
565+
// ensure API client has configuration ready
566+
if (Configuration.ApiClient.Configuration == null)
567+
{
568+
this.Configuration.ApiClient.Configuration = this.Configuration;
569+
}
558570
}
559571

560572
/// <summary>

samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient/src/main/csharp/IO/Swagger/Api/StoreApi.cs

+12
Original file line numberDiff line numberDiff line change
@@ -293,6 +293,12 @@ public class StoreApi : IStoreApi
293293
public StoreApi(String basePath)
294294
{
295295
this.Configuration = new Configuration(new ApiClient(basePath));
296+
297+
// ensure API client has configuration ready
298+
if (Configuration.ApiClient.Configuration == null)
299+
{
300+
this.Configuration.ApiClient.Configuration = this.Configuration;
301+
}
296302
}
297303

298304
/// <summary>
@@ -307,6 +313,12 @@ public StoreApi(Configuration configuration = null)
307313
this.Configuration = Configuration.Default;
308314
else
309315
this.Configuration = configuration;
316+
317+
// ensure API client has configuration ready
318+
if (Configuration.ApiClient.Configuration == null)
319+
{
320+
this.Configuration.ApiClient.Configuration = this.Configuration;
321+
}
310322
}
311323

312324
/// <summary>

samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient/src/main/csharp/IO/Swagger/Api/UserApi.cs

+12
Original file line numberDiff line numberDiff line change
@@ -393,6 +393,12 @@ public class UserApi : IUserApi
393393
public UserApi(String basePath)
394394
{
395395
this.Configuration = new Configuration(new ApiClient(basePath));
396+
397+
// ensure API client has configuration ready
398+
if (Configuration.ApiClient.Configuration == null)
399+
{
400+
this.Configuration.ApiClient.Configuration = this.Configuration;
401+
}
396402
}
397403

398404
/// <summary>
@@ -407,6 +413,12 @@ public UserApi(Configuration configuration = null)
407413
this.Configuration = Configuration.Default;
408414
else
409415
this.Configuration = configuration;
416+
417+
// ensure API client has configuration ready
418+
if (Configuration.ApiClient.Configuration == null)
419+
{
420+
this.Configuration.ApiClient.Configuration = this.Configuration;
421+
}
410422
}
411423

412424
/// <summary>

samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient/src/main/csharp/IO/Swagger/Client/ApiClient.cs

+3
Original file line numberDiff line numberDiff line change
@@ -84,6 +84,9 @@ private RestRequest PrepareRequest(
8484
String contentType)
8585
{
8686
var request = new RestRequest(path, method);
87+
88+
// add user agent header
89+
request.AddHeader("User-Agent", Configuration.HttpUserAgent);
8790

8891
// add path parameter, if any
8992
foreach(var param in pathParams)

samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient/src/main/csharp/IO/Swagger/Client/Configuration.cs

+9-1
Original file line numberDiff line numberDiff line change
@@ -34,14 +34,16 @@ public Configuration(ApiClient apiClient = null,
3434
Dictionary<String, String> apiKeyPrefix = null,
3535
string tempFolderPath = null,
3636
string dateTimeFormat = null,
37-
int timeout = 100000
37+
int timeout = 100000,
38+
string httpUserAgent = "Swagger-Codegen/1.0.0/csharp"
3839
)
3940
{
4041
setApiClientUsingDefault(apiClient);
4142

4243
Username = username;
4344
Password = password;
4445
AccessToken = accessToken;
46+
HttpUserAgent = httpUserAgent;
4547

4648
if (defaultHeader != null)
4749
DefaultHeader = defaultHeader;
@@ -146,6 +148,12 @@ public void AddDefaultHeader(string key, string value)
146148
_defaultHeaderMap.Add(key, value);
147149
}
148150

151+
/// <summary>
152+
/// Gets or sets the HTTP user agent.
153+
/// </summary>
154+
/// <value>Http user agent.</value>
155+
public String HttpUserAgent { get; set; }
156+
149157
/// <summary>
150158
/// Gets or sets the username (HTTP basic authentication).
151159
/// </summary>

samples/client/petstore/csharp/SwaggerClientTest/SwaggerClientTest.userprefs

+8-1
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,16 @@
22
<MonoDevelop.Ide.Workspace ActiveConfiguration="Debug" />
33
<MonoDevelop.Ide.Workbench ActiveDocument="TestPet.cs">
44
<Files>
5-
<File FileName="TestPet.cs" Line="189" Column="4" />
5+
<File FileName="TestPet.cs" Line="69" Column="32" />
66
<File FileName="TestOrder.cs" Line="1" Column="1" />
77
</Files>
8+
<Pads>
9+
<Pad Id="MonoDevelop.NUnit.TestPad">
10+
<State name="__root__">
11+
<Node name="SwaggerClientTest" expanded="True" />
12+
</State>
13+
</Pad>
14+
</Pads>
815
</MonoDevelop.Ide.Workbench>
916
<MonoDevelop.Ide.DebuggingService.Breakpoints>
1017
<BreakpointStore />

0 commit comments

Comments
 (0)