using System;
using System.Collections.Generic;
using RestSharp;
using {{invokerPackage}};
using {{modelPackage}};
{{#imports}}
{{/imports}}
namespace {{package}} {
{{#operations}}
public class {{classname}} {
string basePath;
protected RestClient restClient;
public {{classname}}(String basePath = "{{basePath}}")
{
this.basePath = basePath;
this.restClient = new RestClient(basePath);
}
///
/// Sets the endpoint base url for the services being accessed
///
/// Base URL
///
public void SetBasePath(string basePath) {
this.basePath = basePath;
}
///
/// Gets the endpoint base url for the services being accessed
/// Base URL
///
public String GetBasePath() {
return this.basePath;
}
{{#operation}}
///
/// {{summary}} {{notes}}
///
{{#allParams}} /// {{description}}
{{/allParams}} /// {{#returnType}}{{{returnType}}}{{/returnType}}
public {{#returnType}}{{{returnType}}}{{/returnType}}{{^returnType}}void{{/returnType}} {{nickname}} ({{#allParams}}{{{dataType}}} {{paramName}}{{#hasMore}}, {{/hasMore}}{{/allParams}}) {
var _request = new RestRequest("{{path}}", Method.{{httpMethod}});
{{#requiredParams}}
// verify required param {{paramName}} is set
if ({{paramName}} == null) throw new ApiException(400, "missing required params {{paramName}}");
{{/requiredParams}}
_request.AddUrlSegment("format", "json"); // set format to json by default
{{#pathParams}}_request.AddUrlSegment("{{baseName}}", ApiInvoker.ParameterToString({{{paramName}}})); // path (url segment) parameter
{{/pathParams}}
{{#queryParams}} if ({{paramName}} != null) _request.AddParameter("{{baseName}}", ApiInvoker.ParameterToString({{paramName}})); // query parameter
{{/queryParams}}
{{#headerParams}} if ({{paramName}} != null) _request.AddHeader("{{baseName}}", ApiInvoker.ParameterToString({{paramName}})); // header parameter
{{/headerParams}}
{{#formParams}}if ({{paramName}} != null) {{#isFile}}_request.AddFile("{{baseName}}", {{paramName}});{{/isFile}}{{^isFile}}_request.AddParameter("{{baseName}}", ApiInvoker.ParameterToString({{paramName}}));{{/isFile}} // form parameter
{{/formParams}}
{{#bodyParam}}
_request.AddParameter("application/json", ApiInvoker.Serialize({{paramName}}), ParameterType.RequestBody); // HTTP request body (model)
{{/bodyParam}}
try {
{{#returnType}}IRestResponse response = restClient.Execute(_request);
return ({{{returnType}}}) ApiInvoker.Deserialize(response.Content, typeof({{{returnType}}}));
//return ((object)response) as {{{returnType}}};{{/returnType}}
{{^returnType}}restClient.Execute(_request);
return;{{/returnType}}
} catch (Exception ex) {
if(ex != null) {
return {{#returnType}}null{{/returnType}};
}
else {
throw ex;
}
}
}
{{/operation}}
}
{{/operations}}
}