updated to 1.2 spec support

This commit is contained in:
Tony Tam
2013-08-17 10:10:37 -07:00
parent daeb964bfc
commit 4a50bb3183
12 changed files with 286 additions and 123 deletions

View File

@@ -1,2 +1,2 @@
SET CSCPATH=C:\windows\microsoft.net\Framework\v4.0.30319
%CSCPATH%\csc /reference:bin/Newtonsoft.Json.dll /target:library /out:bin/Com.Wordnik.Petstore.dll /recurse:src\*.cs
SET CSCPATH=%SYSTEMROOT%\Microsoft.NET\Framework\v4.0.30319
%CSCPATH%\csc /reference:bin/Newtonsoft.Json.dll /target:library /out:bin/Com.Wordnik.Petstore.dll /recurse:src\*.cs /doc:bin/Com.Wordnik.Petstore.xml

View File

@@ -11,26 +11,34 @@
return apiInvoker;
}
// Sets the endpoint base url for the services being accessed
public void setBasePath(string basePath) {
this.basePath = basePath;
}
// Gets the endpoint base url for the services being accessed
public String getBasePath() {
return basePath;
}
public Pet getPetById (string Petid) {
/// <summary>
/// Find pet by ID Returns a pet based on ID
/// </summary>
/// <param name="petId">ID of pet that needs to be fetched</param>
/// <returns></returns>
public Pet getPetById (string petId) {
// create path and map variables
var path = "/pet.{format}/{petId}".Replace("{format}","json").Replace("{" + "Petid" + "}", apiInvoker.escapeString(Petid.ToString()));
var path = "/pet/{petId}".Replace("{format}","json").Replace("{" + "petId" + "}", apiInvoker.escapeString(petId.ToString()));
// query params
var queryParams = new Dictionary<String, String>();
var headerParams = new Dictionary<String, String>();
// verify required params are set
if (Petid == null ) {
if (petId == null ) {
throw new ApiException(400, "missing required params");
}
string paramStr = null;
try {
var response = apiInvoker.invokeAPI(basePath, path, "GET", queryParams, null, headerParams);
if(response != null){
@@ -48,9 +56,49 @@
}
}
}
/// <summary>
/// Deletes a pet
/// </summary>
/// <param name="petId">Pet id to delete</param>
/// <returns></returns>
public void deletePet (string petId) {
// create path and map variables
var path = "/pet/{petId}".Replace("{format}","json").Replace("{" + "petId" + "}", apiInvoker.escapeString(petId.ToString()));
// query params
var queryParams = new Dictionary<String, String>();
var headerParams = new Dictionary<String, String>();
// verify required params are set
if (petId == null ) {
throw new ApiException(400, "missing required params");
}
string paramStr = null;
try {
var response = apiInvoker.invokeAPI(basePath, path, "DELETE", queryParams, null, headerParams);
if(response != null){
return ;
}
else {
return ;
}
} catch (ApiException ex) {
if(ex.ErrorCode == 404) {
return ;
}
else {
throw ex;
}
}
}
/// <summary>
/// Add a new pet to the store
/// </summary>
/// <param name="body">Pet object that needs to be added to the store</param>
/// <returns></returns>
public void addPet (Pet body) {
// create path and map variables
var path = "/pet.{format}".Replace("{format}","json");
var path = "/pet".Replace("{format}","json");
// query params
var queryParams = new Dictionary<String, String>();
@@ -60,6 +108,7 @@
if (body == null ) {
throw new ApiException(400, "missing required params");
}
string paramStr = null;
try {
var response = apiInvoker.invokeAPI(basePath, path, "POST", queryParams, body, headerParams);
if(response != null){
@@ -77,9 +126,14 @@
}
}
}
/// <summary>
/// Update an existing pet
/// </summary>
/// <param name="body">Pet object that needs to be updated in the store</param>
/// <returns></returns>
public void updatePet (Pet body) {
// create path and map variables
var path = "/pet.{format}".Replace("{format}","json");
var path = "/pet".Replace("{format}","json");
// query params
var queryParams = new Dictionary<String, String>();
@@ -89,6 +143,7 @@
if (body == null ) {
throw new ApiException(400, "missing required params");
}
string paramStr = null;
try {
var response = apiInvoker.invokeAPI(basePath, path, "PUT", queryParams, body, headerParams);
if(response != null){
@@ -106,20 +161,28 @@
}
}
}
public List<Pet> findPetsByStatus (string Status) {
/// <summary>
/// Finds Pets by status Multiple status values can be provided with comma seperated strings
/// </summary>
/// <param name="status">Status values that need to be considered for filter</param>
/// <returns></returns>
public List<Pet> findPetsByStatus (string status) {
// create path and map variables
var path = "/pet.{format}/findByStatus".Replace("{format}","json");
var path = "/pet/findByStatus".Replace("{format}","json");
// query params
var queryParams = new Dictionary<String, String>();
var headerParams = new Dictionary<String, String>();
// verify required params are set
if (Status == null ) {
if (status == null ) {
throw new ApiException(400, "missing required params");
}
if (Status != null)
queryParams.Add("Status", Status);
string paramStr = null;
if (status != null){
paramStr = (status != null && status is DateTime) ? ((DateTime)(object)status).ToString("u") : Convert.ToString(status);
queryParams.Add("status", paramStr);
}
try {
var response = apiInvoker.invokeAPI(basePath, path, "GET", queryParams, null, headerParams);
if(response != null){
@@ -137,20 +200,28 @@
}
}
}
public List<Pet> findPetsByTags (string Tags) {
/// <summary>
/// Finds Pets by tags Muliple tags can be provided with comma seperated strings. Use tag1, tag2, tag3 for testing.
/// </summary>
/// <param name="tags">Tags to filter by</param>
/// <returns></returns>
public List<Pet> findPetsByTags (string tags) {
// create path and map variables
var path = "/pet.{format}/findByTags".Replace("{format}","json");
var path = "/pet/findByTags".Replace("{format}","json");
// query params
var queryParams = new Dictionary<String, String>();
var headerParams = new Dictionary<String, String>();
// verify required params are set
if (Tags == null ) {
if (tags == null ) {
throw new ApiException(400, "missing required params");
}
if (Tags != null)
queryParams.Add("Tags", Tags);
string paramStr = null;
if (tags != null){
paramStr = (tags != null && tags is DateTime) ? ((DateTime)(object)tags).ToString("u") : Convert.ToString(tags);
queryParams.Add("tags", paramStr);
}
try {
var response = apiInvoker.invokeAPI(basePath, path, "GET", queryParams, null, headerParams);
if(response != null){

View File

@@ -11,26 +11,34 @@
return apiInvoker;
}
// Sets the endpoint base url for the services being accessed
public void setBasePath(string basePath) {
this.basePath = basePath;
}
// Gets the endpoint base url for the services being accessed
public String getBasePath() {
return basePath;
}
public Order getOrderById (string Orderid) {
/// <summary>
/// Find purchase order by ID For valid response try integer IDs with value &lt;= 5. Anything above 5 or nonintegers will generate API errors
/// </summary>
/// <param name="orderId">ID of pet that needs to be fetched</param>
/// <returns></returns>
public Order getOrderById (string orderId) {
// create path and map variables
var path = "/store.{format}/order/{orderId}".Replace("{format}","json").Replace("{" + "Orderid" + "}", apiInvoker.escapeString(Orderid.ToString()));
var path = "/store/order/{orderId}".Replace("{format}","json").Replace("{" + "orderId" + "}", apiInvoker.escapeString(orderId.ToString()));
// query params
var queryParams = new Dictionary<String, String>();
var headerParams = new Dictionary<String, String>();
// verify required params are set
if (Orderid == null ) {
if (orderId == null ) {
throw new ApiException(400, "missing required params");
}
string paramStr = null;
try {
var response = apiInvoker.invokeAPI(basePath, path, "GET", queryParams, null, headerParams);
if(response != null){
@@ -48,18 +56,24 @@
}
}
}
public void deleteOrder (string Orderid) {
/// <summary>
/// Delete purchase order by ID For valid response try integer IDs with value &lt; 1000. Anything above 1000 or nonintegers will generate API errors
/// </summary>
/// <param name="orderId">ID of the order that needs to be deleted</param>
/// <returns></returns>
public void deleteOrder (string orderId) {
// create path and map variables
var path = "/store.{format}/order/{orderId}".Replace("{format}","json").Replace("{" + "Orderid" + "}", apiInvoker.escapeString(Orderid.ToString()));
var path = "/store/order/{orderId}".Replace("{format}","json").Replace("{" + "orderId" + "}", apiInvoker.escapeString(orderId.ToString()));
// query params
var queryParams = new Dictionary<String, String>();
var headerParams = new Dictionary<String, String>();
// verify required params are set
if (Orderid == null ) {
if (orderId == null ) {
throw new ApiException(400, "missing required params");
}
string paramStr = null;
try {
var response = apiInvoker.invokeAPI(basePath, path, "DELETE", queryParams, null, headerParams);
if(response != null){
@@ -77,9 +91,14 @@
}
}
}
/// <summary>
/// Place an order for a pet
/// </summary>
/// <param name="body">order placed for purchasing the pet</param>
/// <returns></returns>
public void placeOrder (Order body) {
// create path and map variables
var path = "/store.{format}/order".Replace("{format}","json");
var path = "/store/order".Replace("{format}","json");
// query params
var queryParams = new Dictionary<String, String>();
@@ -89,6 +108,7 @@
if (body == null ) {
throw new ApiException(400, "missing required params");
}
string paramStr = null;
try {
var response = apiInvoker.invokeAPI(basePath, path, "POST", queryParams, body, headerParams);
if(response != null){

View File

@@ -11,46 +11,24 @@
return apiInvoker;
}
// Sets the endpoint base url for the services being accessed
public void setBasePath(string basePath) {
this.basePath = basePath;
}
// Gets the endpoint base url for the services being accessed
public String getBasePath() {
return basePath;
}
public void createUsersWithArrayInput (List<User> body) {
// create path and map variables
var path = "/user.{format}/createWithArray".Replace("{format}","json");
// query params
var queryParams = new Dictionary<String, String>();
var headerParams = new Dictionary<String, String>();
// verify required params are set
if (body == null ) {
throw new ApiException(400, "missing required params");
}
try {
var response = apiInvoker.invokeAPI(basePath, path, "POST", queryParams, body, headerParams);
if(response != null){
return ;
}
else {
return ;
}
} catch (ApiException ex) {
if(ex.ErrorCode == 404) {
return ;
}
else {
throw ex;
}
}
}
/// <summary>
/// Create user This can only be done by the logged in user.
/// </summary>
/// <param name="body">Created user object</param>
/// <returns></returns>
public void createUser (User body) {
// create path and map variables
var path = "/user.{format}".Replace("{format}","json");
var path = "/user".Replace("{format}","json");
// query params
var queryParams = new Dictionary<String, String>();
@@ -60,6 +38,7 @@
if (body == null ) {
throw new ApiException(400, "missing required params");
}
string paramStr = null;
try {
var response = apiInvoker.invokeAPI(basePath, path, "POST", queryParams, body, headerParams);
if(response != null){
@@ -77,9 +56,14 @@
}
}
}
public void createUsersWithListInput (List<User> body) {
/// <summary>
/// Creates list of users with given input array
/// </summary>
/// <param name="body">List of user object</param>
/// <returns></returns>
public void createUsersWithArrayInput (array<User> body) {
// create path and map variables
var path = "/user.{format}/createWithList".Replace("{format}","json");
var path = "/user/createWithArray".Replace("{format}","json");
// query params
var queryParams = new Dictionary<String, String>();
@@ -89,6 +73,7 @@
if (body == null ) {
throw new ApiException(400, "missing required params");
}
string paramStr = null;
try {
var response = apiInvoker.invokeAPI(basePath, path, "POST", queryParams, body, headerParams);
if(response != null){
@@ -106,18 +91,60 @@
}
}
}
public void updateUser (string Username, User body) {
/// <summary>
/// Creates list of users with given list input
/// </summary>
/// <param name="body">List of user object</param>
/// <returns></returns>
public void createUsersWithListInput (array<User> body) {
// create path and map variables
var path = "/user.{format}/{username}".Replace("{format}","json").Replace("{" + "Username" + "}", apiInvoker.escapeString(Username.ToString()));
var path = "/user/createWithList".Replace("{format}","json");
// query params
var queryParams = new Dictionary<String, String>();
var headerParams = new Dictionary<String, String>();
// verify required params are set
if (Username == null || body == null ) {
if (body == null ) {
throw new ApiException(400, "missing required params");
}
string paramStr = null;
try {
var response = apiInvoker.invokeAPI(basePath, path, "POST", queryParams, body, headerParams);
if(response != null){
return ;
}
else {
return ;
}
} catch (ApiException ex) {
if(ex.ErrorCode == 404) {
return ;
}
else {
throw ex;
}
}
}
/// <summary>
/// Updated user This can only be done by the logged in user.
/// </summary>
/// <param name="username">name that need to be deleted</param>
/// <param name="body">Updated user object</param>
/// <returns></returns>
public void updateUser (string username, User body) {
// create path and map variables
var path = "/user/{username}".Replace("{format}","json").Replace("{" + "username" + "}", apiInvoker.escapeString(username.ToString()));
// query params
var queryParams = new Dictionary<String, String>();
var headerParams = new Dictionary<String, String>();
// verify required params are set
if (username == null || body == null ) {
throw new ApiException(400, "missing required params");
}
string paramStr = null;
try {
var response = apiInvoker.invokeAPI(basePath, path, "PUT", queryParams, body, headerParams);
if(response != null){
@@ -135,18 +162,24 @@
}
}
}
public void deleteUser (string Username) {
/// <summary>
/// Delete user This can only be done by the logged in user.
/// </summary>
/// <param name="username">The name that needs to be deleted</param>
/// <returns></returns>
public void deleteUser (string username) {
// create path and map variables
var path = "/user.{format}/{username}".Replace("{format}","json").Replace("{" + "Username" + "}", apiInvoker.escapeString(Username.ToString()));
var path = "/user/{username}".Replace("{format}","json").Replace("{" + "username" + "}", apiInvoker.escapeString(username.ToString()));
// query params
var queryParams = new Dictionary<String, String>();
var headerParams = new Dictionary<String, String>();
// verify required params are set
if (Username == null ) {
if (username == null ) {
throw new ApiException(400, "missing required params");
}
string paramStr = null;
try {
var response = apiInvoker.invokeAPI(basePath, path, "DELETE", queryParams, null, headerParams);
if(response != null){
@@ -164,18 +197,24 @@
}
}
}
public User getUserByName (string Username) {
/// <summary>
/// Get user by user name
/// </summary>
/// <param name="username">The name that needs to be fetched. Use user1 for testing.</param>
/// <returns></returns>
public User getUserByName (string username) {
// create path and map variables
var path = "/user.{format}/{username}".Replace("{format}","json").Replace("{" + "Username" + "}", apiInvoker.escapeString(Username.ToString()));
var path = "/user/{username}".Replace("{format}","json").Replace("{" + "username" + "}", apiInvoker.escapeString(username.ToString()));
// query params
var queryParams = new Dictionary<String, String>();
var headerParams = new Dictionary<String, String>();
// verify required params are set
if (Username == null ) {
if (username == null ) {
throw new ApiException(400, "missing required params");
}
string paramStr = null;
try {
var response = apiInvoker.invokeAPI(basePath, path, "GET", queryParams, null, headerParams);
if(response != null){
@@ -193,22 +232,33 @@
}
}
}
public string loginUser (string Username, string Password) {
/// <summary>
/// Logs user into the system
/// </summary>
/// <param name="username">The user name for login</param>
/// <param name="password">The password for login in clear text</param>
/// <returns></returns>
public string loginUser (string username, string password) {
// create path and map variables
var path = "/user.{format}/login".Replace("{format}","json");
var path = "/user/login".Replace("{format}","json");
// query params
var queryParams = new Dictionary<String, String>();
var headerParams = new Dictionary<String, String>();
// verify required params are set
if (Username == null || Password == null ) {
if (username == null || password == null ) {
throw new ApiException(400, "missing required params");
}
if (Username != null)
queryParams.Add("Username", Username);
if (Password != null)
queryParams.Add("Password", Password);
string paramStr = null;
if (username != null){
paramStr = (username != null && username is DateTime) ? ((DateTime)(object)username).ToString("u") : Convert.ToString(username);
queryParams.Add("username", paramStr);
}
if (password != null){
paramStr = (password != null && password is DateTime) ? ((DateTime)(object)password).ToString("u") : Convert.ToString(password);
queryParams.Add("password", paramStr);
}
try {
var response = apiInvoker.invokeAPI(basePath, path, "GET", queryParams, null, headerParams);
if(response != null){
@@ -226,14 +276,19 @@
}
}
}
/// <summary>
/// Logs out current logged in user session
/// </summary>
/// <returns></returns>
public void logoutUser () {
// create path and map variables
var path = "/user.{format}/logout".Replace("{format}","json");
var path = "/user/logout".Replace("{format}","json");
// query params
var queryParams = new Dictionary<String, String>();
var headerParams = new Dictionary<String, String>();
string paramStr = null;
try {
var response = apiInvoker.invokeAPI(basePath, path, "GET", queryParams, null, headerParams);
if(response != null){

View File

@@ -5,15 +5,15 @@ using System.Collections.Generic;
namespace Com.Wordnik.Petstore.Model {
public class Category {
public long Id { get; set; }
public string name { get; set; }
public string Name { get; set; }
public long id { get; set; }
public override string ToString() {
var sb = new StringBuilder();
sb.Append("class Category {\n");
sb.Append(" Id: ").Append(Id).Append("\n");
sb.Append(" Name: ").Append(Name).Append("\n");
sb.Append(" name: ").Append(name).Append("\n");
sb.Append(" id: ").Append(id).Append("\n");
sb.Append("}\n");
return sb.ToString();
}

View File

@@ -5,25 +5,25 @@ using System.Collections.Generic;
namespace Com.Wordnik.Petstore.Model {
public class Order {
public long Id { get; set; }
public long Petid { get; set; }
public long id { get; set; }
/* Order Status */
public string Status { get; set; }
public string status { get; set; }
public int Quantity { get; set; }
public long petId { get; set; }
public DateTime Shipdate { get; set; }
public int quantity { get; set; }
public DateTime shipDate { get; set; }
public override string ToString() {
var sb = new StringBuilder();
sb.Append("class Order {\n");
sb.Append(" Id: ").Append(Id).Append("\n");
sb.Append(" Petid: ").Append(Petid).Append("\n");
sb.Append(" Status: ").Append(Status).Append("\n");
sb.Append(" Quantity: ").Append(Quantity).Append("\n");
sb.Append(" Shipdate: ").Append(Shipdate).Append("\n");
sb.Append(" id: ").Append(id).Append("\n");
sb.Append(" status: ").Append(status).Append("\n");
sb.Append(" petId: ").Append(petId).Append("\n");
sb.Append(" quantity: ").Append(quantity).Append("\n");
sb.Append(" shipDate: ").Append(shipDate).Append("\n");
sb.Append("}\n");
return sb.ToString();
}

View File

@@ -5,28 +5,28 @@ using System.Collections.Generic;
namespace Com.Wordnik.Petstore.Model {
public class Pet {
public List<Tag> Tags { get; set; }
public string name { get; set; }
public long Id { get; set; }
public long id { get; set; }
public Category Category { get; set; }
public List<Tag> tags { get; set; }
/* pet status in the store */
public string Status { get; set; }
public string status { get; set; }
public string Name { get; set; }
public List<string> photoUrls { get; set; }
public List<string> Photourls { get; set; }
public Category category { get; set; }
public override string ToString() {
var sb = new StringBuilder();
sb.Append("class Pet {\n");
sb.Append(" Tags: ").Append(Tags).Append("\n");
sb.Append(" Id: ").Append(Id).Append("\n");
sb.Append(" Category: ").Append(Category).Append("\n");
sb.Append(" Status: ").Append(Status).Append("\n");
sb.Append(" Name: ").Append(Name).Append("\n");
sb.Append(" Photourls: ").Append(Photourls).Append("\n");
sb.Append(" name: ").Append(name).Append("\n");
sb.Append(" id: ").Append(id).Append("\n");
sb.Append(" tags: ").Append(tags).Append("\n");
sb.Append(" status: ").Append(status).Append("\n");
sb.Append(" photoUrls: ").Append(photoUrls).Append("\n");
sb.Append(" category: ").Append(category).Append("\n");
sb.Append("}\n");
return sb.ToString();
}

View File

@@ -5,15 +5,15 @@ using System.Collections.Generic;
namespace Com.Wordnik.Petstore.Model {
public class Tag {
public long Id { get; set; }
public string name { get; set; }
public string Name { get; set; }
public long id { get; set; }
public override string ToString() {
var sb = new StringBuilder();
sb.Append("class Tag {\n");
sb.Append(" Id: ").Append(Id).Append("\n");
sb.Append(" Name: ").Append(Name).Append("\n");
sb.Append(" name: ").Append(name).Append("\n");
sb.Append(" id: ").Append(id).Append("\n");
sb.Append("}\n");
return sb.ToString();
}

View File

@@ -5,34 +5,34 @@ using System.Collections.Generic;
namespace Com.Wordnik.Petstore.Model {
public class User {
public long Id { get; set; }
public long id { get; set; }
public string Lastname { get; set; }
public string firstName { get; set; }
public string Phone { get; set; }
public string username { get; set; }
public string Username { get; set; }
public string lastName { get; set; }
public string Email { get; set; }
public string email { get; set; }
public string password { get; set; }
public string phone { get; set; }
/* User Status */
public int Userstatus { get; set; }
public string Firstname { get; set; }
public string Password { get; set; }
public int userStatus { get; set; }
public override string ToString() {
var sb = new StringBuilder();
sb.Append("class User {\n");
sb.Append(" Id: ").Append(Id).Append("\n");
sb.Append(" Lastname: ").Append(Lastname).Append("\n");
sb.Append(" Phone: ").Append(Phone).Append("\n");
sb.Append(" Username: ").Append(Username).Append("\n");
sb.Append(" Email: ").Append(Email).Append("\n");
sb.Append(" Userstatus: ").Append(Userstatus).Append("\n");
sb.Append(" Firstname: ").Append(Firstname).Append("\n");
sb.Append(" Password: ").Append(Password).Append("\n");
sb.Append(" id: ").Append(id).Append("\n");
sb.Append(" firstName: ").Append(firstName).Append("\n");
sb.Append(" username: ").Append(username).Append("\n");
sb.Append(" lastName: ").Append(lastName).Append("\n");
sb.Append(" email: ").Append(email).Append("\n");
sb.Append(" password: ").Append(password).Append("\n");
sb.Append(" phone: ").Append(phone).Append("\n");
sb.Append(" userStatus: ").Append(userStatus).Append("\n");
sb.Append("}\n");
return sb.ToString();
}

View File

@@ -45,6 +45,7 @@ class BasicCSharpGenerator extends BasicGenerator {
* variable declarations.
*/
override def typeMapping = Map(
"array" -> "List",
"boolean" -> "bool",
"string" -> "string",
"int" -> "int",
@@ -97,7 +98,16 @@ class BasicCSharpGenerator extends BasicGenerator {
override def processResponseDeclaration(responseClass: String): Option[String] = {
responseClass match {
case "void" => None
case e: String => Some(typeMapping.getOrElse(e, e.replaceAll("\\[", "<").replaceAll("\\]", ">")))
case e: String => {
val ComplexTypeMatcher = "(.*)\\[(.*)\\].*".r
val t = e match {
case ComplexTypeMatcher(container, inner) => {
e.replaceAll(container, typeMapping.getOrElse(container, container))
}
case _ => e
}
Some(typeMapping.getOrElse(t, t.replaceAll("\\[", "<").replaceAll("\\]", ">")))
}
}
}

View File

@@ -38,4 +38,11 @@ class BasicCSharpGeneratorTest extends FlatSpec with ShouldMatchers {
it should "perserve the name date" in {
config.toVarName("date") should be ("date")
}
/*
* arrays look nice
*/
it should "process a string array" in {
config.processResponseDeclaration("array[string]") should be (Some("List<string>"))
}
}