Skip to content

Commit f807e34

Browse files
committed
refactor csharp (no compile error)
1 parent 095771d commit f807e34

File tree

6 files changed

+369
-260
lines changed

6 files changed

+369
-260
lines changed

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

Lines changed: 19 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -10,12 +10,12 @@ namespace {{package}} {
1010
{{#operations}}
1111
public class {{classname}} {
1212
string basePath;
13-
protected RestClient restClient;
13+
public ApiInvoker apiClient {get; set;}
1414

1515
public {{classname}}(String basePath = "{{basePath}}")
1616
{
1717
this.basePath = basePath;
18-
this.restClient = new RestClient(basePath);
18+
this.apiClient = new ApiInvoker(basePath);
1919
}
2020

2121
/// <summary>
@@ -45,37 +45,38 @@ namespace {{package}} {
4545
/// <returns>{{#returnType}}{{{returnType}}}{{/returnType}}</returns>
4646
public {{#returnType}}{{{returnType}}}{{/returnType}}{{^returnType}}void{{/returnType}} {{nickname}} ({{#allParams}}{{{dataType}}} {{paramName}}{{#hasMore}}, {{/hasMore}}{{/allParams}}) {
4747
48-
var _request = new RestRequest("{{path}}", Method.{{httpMethod}});
49-
5048
{{#allParams}}{{#required}}
5149
// verify the required parameter '{{paramName}}' is set
5250
if ({{paramName}} == null) throw new ApiException(400, "Missing required parameter '{{paramName}}' when calling {{nickname}}");
5351
{{/required}}{{/allParams}}
5452

55-
// add default header, if any
56-
foreach(KeyValuePair<string, string> defaultHeader in ApiInvoker.GetDefaultHeader())
57-
{
58-
_request.AddHeader(defaultHeader.Key, defaultHeader.Value);
59-
}
60-
61-
_request.AddUrlSegment("format", "json"); // set format to json by default
62-
{{#pathParams}}_request.AddUrlSegment("{{baseName}}", ApiInvoker.ParameterToString({{{paramName}}})); // path (url segment) parameter
53+
var path = "{{path}}";
54+
path = path.Replace("{format}", "json");
55+
{{#pathParams}}path = path.Replace("{" + "{{baseName}}" + "}", apiClient.ParameterToString({{{paramName}}}));
6356
{{/pathParams}}
64-
{{#queryParams}} if ({{paramName}} != null) _request.AddParameter("{{baseName}}", ApiInvoker.ParameterToString({{paramName}})); // query parameter
57+
58+
var queryParams = new Dictionary<String, String>();
59+
var headerParams = new Dictionary<String, String>();
60+
var formParams = new Dictionary<String, String>();
61+
var fileParams = new Dictionary<String, String>();
62+
String postBody = null;
63+
64+
{{#queryParams}} if ({{paramName}} != null) queryParams.Add("{{baseName}}", apiClient.ParameterToString({{paramName}})); // query parameter
6565
{{/queryParams}}
66-
{{#headerParams}} if ({{paramName}} != null) _request.AddHeader("{{baseName}}", ApiInvoker.ParameterToString({{paramName}})); // header parameter
66+
{{#headerParams}} if ({{paramName}} != null) headerParams.Add("{{baseName}}", apiClient.ParameterToString({{paramName}})); // header parameter
6767
{{/headerParams}}
68-
{{#formParams}}if ({{paramName}} != null) {{#isFile}}_request.AddFile("{{baseName}}", {{paramName}});{{/isFile}}{{^isFile}}_request.AddParameter("{{baseName}}", ApiInvoker.ParameterToString({{paramName}})); // form parameter{{/isFile}}
68+
{{#formParams}}if ({{paramName}} != null) {{#isFile}}fileParams.Add("{{baseName}}", {{paramName}});{{/isFile}}{{^isFile}}formParams.Add("{{baseName}}", apiClient.ParameterToString({{paramName}})); // form parameter{{/isFile}}
6969
{{/formParams}}
70-
{{#bodyParam}}_request.AddParameter("application/json", ApiInvoker.Serialize({{paramName}}), ParameterType.RequestBody); // http body (model) parameter
70+
{{#bodyParam}}postBody = apiClient.Serialize({{paramName}}); // http body (model) parameter
7171
{{/bodyParam}}
7272

7373
// make the HTTP request
74-
IRestResponse response = restClient.Execute(_request);
74+
IRestResponse response = (IRestResponse) apiClient.CallApi("{{path}}", Method.{{httpMethod}}, queryParams, postBody, headerParams, formParams, fileParams);
75+
7576
if (((int)response.StatusCode) >= 400) {
7677
throw new ApiException ((int)response.StatusCode, "Error calling {{nickname}}: " + response.Content);
7778
}
78-
{{#returnType}}return ({{{returnType}}}) ApiInvoker.Deserialize(response.Content, typeof({{{returnType}}}));{{/returnType}}{{^returnType}}
79+
{{#returnType}}return ({{{returnType}}}) apiClient.Deserialize(response.Content, typeof({{{returnType}}}));{{/returnType}}{{^returnType}}
7980
return;{{/returnType}}
8081
}
8182
{{/operation}}

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

Lines changed: 51 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -5,26 +5,70 @@ using System.Linq;
55
using System.Net;
66
using System.Text;
77
using Newtonsoft.Json;
8+
using RestSharp;
89

910
namespace {{invokerPackage}} {
1011
public class ApiInvoker {
11-
private static Dictionary<String, String> defaultHeaderMap = new Dictionary<String, String>();
12+
public ApiInvoker() {
13+
this.basePath = "{{basePath}}";
14+
}
15+
16+
public ApiInvoker(String basePath) {
17+
this.basePath = basePath;
18+
}
19+
20+
public string basePath { get; set; }
21+
public RestClient restClient { get; set; }
22+
private Dictionary<String, String> defaultHeaderMap = new Dictionary<String, String>();
23+
24+
public Object CallApi(String Path, RestSharp.Method Method, Dictionary<String, String> QueryParams, String PostBody,
25+
Dictionary<String, String> HeaderParams, Dictionary<String, String> FormParams, Dictionary<String, String> FileParams) {
26+
27+
var request = new RestRequest(Path, Method);
28+
29+
// add default header, if any
30+
foreach(KeyValuePair<string, string> defaultHeader in this.defaultHeaderMap)
31+
request.AddHeader(defaultHeader.Key, defaultHeader.Value);
32+
33+
// add header parameter, if any
34+
foreach(KeyValuePair<string, string> param in HeaderParams)
35+
request.AddHeader(param.Key, param.Value);
36+
37+
// add query parameter, if any
38+
foreach(KeyValuePair<string, string> param in QueryParams)
39+
request.AddUrlSegment(param.Key, param.Value);
40+
41+
// add form parameter, if any
42+
foreach(KeyValuePair<string, string> param in FormParams)
43+
request.AddParameter(param.Key, param.Value);
44+
45+
// add file parameter, if any
46+
foreach(KeyValuePair<string, string> param in FormParams)
47+
request.AddFile(param.Key, param.Value);
48+
49+
if (PostBody == null) {
50+
request.AddParameter("application/json", PostBody, ParameterType.RequestBody); // http body (model) parameter
51+
}
52+
53+
return (Object)restClient.Execute(request);
54+
55+
}
1256

1357
/// <summary>
1458
/// Add default header
1559
/// </summary>
1660
/// <param name="key"> Header field name
1761
/// <param name="value"> Header field value
1862
/// <returns></returns>
19-
public static void AddDefaultHeader(string key, string value) {
63+
public void AddDefaultHeader(string key, string value) {
2064
defaultHeaderMap.Add(key, value);
2165
}
2266

2367
/// <summary>
2468
/// Get default header
2569
/// </summary>
2670
/// <returns>Dictionary of default header</returns>
27-
public static Dictionary<String, String> GetDefaultHeader() {
71+
public Dictionary<String, String> GetDefaultHeader() {
2872
return defaultHeaderMap;
2973
}
3074

@@ -33,7 +77,7 @@ namespace {{invokerPackage}} {
3377
/// </summary>
3478
/// <param name="str"> String to be escaped
3579
/// <returns>Escaped string</returns>
36-
public static string EscapeString(string str) {
80+
public string EscapeString(string str) {
3781
return str;
3882
}
3983

@@ -42,7 +86,7 @@ namespace {{invokerPackage}} {
4286
/// </summary>
4387
/// <param name="obj"> The parameter (header, path, query, form)
4488
/// <returns>Formatted string</returns>
45-
public static string ParameterToString(object obj)
89+
public string ParameterToString(object obj)
4690
{
4791
return (obj is DateTime) ? ((DateTime)obj).ToString ("u") : Convert.ToString (obj);
4892
}
@@ -53,7 +97,7 @@ namespace {{invokerPackage}} {
5397
/// <param name="json"> JSON string
5498
/// <param name="type"> Object type
5599
/// <returns>Object representation of the JSON string</returns>
56-
public static object Deserialize(string content, Type type) {
100+
public object Deserialize(string content, Type type) {
57101
if (type.GetType() == typeof(Object))
58102
return (Object)content;
59103
@@ -71,7 +115,7 @@ namespace {{invokerPackage}} {
71115
/// </summary>
72116
/// <param name="obj"> Object
73117
/// <returns>JSON string</returns>
74-
public static string Serialize(object obj) {
118+
public string Serialize(object obj) {
75119
try
76120
{
77121
return obj != null ? JsonConvert.SerializeObject(obj) : null;

0 commit comments

Comments
 (0)