forked from loafle/openapi-generator-original
commit
a7ec1b9fd0
23
.gitignore
vendored
23
.gitignore
vendored
@ -91,13 +91,19 @@ samples/client/petstore/swift/SwaggerClientTests/Pods/Pods.xcodeproj/xcshareddat
|
|||||||
samples/client/petstore/csharp/SwaggerClientTest/.vs
|
samples/client/petstore/csharp/SwaggerClientTest/.vs
|
||||||
samples/client/petstore/csharp/SwaggerClientTest/obj
|
samples/client/petstore/csharp/SwaggerClientTest/obj
|
||||||
samples/client/petstore/csharp/SwaggerClientTest/bin
|
samples/client/petstore/csharp/SwaggerClientTest/bin
|
||||||
samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient/vendor/
|
samples/client/petstore/csharp/SwaggerClientTest/packages
|
||||||
samples/client/petstore/csharp/SwaggerClientTest/bin/Debug/
|
samples/client/petstore/csharp/SwaggerClientTest/bin/Debug/
|
||||||
samples/client/petstore/csharp/SwaggerClientTest/obj/Debug/
|
samples/client/petstore/csharp/SwaggerClientTest/obj/Debug/
|
||||||
samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient/nuget.exe
|
|
||||||
samples/client/petstore/csharp/SwaggerClientTest/TestResult.xml
|
samples/client/petstore/csharp/SwaggerClientTest/TestResult.xml
|
||||||
samples/client/petstore/csharp/SwaggerClientTest/nuget.exe
|
samples/client/petstore/csharp/SwaggerClientTest/nuget.exe
|
||||||
samples/client/petstore/csharp/SwaggerClientTest/testrunner/
|
samples/client/petstore/csharp/SwaggerClientTest/testrunner/
|
||||||
|
samples/client/petstore/csharp/SwaggerClient/.vs
|
||||||
|
samples/client/petstore/csharp/SwaggerClient/nuget.exe
|
||||||
|
samples/client/petstore/csharp/SwaggerClient/obj
|
||||||
|
samples/client/petstore/csharp/SwaggerClient/bin
|
||||||
|
samples/client/petstore/csharp/SwaggerClient/obj/Debug/
|
||||||
|
samples/client/petstore/csharp/SwaggerClient/bin/Debug/
|
||||||
|
samples/client/petstore/csharp/SwaggerClient/packages
|
||||||
|
|
||||||
# Python
|
# Python
|
||||||
*.pyc
|
*.pyc
|
||||||
@ -107,3 +113,16 @@ samples/client/petstore/python/swagger_client.egg-info/SOURCES.txt
|
|||||||
samples/client/petstore/python/.coverage
|
samples/client/petstore/python/.coverage
|
||||||
samples/client/petstore/python/.projectile
|
samples/client/petstore/python/.projectile
|
||||||
samples/client/petstore/python/.venv/
|
samples/client/petstore/python/.venv/
|
||||||
|
|
||||||
|
# ts
|
||||||
|
samples/client/petstore/typescript-node/npm/node_modules
|
||||||
|
samples/client/petstore/typescript-fetch/with-package-metadata/node_modules
|
||||||
|
samples/client/petstore/typescript-fetch/with-package-metadata/dist
|
||||||
|
samples/client/petstore/typescript-fetch/with-package-metadata/typings
|
||||||
|
samples/client/petstore/typescript-fetch/default/node_modules
|
||||||
|
samples/client/petstore/typescript-fetch/default/dist
|
||||||
|
samples/client/petstore/typescript-fetch/default/typings
|
||||||
|
samples/client/petstore/typescript-fetch/default-es6/node_modules
|
||||||
|
samples/client/petstore/typescript-fetch/default-es6/dist
|
||||||
|
samples/client/petstore/typescript-fetch/default-es6/typings
|
||||||
|
|
||||||
|
118
README.md
118
README.md
@ -51,6 +51,7 @@ Check out [Swagger-Spec](https://github.com/OAI/OpenAPI-Specification) for addit
|
|||||||
- [Java JAX-RS (Apache CXF 2 / 3)](#java-jax-rs-apache-cxf-2--3)
|
- [Java JAX-RS (Apache CXF 2 / 3)](#java-jax-rs-apache-cxf-2--3)
|
||||||
- [Java JAX-RS (Resteasy)](#java-jax-rs-resteasy)
|
- [Java JAX-RS (Resteasy)](#java-jax-rs-resteasy)
|
||||||
- [Java Spring MVC](#java-spring-mvc)
|
- [Java Spring MVC](#java-spring-mvc)
|
||||||
|
- [Java SpringBoot](#java-springboot)
|
||||||
- [Haskell Servant](#haskell-servant)
|
- [Haskell Servant](#haskell-servant)
|
||||||
- [ASP.NET 5 Web API](#aspnet-5-web-api)
|
- [ASP.NET 5 Web API](#aspnet-5-web-api)
|
||||||
- [To build the codegen library](#to-build-the-codegen-library)
|
- [To build the codegen library](#to-build-the-codegen-library)
|
||||||
@ -59,6 +60,7 @@ Check out [Swagger-Spec](https://github.com/OAI/OpenAPI-Specification) for addit
|
|||||||
- [Online Generators](#online-generators)
|
- [Online Generators](#online-generators)
|
||||||
- [Guidelines for Contribution](https://github.com/swagger-api/swagger-codegen/wiki/Guidelines-for-Contribution)
|
- [Guidelines for Contribution](https://github.com/swagger-api/swagger-codegen/wiki/Guidelines-for-Contribution)
|
||||||
- [Companies/Projects using Swagger Codegen](#companiesprojects-using-swagger-codegen)
|
- [Companies/Projects using Swagger Codegen](#companiesprojects-using-swagger-codegen)
|
||||||
|
- [Swagger Codegen Core Team](#swagger-codegen-core-team)
|
||||||
- [License](#license)
|
- [License](#license)
|
||||||
|
|
||||||
|
|
||||||
@ -688,6 +690,31 @@ java -jar modules/swagger-codegen-cli/target/swagger-codegen-cli.jar generate \
|
|||||||
-o samples/server/petstore/spring-mvc
|
-o samples/server/petstore/spring-mvc
|
||||||
```
|
```
|
||||||
|
|
||||||
|
### Java SpringBoot
|
||||||
|
|
||||||
|
```
|
||||||
|
java -jar modules/swagger-codegen-cli/target/swagger-codegen-cli.jar generate \
|
||||||
|
-i http://petstore.swagger.io/v2/swagger.json \
|
||||||
|
-l springboot \
|
||||||
|
-o samples/server/petstore/springboot
|
||||||
|
```
|
||||||
|
|
||||||
|
You can also set a Json file with basePackage & configPackage properties :
|
||||||
|
Example :
|
||||||
|
```
|
||||||
|
{
|
||||||
|
"basePackage":"io.swagger",
|
||||||
|
"configPackage":"io.swagger.config"
|
||||||
|
}
|
||||||
|
```
|
||||||
|
For use it add option ```-c myOptions.json``` to the generation command
|
||||||
|
|
||||||
|
To Use-it :
|
||||||
|
in the generated folder try ``` mvn package ``` for build jar.
|
||||||
|
Start your server ``` java -jar target/swagger-springboot-server-1.0.0.jar ```
|
||||||
|
SpringBoot listening on default port 8080
|
||||||
|
|
||||||
|
|
||||||
### Haskell Servant
|
### Haskell Servant
|
||||||
|
|
||||||
```
|
```
|
||||||
@ -763,6 +790,7 @@ Here are some companies/projects using Swagger Codegen in production. To add you
|
|||||||
- [Acunetix](https://www.acunetix.com/)
|
- [Acunetix](https://www.acunetix.com/)
|
||||||
- [Atlassian](https://www.atlassian.com/)
|
- [Atlassian](https://www.atlassian.com/)
|
||||||
- [beemo](http://www.beemo.eu)
|
- [beemo](http://www.beemo.eu)
|
||||||
|
- [bitly](https://bitly.com)
|
||||||
- [Cachet Financial](http://www.cachetfinancial.com/)
|
- [Cachet Financial](http://www.cachetfinancial.com/)
|
||||||
- [CloudBoost](https://www.CloudBoost.io/)
|
- [CloudBoost](https://www.CloudBoost.io/)
|
||||||
- [Cupix](http://www.cupix.com)
|
- [Cupix](http://www.cupix.com)
|
||||||
@ -779,9 +807,12 @@ Here are some companies/projects using Swagger Codegen in production. To add you
|
|||||||
- [nViso](http://www.nviso.ch/)
|
- [nViso](http://www.nviso.ch/)
|
||||||
- [Okiok](https://www.okiok.com)
|
- [Okiok](https://www.okiok.com)
|
||||||
- [OSDN](https://osdn.jp)
|
- [OSDN](https://osdn.jp)
|
||||||
|
- [PagerDuty](https://www.pagerduty.com)
|
||||||
|
- [Pepipost](https://www.pepipost.com)
|
||||||
- [Pixoneye](http://www.pixoneye.com/)
|
- [Pixoneye](http://www.pixoneye.com/)
|
||||||
- [PostAffiliatePro](https://www.postaffiliatepro.com/)
|
- [PostAffiliatePro](https://www.postaffiliatepro.com/)
|
||||||
- [Reload! A/S](https://reload.dk/)
|
- [Reload! A/S](https://reload.dk/)
|
||||||
|
- [REstore](https://www.restore.eu)
|
||||||
- [Royal Bank of Canada (RBC)](http://www.rbc.com/canada.html)
|
- [Royal Bank of Canada (RBC)](http://www.rbc.com/canada.html)
|
||||||
- [SmartRecruiters](https://www.smartrecruiters.com/)
|
- [SmartRecruiters](https://www.smartrecruiters.com/)
|
||||||
- [StyleRecipe](http://stylerecipe.co.jp)
|
- [StyleRecipe](http://stylerecipe.co.jp)
|
||||||
@ -790,7 +821,92 @@ Here are some companies/projects using Swagger Codegen in production. To add you
|
|||||||
- [uShip](https://www.uship.com/)
|
- [uShip](https://www.uship.com/)
|
||||||
- [Zalando](https://tech.zalando.com)
|
- [Zalando](https://tech.zalando.com)
|
||||||
- [ZEEF.com](https://zeef.com/)
|
- [ZEEF.com](https://zeef.com/)
|
||||||
- [REstore](https://www.restore.eu)
|
|
||||||
|
# Swagger Codegen Core Team
|
||||||
|
|
||||||
|
Swaagger Codegen core team members are contributors who have been making signficiant contributions (review issues, fix bugs, make enhancements, etc) to the project on a regular basis.
|
||||||
|
|
||||||
|
## API Clients
|
||||||
|
| Langauges | Core Team (join date) |
|
||||||
|
|:-------------|:-------------|
|
||||||
|
| ActionScript | |
|
||||||
|
| C++ | |
|
||||||
|
| C# | @jimschubert (2016/05/01) | |
|
||||||
|
| Clojure | @xhh (2016/05/01) |
|
||||||
|
| Dart | |
|
||||||
|
| Groovy | |
|
||||||
|
| Go | @guohuang (2016/05/01) @neilotoole (2016/05/01) |
|
||||||
|
| Java | @cbornet (2016/05/01) @xhh (2016/05/01) |
|
||||||
|
| NodeJS/Javascript | @xhh (2016/05/01) |
|
||||||
|
| ObjC | @mateuszmackowiak (2016/05/09) |
|
||||||
|
| Perl | @wing328 (2016/05/01) |
|
||||||
|
| PHP | @arnested (2016/05/01) |
|
||||||
|
| Python | @scottrw93 (2016/05/01) |
|
||||||
|
| Ruby | @wing328 (2016/05/01) |
|
||||||
|
| Scala | |
|
||||||
|
| Swift | @jaz-ah (2016/05/01) @Edubits (2016/05/01) |
|
||||||
|
| TypeScript (Node) | @Vrolijkx (2016/05/01) |
|
||||||
|
| TypeScript (Angular1) | @Vrolijkx (2016/05/01) |
|
||||||
|
| TypeScript (Angular2) | @Vrolijkx (2016/05/01) |
|
||||||
|
| TypeScript (Fetch) | |
|
||||||
|
## Server Stubs
|
||||||
|
| Langauges | Core Team (date joined) |
|
||||||
|
|:------------- |:-------------|
|
||||||
|
| C# ASP.NET5 | @jimschubert (2016/05/01) |
|
||||||
|
| Haskell Servant | |
|
||||||
|
| Java Spring Boot | |
|
||||||
|
| Java SpringMVC | @kolyjjj (2016/05/01) |
|
||||||
|
| Java JAX-RS | |
|
||||||
|
| NodeJS | @kolyjjj (2016/05/01) |
|
||||||
|
| PHP Lumen | @abcsum (2016/05/01) |
|
||||||
|
| PHP Silex | |
|
||||||
|
| PHP Slim | |
|
||||||
|
| Python Flask | |
|
||||||
|
| Ruby Sinatra | @wing328 (2016/05/01) | |
|
||||||
|
| Scala Scalatra | | |
|
||||||
|
|
||||||
|
## Template Creator
|
||||||
|
Here is a list of template creators:
|
||||||
|
* API Clients:
|
||||||
|
* Akka-Scala: @cchafer
|
||||||
|
* C# (.NET 2.0): @who
|
||||||
|
* Clojure: @xhh
|
||||||
|
* Dart: @yissachar
|
||||||
|
* Groovy: @victorgit
|
||||||
|
* Go: @wing328
|
||||||
|
* Java (Retrofit): @0legg
|
||||||
|
* Java (Retrofi2): @emilianobonassi
|
||||||
|
* Java (Jersey2): @xhh
|
||||||
|
* Java (okhttp-gson): @xhh
|
||||||
|
* Javascript/NodeJS: @jfiala
|
||||||
|
* Javascript (Closure-annotated Angular) @achew22
|
||||||
|
* Perl: @wing328
|
||||||
|
* Swift: @tkqubo
|
||||||
|
* TypeScript (Node): @mhardorf
|
||||||
|
* TypeScript (Angular1): @mhardorf
|
||||||
|
* TypeScript (Fetch): @leonyu
|
||||||
|
* TypeScript (Angular2): @roni-frantchi
|
||||||
|
* Server Stubs
|
||||||
|
* C# ASP.NET5: @jimschubert
|
||||||
|
* Haskell Servant: @algas
|
||||||
|
* Java Spring Boot: @diyfr
|
||||||
|
* JAX-RS RestEasy: @chameleon82
|
||||||
|
* JAX-RS CXF: @hiveship
|
||||||
|
* PHP Lumen: @abcsum
|
||||||
|
* PHP Slim: @jfastnacht
|
||||||
|
|
||||||
|
## How to join the core team
|
||||||
|
|
||||||
|
Here are the requirements to become a core team member:
|
||||||
|
- rank within top 50 in https://github.com/swagger-api/swagger-codegen/graphs/contributors
|
||||||
|
- to contribute, here are some good [starting points](https://github.com/swagger-api/swagger-codegen/issues?q=is%3Aopen+is%3Aissue+label%3A%22Need+community+contribution%22)
|
||||||
|
- regular contributions to the project
|
||||||
|
- about 3 hours per week
|
||||||
|
- for contribution, it can be addressing issues, reviewing PRs submitted by others, submitting PR to fix bugs or make enhancements, etc
|
||||||
|
|
||||||
|
To join the core team, please reach out to wing328hk@gmail.com (@wing328) for more information.
|
||||||
|
|
||||||
|
To become a Template Creator, simply submit a PR for new API client (e.g. Rust, Elixir) or server stub (e.g. Ruby Grape) generator.
|
||||||
|
|
||||||
License
|
License
|
||||||
-------
|
-------
|
||||||
|
@ -29,7 +29,7 @@ cd $APP_DIR
|
|||||||
./bin/java-petstore-jersey2.sh
|
./bin/java-petstore-jersey2.sh
|
||||||
./bin/java-petstore-okhttp-gson.sh
|
./bin/java-petstore-okhttp-gson.sh
|
||||||
./bin/java-petstore-retrofit.sh
|
./bin/java-petstore-retrofit.sh
|
||||||
+./bin/java-petstore-retrofit2.sh
|
./bin/java-petstore-retrofit2.sh
|
||||||
./bin/jaxrs-petstore-server.sh
|
./bin/jaxrs-petstore-server.sh
|
||||||
./bin/nodejs-petstore-server.sh
|
./bin/nodejs-petstore-server.sh
|
||||||
./bin/objc-petstore.sh
|
./bin/objc-petstore.sh
|
||||||
|
@ -26,6 +26,6 @@ fi
|
|||||||
|
|
||||||
# if you've executed sbt assembly previously it will use that instead.
|
# if you've executed sbt assembly previously it will use that instead.
|
||||||
export JAVA_OPTS="${JAVA_OPTS} -XX:MaxPermSize=256M -Xmx1024M -DloggerPath=conf/log4j.properties"
|
export JAVA_OPTS="${JAVA_OPTS} -XX:MaxPermSize=256M -Xmx1024M -DloggerPath=conf/log4j.properties"
|
||||||
ags="$@ generate -i modules/swagger-codegen/src/test/resources/2_0/petstore-with-fake-endpoints-models-for-testing.yaml -l csharp -o samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient"
|
ags="$@ generate -i modules/swagger-codegen/src/test/resources/2_0/petstore-with-fake-endpoints-models-for-testing.yaml -l csharp -o samples/client/petstore/csharp/SwaggerClient"
|
||||||
|
|
||||||
java $JAVA_OPTS -jar $executable $ags
|
java $JAVA_OPTS -jar $executable $ags
|
||||||
|
@ -26,6 +26,6 @@ fi
|
|||||||
|
|
||||||
# if you've executed sbt assembly previously it will use that instead.
|
# if you've executed sbt assembly previously it will use that instead.
|
||||||
export JAVA_OPTS="${JAVA_OPTS} -XX:MaxPermSize=256M -Xmx1024M -DloggerPath=conf/log4j.properties"
|
export JAVA_OPTS="${JAVA_OPTS} -XX:MaxPermSize=256M -Xmx1024M -DloggerPath=conf/log4j.properties"
|
||||||
ags="$@ generate -t modules/swagger-codegen/src/main/resources/haskell-servant -i modules/swagger-codegen/src/test/resources/2_0/petstore.yaml -l haskell-servant -o samples/server/petstore/haskell-servant"
|
ags="$@ generate -t modules/swagger-codegen/src/main/resources/haskell-servant -i modules/swagger-codegen/src/test/resources/2_0/petstore.yaml -l haskell -o samples/server/petstore/haskell-servant"
|
||||||
|
|
||||||
java $JAVA_OPTS -jar $executable $ags
|
java $JAVA_OPTS -jar $executable $ags
|
||||||
|
@ -27,7 +27,7 @@ fi
|
|||||||
# if you've executed sbt assembly previously it will use that instead.
|
# if you've executed sbt assembly previously it will use that instead.
|
||||||
export JAVA_OPTS="${JAVA_OPTS} -XX:MaxPermSize=256M -Xmx1024M -DloggerPath=conf/log4j.properties"
|
export JAVA_OPTS="${JAVA_OPTS} -XX:MaxPermSize=256M -Xmx1024M -DloggerPath=conf/log4j.properties"
|
||||||
ags="$@ generate -t modules/swagger-codegen/src/main/resources/Javascript \
|
ags="$@ generate -t modules/swagger-codegen/src/main/resources/Javascript \
|
||||||
-i modules/swagger-codegen/src/test/resources/2_0/petstore.json -l javascript \
|
-i modules/swagger-codegen/src/test/resources/2_0/petstore-with-fake-endpoints-models-for-testing.yaml -l javascript \
|
||||||
-o samples/client/petstore/javascript-promise \
|
-o samples/client/petstore/javascript-promise \
|
||||||
--additional-properties usePromises=true"
|
--additional-properties usePromises=true"
|
||||||
|
|
||||||
|
31
bin/springboot-petstore-server.sh
Executable file
31
bin/springboot-petstore-server.sh
Executable file
@ -0,0 +1,31 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
SCRIPT="$0"
|
||||||
|
|
||||||
|
while [ -h "$SCRIPT" ] ; do
|
||||||
|
ls=`ls -ld "$SCRIPT"`
|
||||||
|
link=`expr "$ls" : '.*-> \(.*\)$'`
|
||||||
|
if expr "$link" : '/.*' > /dev/null; then
|
||||||
|
SCRIPT="$link"
|
||||||
|
else
|
||||||
|
SCRIPT=`dirname "$SCRIPT"`/"$link"
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
if [ ! -d "${APP_DIR}" ]; then
|
||||||
|
APP_DIR=`dirname "$SCRIPT"`/..
|
||||||
|
APP_DIR=`cd "${APP_DIR}"; pwd`
|
||||||
|
fi
|
||||||
|
|
||||||
|
executable="./modules/swagger-codegen-cli/target/swagger-codegen-cli.jar"
|
||||||
|
|
||||||
|
if [ ! -f "$executable" ]
|
||||||
|
then
|
||||||
|
mvn clean package
|
||||||
|
fi
|
||||||
|
|
||||||
|
# if you've executed sbt assembly previously it will use that instead.
|
||||||
|
export JAVA_OPTS="${JAVA_OPTS} -XX:MaxPermSize=256M -Xmx1024M -DloggerPath=conf/log4j.properties"
|
||||||
|
ags="$@ generate -t modules/swagger-codegen/src/main/resources/JavaSpringBoot -i modules/swagger-codegen/src/test/resources/2_0/petstore.yaml -l springboot -o samples/server/petstore/springboot"
|
||||||
|
|
||||||
|
java $JAVA_OPTS -jar $executable $ags
|
5
bin/typescript-fetch-petstore-all.sh
Executable file
5
bin/typescript-fetch-petstore-all.sh
Executable file
@ -0,0 +1,5 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
./bin/typescript-fetch-petstore-target-es6.sh
|
||||||
|
./bin/typescript-fetch-petstore-target-with-package-metadata.sh
|
||||||
|
./bin/typescript-fetch-petstore.sh
|
3
bin/typescript-fetch-petstore-target-es6.json
Normal file
3
bin/typescript-fetch-petstore-target-es6.json
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
{
|
||||||
|
"supportsES6": true
|
||||||
|
}
|
31
bin/typescript-fetch-petstore-target-es6.sh
Executable file
31
bin/typescript-fetch-petstore-target-es6.sh
Executable file
@ -0,0 +1,31 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
SCRIPT="$0"
|
||||||
|
|
||||||
|
while [ -h "$SCRIPT" ] ; do
|
||||||
|
ls=`ls -ld "$SCRIPT"`
|
||||||
|
link=`expr "$ls" : '.*-> \(.*\)$'`
|
||||||
|
if expr "$link" : '/.*' > /dev/null; then
|
||||||
|
SCRIPT="$link"
|
||||||
|
else
|
||||||
|
SCRIPT=`dirname "$SCRIPT"`/"$link"
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
if [ ! -d "${APP_DIR}" ]; then
|
||||||
|
APP_DIR=`dirname "$SCRIPT"`/..
|
||||||
|
APP_DIR=`cd "${APP_DIR}"; pwd`
|
||||||
|
fi
|
||||||
|
|
||||||
|
executable="./modules/swagger-codegen-cli/target/swagger-codegen-cli.jar"
|
||||||
|
|
||||||
|
if [ ! -f "$executable" ]
|
||||||
|
then
|
||||||
|
mvn clean package
|
||||||
|
fi
|
||||||
|
|
||||||
|
# if you've executed sbt assembly previously it will use that instead.
|
||||||
|
export JAVA_OPTS="${JAVA_OPTS} -XX:MaxPermSize=256M -Xmx1024M -DloggerPath=conf/log4j.properties"
|
||||||
|
ags="$@ generate -i modules/swagger-codegen/src/test/resources/2_0/petstore.json -l typescript-fetch -c bin/typescript-fetch-petstore-target-es6.json -o samples/client/petstore/typescript-fetch/default-es6"
|
||||||
|
|
||||||
|
java $JAVA_OPTS -jar $executable $ags
|
@ -0,0 +1,4 @@
|
|||||||
|
{
|
||||||
|
"npmName": "@swagger/typescript-fetch-petstore",
|
||||||
|
"npmVersion": "0.0.1"
|
||||||
|
}
|
31
bin/typescript-fetch-petstore-target-with-package-metadata.sh
Executable file
31
bin/typescript-fetch-petstore-target-with-package-metadata.sh
Executable file
@ -0,0 +1,31 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
SCRIPT="$0"
|
||||||
|
|
||||||
|
while [ -h "$SCRIPT" ] ; do
|
||||||
|
ls=`ls -ld "$SCRIPT"`
|
||||||
|
link=`expr "$ls" : '.*-> \(.*\)$'`
|
||||||
|
if expr "$link" : '/.*' > /dev/null; then
|
||||||
|
SCRIPT="$link"
|
||||||
|
else
|
||||||
|
SCRIPT=`dirname "$SCRIPT"`/"$link"
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
if [ ! -d "${APP_DIR}" ]; then
|
||||||
|
APP_DIR=`dirname "$SCRIPT"`/..
|
||||||
|
APP_DIR=`cd "${APP_DIR}"; pwd`
|
||||||
|
fi
|
||||||
|
|
||||||
|
executable="./modules/swagger-codegen-cli/target/swagger-codegen-cli.jar"
|
||||||
|
|
||||||
|
if [ ! -f "$executable" ]
|
||||||
|
then
|
||||||
|
mvn clean package
|
||||||
|
fi
|
||||||
|
|
||||||
|
# if you've executed sbt assembly previously it will use that instead.
|
||||||
|
export JAVA_OPTS="${JAVA_OPTS} -XX:MaxPermSize=256M -Xmx1024M -DloggerPath=conf/log4j.properties"
|
||||||
|
ags="$@ generate -i modules/swagger-codegen/src/test/resources/2_0/petstore.json -l typescript-fetch -c bin/typescript-fetch-petstore-target-with-package-metadata.json -o samples/client/petstore/typescript-fetch/with-package-metadata"
|
||||||
|
|
||||||
|
java $JAVA_OPTS -jar $executable $ags
|
31
bin/typescript-fetch-petstore.sh
Executable file
31
bin/typescript-fetch-petstore.sh
Executable file
@ -0,0 +1,31 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
SCRIPT="$0"
|
||||||
|
|
||||||
|
while [ -h "$SCRIPT" ] ; do
|
||||||
|
ls=`ls -ld "$SCRIPT"`
|
||||||
|
link=`expr "$ls" : '.*-> \(.*\)$'`
|
||||||
|
if expr "$link" : '/.*' > /dev/null; then
|
||||||
|
SCRIPT="$link"
|
||||||
|
else
|
||||||
|
SCRIPT=`dirname "$SCRIPT"`/"$link"
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
if [ ! -d "${APP_DIR}" ]; then
|
||||||
|
APP_DIR=`dirname "$SCRIPT"`/..
|
||||||
|
APP_DIR=`cd "${APP_DIR}"; pwd`
|
||||||
|
fi
|
||||||
|
|
||||||
|
executable="./modules/swagger-codegen-cli/target/swagger-codegen-cli.jar"
|
||||||
|
|
||||||
|
if [ ! -f "$executable" ]
|
||||||
|
then
|
||||||
|
mvn clean package
|
||||||
|
fi
|
||||||
|
|
||||||
|
# if you've executed sbt assembly previously it will use that instead.
|
||||||
|
export JAVA_OPTS="${JAVA_OPTS} -XX:MaxPermSize=256M -Xmx1024M -DloggerPath=conf/log4j.properties"
|
||||||
|
ags="$@ generate -i modules/swagger-codegen/src/test/resources/2_0/petstore.json -l typescript-fetch -o samples/client/petstore/typescript-fetch/default"
|
||||||
|
|
||||||
|
java $JAVA_OPTS -jar $executable $ags
|
@ -5,6 +5,6 @@ If Not Exist %executable% (
|
|||||||
)
|
)
|
||||||
|
|
||||||
set JAVA_OPTS=%JAVA_OPTS% -XX:MaxPermSize=256M -Xmx1024M -DloggerPath=conf/log4j.properties
|
set JAVA_OPTS=%JAVA_OPTS% -XX:MaxPermSize=256M -Xmx1024M -DloggerPath=conf/log4j.properties
|
||||||
set ags=generate -t modules\swagger-codegen\src\main\resources\csharp -i modules\swagger-codegen\src\test\resources\2_0\petstore.json -l csharp -o samples\client\petstore\csharp\SwaggerClientTest\Lib\SwaggerClient
|
set ags=generate -t modules\swagger-codegen\src\main\resources\csharp -i modules\swagger-codegen\src\test\resources\2_0\petstore.json -l csharp -o samples\client\petstore\csharp\SwaggerClient
|
||||||
|
|
||||||
java %JAVA_OPTS% -jar %executable% %ags%
|
java %JAVA_OPTS% -jar %executable% %ags%
|
||||||
|
10
bin/windows/springboot-petstore-server.bat
Normal file
10
bin/windows/springboot-petstore-server.bat
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
set executable=.\modules\swagger-codegen-cli\target\swagger-codegen-cli.jar
|
||||||
|
|
||||||
|
If Not Exist %executable% (
|
||||||
|
mvn clean package
|
||||||
|
)
|
||||||
|
|
||||||
|
set JAVA_OPTS=%JAVA_OPTS% -XX:MaxPermSize=256M -Xmx1024M -DloggerPath=conf/log4j.properties
|
||||||
|
set ags=generate -t modules\swagger-codegen\src\main\resources\JavaSpringBoot -i modules\swagger-codegen\src\test\resources\2_0\petstore.json -l springboot -o samples\server\petstore\springboot
|
||||||
|
|
||||||
|
java %JAVA_OPTS% -jar %executable% %ags%
|
10
bin/windows/typescript-fetch.bat
Executable file
10
bin/windows/typescript-fetch.bat
Executable file
@ -0,0 +1,10 @@
|
|||||||
|
set executable=.\modules\swagger-codegen-cli\target\swagger-codegen-cli.jar
|
||||||
|
|
||||||
|
If Not Exist %executable% (
|
||||||
|
mvn clean package
|
||||||
|
)
|
||||||
|
|
||||||
|
set JAVA_OPTS=%JAVA_OPTS% -XX:MaxPermSize=256M -Xmx1024M -DloggerPath=conf/log4j.properties
|
||||||
|
set ags=generate -t modules\swagger-codegen\src\main\resources\typescript-fetch -i modules\swagger-codegen\src\test\resources\2_0\petstore.json -l typescript-fetch -o samples\client\petstore\typescript-fetch
|
||||||
|
|
||||||
|
java %JAVA_OPTS% -jar %executable% %ags%
|
@ -252,8 +252,8 @@
|
|||||||
<version>${slf4j-version}</version>
|
<version>${slf4j-version}</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>commons-lang</groupId>
|
<groupId>org.apache.commons</groupId>
|
||||||
<artifactId>commons-lang</artifactId>
|
<artifactId>commons-lang3</artifactId>
|
||||||
<version>${commons-lang-version}</version>
|
<version>${commons-lang-version}</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
<dependency>
|
<dependency>
|
||||||
|
@ -89,7 +89,7 @@ public class CodegenConstants {
|
|||||||
public static final String MODEL_NAME_SUFFIX_DESC = "Suffix that will be appended to all model names. Default is the empty string.";
|
public static final String MODEL_NAME_SUFFIX_DESC = "Suffix that will be appended to all model names. Default is the empty string.";
|
||||||
|
|
||||||
public static final String OPTIONAL_EMIT_DEFAULT_VALUES = "optionalEmitDefaultValues";
|
public static final String OPTIONAL_EMIT_DEFAULT_VALUES = "optionalEmitDefaultValues";
|
||||||
public static final String OPTIONAL_EMIT_DEFAULT_VALUES_DESC = "Set DataMember's EmitDefaultValue, default false.";
|
public static final String OPTIONAL_EMIT_DEFAULT_VALUES_DESC = "Set DataMember's EmitDefaultValue.";
|
||||||
|
|
||||||
public static final String GIT_USER_ID = "gitUserId";
|
public static final String GIT_USER_ID = "gitUserId";
|
||||||
public static final String GIT_USER_ID_DESC = "Git user ID, e.g. swagger-api.";
|
public static final String GIT_USER_ID_DESC = "Git user ID, e.g. swagger-api.";
|
||||||
@ -103,4 +103,6 @@ public class CodegenConstants {
|
|||||||
public static final String HTTP_USER_AGENT = "httpUserAgent";
|
public static final String HTTP_USER_AGENT = "httpUserAgent";
|
||||||
public static final String HTTP_USER_AGENT_DESC = "HTTP user agent, e.g. codegen_csharp_api_client, default to 'Swagger-Codegen/{packageVersion}}/{language}'";
|
public static final String HTTP_USER_AGENT_DESC = "HTTP user agent, e.g. codegen_csharp_api_client, default to 'Swagger-Codegen/{packageVersion}}/{language}'";
|
||||||
|
|
||||||
|
public static final String SUPPORTS_ES6 = "supportsES6";
|
||||||
|
public static final String SUPPORTS_ES6_DESC = "Generate code that conforms to ES6.";
|
||||||
}
|
}
|
||||||
|
@ -9,8 +9,8 @@ import io.swagger.models.parameters.*;
|
|||||||
import io.swagger.models.properties.*;
|
import io.swagger.models.properties.*;
|
||||||
import io.swagger.models.properties.PropertyBuilder.PropertyId;
|
import io.swagger.models.properties.PropertyBuilder.PropertyId;
|
||||||
import io.swagger.util.Json;
|
import io.swagger.util.Json;
|
||||||
import org.apache.commons.lang.StringEscapeUtils;
|
import org.apache.commons.lang3.StringEscapeUtils;
|
||||||
import org.apache.commons.lang.StringUtils;
|
import org.apache.commons.lang3.StringUtils;
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
@ -55,6 +55,10 @@ public class DefaultCodegen {
|
|||||||
protected Boolean ensureUniqueParams = true;
|
protected Boolean ensureUniqueParams = true;
|
||||||
protected String gitUserId, gitRepoId, releaseNote;
|
protected String gitUserId, gitRepoId, releaseNote;
|
||||||
protected String httpUserAgent;
|
protected String httpUserAgent;
|
||||||
|
// How to encode special characters like $
|
||||||
|
// They are translated to words like "Dollar" and prefixed with '
|
||||||
|
// Then translated back during JSON encoding and decoding
|
||||||
|
protected Map<Character, String> specialCharReplacements = new HashMap<Character, String>();
|
||||||
|
|
||||||
public List<CliOption> cliOptions() {
|
public List<CliOption> cliOptions() {
|
||||||
return cliOptions;
|
return cliOptions;
|
||||||
@ -325,7 +329,11 @@ public class DefaultCodegen {
|
|||||||
@SuppressWarnings("static-method")
|
@SuppressWarnings("static-method")
|
||||||
public String escapeText(String input) {
|
public String escapeText(String input) {
|
||||||
if (input != null) {
|
if (input != null) {
|
||||||
return StringEscapeUtils.escapeJava(input).replace("\\/", "/");
|
// remove \t, \n, \r
|
||||||
|
// repalce \ with \\
|
||||||
|
// repalce " with \"
|
||||||
|
// outter unescape to retain the original multi-byte characters
|
||||||
|
return StringEscapeUtils.unescapeJava(StringEscapeUtils.escapeJava(input).replace("\\/", "/")).replaceAll("[\\t\\n\\r]"," ").replace("\\", "\\\\").replace("\"", "\\\"");
|
||||||
}
|
}
|
||||||
return input;
|
return input;
|
||||||
}
|
}
|
||||||
@ -728,6 +736,31 @@ public class DefaultCodegen {
|
|||||||
CodegenConstants.SORT_PARAMS_BY_REQUIRED_FLAG_DESC).defaultValue(Boolean.TRUE.toString()));
|
CodegenConstants.SORT_PARAMS_BY_REQUIRED_FLAG_DESC).defaultValue(Boolean.TRUE.toString()));
|
||||||
cliOptions.add(CliOption.newBoolean(CodegenConstants.ENSURE_UNIQUE_PARAMS, CodegenConstants
|
cliOptions.add(CliOption.newBoolean(CodegenConstants.ENSURE_UNIQUE_PARAMS, CodegenConstants
|
||||||
.ENSURE_UNIQUE_PARAMS_DESC).defaultValue(Boolean.TRUE.toString()));
|
.ENSURE_UNIQUE_PARAMS_DESC).defaultValue(Boolean.TRUE.toString()));
|
||||||
|
|
||||||
|
// initalize special character mapping
|
||||||
|
initalizeSpecialCharacterMapping();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Initalize special character mapping
|
||||||
|
*/
|
||||||
|
protected void initalizeSpecialCharacterMapping() {
|
||||||
|
// Initialize special characters
|
||||||
|
specialCharReplacements.put('$', "Dollar");
|
||||||
|
specialCharReplacements.put('^', "Caret");
|
||||||
|
specialCharReplacements.put('|', "Pipe");
|
||||||
|
specialCharReplacements.put('=', "Equal");
|
||||||
|
specialCharReplacements.put('*', "Star");
|
||||||
|
specialCharReplacements.put('-', "Minus");
|
||||||
|
specialCharReplacements.put('&', "Ampersand");
|
||||||
|
specialCharReplacements.put('%', "Percent");
|
||||||
|
specialCharReplacements.put('#', "Hash");
|
||||||
|
specialCharReplacements.put('@', "At");
|
||||||
|
specialCharReplacements.put('!', "Exclamation");
|
||||||
|
specialCharReplacements.put('+', "Plus");
|
||||||
|
specialCharReplacements.put(':', "Colon");
|
||||||
|
specialCharReplacements.put('>', "GreaterThan");
|
||||||
|
specialCharReplacements.put('<', "LessThan");
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -286,8 +286,9 @@ public class DefaultGenerator extends AbstractGenerator implements Generator {
|
|||||||
for (String templateName : config.modelTestTemplateFiles().keySet()) {
|
for (String templateName : config.modelTestTemplateFiles().keySet()) {
|
||||||
String suffix = config.modelTestTemplateFiles().get(templateName);
|
String suffix = config.modelTestTemplateFiles().get(templateName);
|
||||||
String filename = config.modelTestFileFolder() + File.separator + config.toModelTestFilename(name) + suffix;
|
String filename = config.modelTestFileFolder() + File.separator + config.toModelTestFilename(name) + suffix;
|
||||||
if (!config.shouldOverwrite(filename)) {
|
// do not overwrite test file that already exists
|
||||||
LOGGER.info("Skipped overwriting " + filename);
|
if (new File(filename).exists()) {
|
||||||
|
LOGGER.info("File exists. Skipped overwriting " + filename);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
String templateFile = getFullTemplateFile(config, templateName);
|
String templateFile = getFullTemplateFile(config, templateName);
|
||||||
@ -419,11 +420,11 @@ public class DefaultGenerator extends AbstractGenerator implements Generator {
|
|||||||
// to generate api test files
|
// to generate api test files
|
||||||
for (String templateName : config.apiTestTemplateFiles().keySet()) {
|
for (String templateName : config.apiTestTemplateFiles().keySet()) {
|
||||||
String filename = config.apiTestFilename(templateName, tag);
|
String filename = config.apiTestFilename(templateName, tag);
|
||||||
if (!config.shouldOverwrite(filename) && new File(filename).exists()) {
|
// do not overwrite test file that already exists
|
||||||
LOGGER.info("Skipped overwriting " + filename);
|
if (new File(filename).exists()) {
|
||||||
|
LOGGER.info("File exists. Skipped overwriting " + filename);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
String templateFile = getFullTemplateFile(config, templateName);
|
String templateFile = getFullTemplateFile(config, templateName);
|
||||||
String template = readTemplate(templateFile);
|
String template = readTemplate(templateFile);
|
||||||
Template tmpl = Mustache.compiler()
|
Template tmpl = Mustache.compiler()
|
||||||
|
@ -2,7 +2,7 @@ package io.swagger.codegen.languages;
|
|||||||
|
|
||||||
import io.swagger.codegen.*;
|
import io.swagger.codegen.*;
|
||||||
import io.swagger.models.properties.*;
|
import io.swagger.models.properties.*;
|
||||||
import org.apache.commons.lang.StringUtils;
|
import org.apache.commons.lang3.StringUtils;
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
@ -12,7 +12,7 @@ import java.util.*;
|
|||||||
public abstract class AbstractCSharpCodegen extends DefaultCodegen implements CodegenConfig {
|
public abstract class AbstractCSharpCodegen extends DefaultCodegen implements CodegenConfig {
|
||||||
|
|
||||||
protected boolean optionalAssemblyInfoFlag = true;
|
protected boolean optionalAssemblyInfoFlag = true;
|
||||||
protected boolean optionalProjectFileFlag = false;
|
protected boolean optionalProjectFileFlag = true;
|
||||||
protected boolean optionalEmitDefaultValue = false;
|
protected boolean optionalEmitDefaultValue = false;
|
||||||
protected boolean optionalMethodArgumentFlag = true;
|
protected boolean optionalMethodArgumentFlag = true;
|
||||||
protected boolean useDateTimeOffsetFlag = false;
|
protected boolean useDateTimeOffsetFlag = false;
|
||||||
@ -21,7 +21,12 @@ public abstract class AbstractCSharpCodegen extends DefaultCodegen implements Co
|
|||||||
|
|
||||||
protected String packageVersion = "1.0.0";
|
protected String packageVersion = "1.0.0";
|
||||||
protected String packageName = "IO.Swagger";
|
protected String packageName = "IO.Swagger";
|
||||||
protected String sourceFolder = "src" + File.separator + packageName;
|
|
||||||
|
protected String sourceFolder = "src";
|
||||||
|
|
||||||
|
// TODO: Add option for test folder output location. Nice to allow e.g. ./test instead of ./src.
|
||||||
|
// This would require updating relative paths (e.g. path to main project file in test project file)
|
||||||
|
protected String testFolder = sourceFolder;
|
||||||
|
|
||||||
protected Set<String> collectionTypes;
|
protected Set<String> collectionTypes;
|
||||||
protected Set<String> mapTypes;
|
protected Set<String> mapTypes;
|
||||||
@ -273,12 +278,12 @@ public abstract class AbstractCSharpCodegen extends DefaultCodegen implements Co
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String apiFileFolder() {
|
public String apiFileFolder() {
|
||||||
return outputFolder + File.separator + sourceFolder + File.separator + apiPackage().replace('.', File.separatorChar);
|
return outputFolder + File.separator + sourceFolder + File.separator + packageName + File.separator + apiPackage();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String modelFileFolder() {
|
public String modelFileFolder() {
|
||||||
return outputFolder + File.separator + sourceFolder + File.separator + modelPackage().replace('.', File.separatorChar);
|
return outputFolder + File.separator + sourceFolder + File.separator + packageName + File.separator + modelPackage();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -528,7 +533,6 @@ public abstract class AbstractCSharpCodegen extends DefaultCodegen implements Co
|
|||||||
return toModelName(name) + "Tests";
|
return toModelName(name) + "Tests";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public void setPackageName(String packageName) {
|
public void setPackageName(String packageName) {
|
||||||
this.packageName = packageName;
|
this.packageName = packageName;
|
||||||
}
|
}
|
||||||
@ -541,7 +545,6 @@ public abstract class AbstractCSharpCodegen extends DefaultCodegen implements Co
|
|||||||
this.sourceFolder = sourceFolder;
|
this.sourceFolder = sourceFolder;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String toEnumVarName(String name, String datatype) {
|
public String toEnumVarName(String name, String datatype) {
|
||||||
String enumName = sanitizeName(name);
|
String enumName = sanitizeName(name);
|
||||||
@ -590,4 +593,8 @@ public abstract class AbstractCSharpCodegen extends DefaultCodegen implements Co
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
public String testPackageName() {
|
||||||
|
return this.packageName + ".Test";
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -6,11 +6,12 @@ import io.swagger.models.properties.*;
|
|||||||
import java.util.*;
|
import java.util.*;
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
|
|
||||||
import org.apache.commons.lang.StringUtils;
|
import org.apache.commons.lang3.StringUtils;
|
||||||
|
|
||||||
public abstract class AbstractTypeScriptClientCodegen extends DefaultCodegen implements CodegenConfig {
|
public abstract class AbstractTypeScriptClientCodegen extends DefaultCodegen implements CodegenConfig {
|
||||||
|
|
||||||
protected String modelPropertyNaming= "camelCase";
|
protected String modelPropertyNaming= "camelCase";
|
||||||
|
protected Boolean supportsES6 = true;
|
||||||
|
|
||||||
public AbstractTypeScriptClientCodegen() {
|
public AbstractTypeScriptClientCodegen() {
|
||||||
super();
|
super();
|
||||||
@ -63,16 +64,22 @@ public abstract class AbstractTypeScriptClientCodegen extends DefaultCodegen imp
|
|||||||
typeMapping.put("UUID", "string");
|
typeMapping.put("UUID", "string");
|
||||||
|
|
||||||
cliOptions.add(new CliOption(CodegenConstants.MODEL_PROPERTY_NAMING, CodegenConstants.MODEL_PROPERTY_NAMING_DESC).defaultValue("camelCase"));
|
cliOptions.add(new CliOption(CodegenConstants.MODEL_PROPERTY_NAMING, CodegenConstants.MODEL_PROPERTY_NAMING_DESC).defaultValue("camelCase"));
|
||||||
|
cliOptions.add(new CliOption(CodegenConstants.SUPPORTS_ES6, CodegenConstants.SUPPORTS_ES6_DESC).defaultValue("false"));
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void processOpts() {
|
public void processOpts() {
|
||||||
super.processOpts();
|
super.processOpts();
|
||||||
|
|
||||||
if (additionalProperties.containsKey(CodegenConstants.MODEL_PROPERTY_NAMING)) {
|
if (additionalProperties.containsKey(CodegenConstants.MODEL_PROPERTY_NAMING)) {
|
||||||
setModelPropertyNaming((String) additionalProperties.get(CodegenConstants.MODEL_PROPERTY_NAMING));
|
setModelPropertyNaming((String) additionalProperties.get(CodegenConstants.MODEL_PROPERTY_NAMING));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (additionalProperties.containsKey(CodegenConstants.SUPPORTS_ES6)) {
|
||||||
|
setSupportsES6(Boolean.valueOf((String)additionalProperties.get(CodegenConstants.SUPPORTS_ES6)));
|
||||||
|
additionalProperties.put("supportsES6", getSupportsES6());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -286,4 +293,11 @@ public abstract class AbstractTypeScriptClientCodegen extends DefaultCodegen imp
|
|||||||
return postProcessModelsEnum(objs);
|
return postProcessModelsEnum(objs);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void setSupportsES6(Boolean value) {
|
||||||
|
supportsES6 = value;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Boolean getSupportsES6() {
|
||||||
|
return supportsES6;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -26,7 +26,7 @@ import io.swagger.models.properties.LongProperty;
|
|||||||
import io.swagger.models.properties.MapProperty;
|
import io.swagger.models.properties.MapProperty;
|
||||||
import io.swagger.models.properties.Property;
|
import io.swagger.models.properties.Property;
|
||||||
import io.swagger.models.properties.StringProperty;
|
import io.swagger.models.properties.StringProperty;
|
||||||
import org.apache.commons.lang.StringUtils;
|
import org.apache.commons.lang3.StringUtils;
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
|
@ -15,7 +15,7 @@ import java.io.File;
|
|||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.HashSet;
|
import java.util.HashSet;
|
||||||
|
|
||||||
import org.apache.commons.lang.StringUtils;
|
import org.apache.commons.lang3.StringUtils;
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
|
@ -2,7 +2,7 @@ package io.swagger.codegen.languages;
|
|||||||
|
|
||||||
import io.swagger.codegen.*;
|
import io.swagger.codegen.*;
|
||||||
import io.swagger.models.properties.*;
|
import io.swagger.models.properties.*;
|
||||||
import org.apache.commons.lang.StringUtils;
|
import org.apache.commons.lang3.StringUtils;
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
@ -11,6 +11,8 @@ import java.util.*;
|
|||||||
|
|
||||||
public class AspNet5ServerCodegen extends AbstractCSharpCodegen {
|
public class AspNet5ServerCodegen extends AbstractCSharpCodegen {
|
||||||
|
|
||||||
|
protected String sourceFolder = "src" + File.separator + packageName;
|
||||||
|
|
||||||
@SuppressWarnings("hiding")
|
@SuppressWarnings("hiding")
|
||||||
protected Logger LOGGER = LoggerFactory.getLogger(AspNet5ServerCodegen.class);
|
protected Logger LOGGER = LoggerFactory.getLogger(AspNet5ServerCodegen.class);
|
||||||
|
|
||||||
|
@ -25,8 +25,8 @@ import java.util.Map;
|
|||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Iterator;
|
import java.util.Iterator;
|
||||||
|
|
||||||
import org.apache.commons.lang.StringUtils;
|
import org.apache.commons.lang3.StringUtils;
|
||||||
import org.apache.commons.lang.WordUtils;
|
import org.apache.commons.lang3.text.WordUtils;
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
@ -68,9 +68,6 @@ public class CSharpClientCodegen extends AbstractCSharpCodegen {
|
|||||||
modelDocTemplateFiles.put("model_doc.mustache", ".md");
|
modelDocTemplateFiles.put("model_doc.mustache", ".md");
|
||||||
apiDocTemplateFiles.put("api_doc.mustache", ".md");
|
apiDocTemplateFiles.put("api_doc.mustache", ".md");
|
||||||
|
|
||||||
// C# client default
|
|
||||||
setSourceFolder("src" + File.separator + "main" + File.separator + "csharp");
|
|
||||||
|
|
||||||
cliOptions.clear();
|
cliOptions.clear();
|
||||||
|
|
||||||
// CLI options
|
// CLI options
|
||||||
@ -141,9 +138,9 @@ public class CSharpClientCodegen extends AbstractCSharpCodegen {
|
|||||||
public void processOpts() {
|
public void processOpts() {
|
||||||
super.processOpts();
|
super.processOpts();
|
||||||
|
|
||||||
apiPackage = packageName + ".Api";
|
apiPackage = "Api";
|
||||||
modelPackage = packageName + ".Model";
|
modelPackage = "Model";
|
||||||
clientPackage = packageName + ".Client";
|
clientPackage = "Client";
|
||||||
|
|
||||||
additionalProperties.put("clientPackage", clientPackage);
|
additionalProperties.put("clientPackage", clientPackage);
|
||||||
|
|
||||||
@ -157,6 +154,10 @@ public class CSharpClientCodegen extends AbstractCSharpCodegen {
|
|||||||
|
|
||||||
if (additionalProperties.containsKey(CodegenConstants.DOTNET_FRAMEWORK)) {
|
if (additionalProperties.containsKey(CodegenConstants.DOTNET_FRAMEWORK)) {
|
||||||
setTargetFramework((String) additionalProperties.get(CodegenConstants.DOTNET_FRAMEWORK));
|
setTargetFramework((String) additionalProperties.get(CodegenConstants.DOTNET_FRAMEWORK));
|
||||||
|
} else {
|
||||||
|
// Ensure default is set.
|
||||||
|
setTargetFramework(NET45);
|
||||||
|
additionalProperties.put("targetFramework", this.targetFramework);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (NET35.equals(this.targetFramework)) {
|
if (NET35.equals(this.targetFramework)) {
|
||||||
@ -201,8 +202,12 @@ public class CSharpClientCodegen extends AbstractCSharpCodegen {
|
|||||||
.get(CodegenConstants.OPTIONAL_ASSEMBLY_INFO).toString()));
|
.get(CodegenConstants.OPTIONAL_ASSEMBLY_INFO).toString()));
|
||||||
}
|
}
|
||||||
|
|
||||||
String packageFolder = sourceFolder + File.separator + packageName.replace(".", java.io.File.separator);
|
final String testPackageName = testPackageName();
|
||||||
String clientPackageDir = sourceFolder + File.separator + clientPackage.replace(".", java.io.File.separator);
|
String packageFolder = sourceFolder + File.separator + packageName;
|
||||||
|
String clientPackageDir = packageFolder + File.separator + clientPackage;
|
||||||
|
String testPackageFolder = testFolder + File.separator + testPackageName;
|
||||||
|
|
||||||
|
additionalProperties.put("testPackageName", testPackageName);
|
||||||
|
|
||||||
//Compute the relative path to the bin directory where the external assemblies live
|
//Compute the relative path to the bin directory where the external assemblies live
|
||||||
//This is necessary to properly generate the project file
|
//This is necessary to properly generate the project file
|
||||||
@ -210,7 +215,7 @@ public class CSharpClientCodegen extends AbstractCSharpCodegen {
|
|||||||
String binRelativePath = "..\\";
|
String binRelativePath = "..\\";
|
||||||
for (int i = 0; i < packageDepth; i = i + 1)
|
for (int i = 0; i < packageDepth; i = i + 1)
|
||||||
binRelativePath += "..\\";
|
binRelativePath += "..\\";
|
||||||
binRelativePath += "vendor\\";
|
binRelativePath += "vendor";
|
||||||
additionalProperties.put("binRelativePath", binRelativePath);
|
additionalProperties.put("binRelativePath", binRelativePath);
|
||||||
|
|
||||||
supportingFiles.add(new SupportingFile("Configuration.mustache",
|
supportingFiles.add(new SupportingFile("Configuration.mustache",
|
||||||
@ -222,9 +227,13 @@ public class CSharpClientCodegen extends AbstractCSharpCodegen {
|
|||||||
supportingFiles.add(new SupportingFile("ApiResponse.mustache",
|
supportingFiles.add(new SupportingFile("ApiResponse.mustache",
|
||||||
clientPackageDir, "ApiResponse.cs"));
|
clientPackageDir, "ApiResponse.cs"));
|
||||||
|
|
||||||
supportingFiles.add(new SupportingFile("compile.mustache", "", "compile.bat"));
|
supportingFiles.add(new SupportingFile("compile.mustache", "", "build.bat"));
|
||||||
supportingFiles.add(new SupportingFile("compile-mono.sh.mustache", "", "compile-mono.sh"));
|
supportingFiles.add(new SupportingFile("compile-mono.sh.mustache", "", "build.sh"));
|
||||||
supportingFiles.add(new SupportingFile("packages.config.mustache", "vendor" + java.io.File.separator, "packages.config"));
|
|
||||||
|
// copy package.config to nuget's standard location for project-level installs
|
||||||
|
supportingFiles.add(new SupportingFile("packages.config.mustache", packageFolder + File.separator, "packages.config"));
|
||||||
|
supportingFiles.add(new SupportingFile("packages_test.config.mustache", testPackageFolder + File.separator, "packages.config"));
|
||||||
|
|
||||||
supportingFiles.add(new SupportingFile("README.mustache", "", "README.md"));
|
supportingFiles.add(new SupportingFile("README.mustache", "", "README.md"));
|
||||||
supportingFiles.add(new SupportingFile("git_push.sh.mustache", "", "git_push.sh"));
|
supportingFiles.add(new SupportingFile("git_push.sh.mustache", "", "git_push.sh"));
|
||||||
supportingFiles.add(new SupportingFile("gitignore.mustache", "", ".gitignore"));
|
supportingFiles.add(new SupportingFile("gitignore.mustache", "", ".gitignore"));
|
||||||
@ -233,7 +242,14 @@ public class CSharpClientCodegen extends AbstractCSharpCodegen {
|
|||||||
supportingFiles.add(new SupportingFile("AssemblyInfo.mustache", packageFolder + File.separator + "Properties", "AssemblyInfo.cs"));
|
supportingFiles.add(new SupportingFile("AssemblyInfo.mustache", packageFolder + File.separator + "Properties", "AssemblyInfo.cs"));
|
||||||
}
|
}
|
||||||
if (optionalProjectFileFlag) {
|
if (optionalProjectFileFlag) {
|
||||||
supportingFiles.add(new SupportingFile("Project.mustache", packageFolder, clientPackage + ".csproj"));
|
supportingFiles.add(new SupportingFile("Solution.mustache", "", packageName + ".sln"));
|
||||||
|
supportingFiles.add(new SupportingFile("Project.mustache", packageFolder, packageName + ".csproj"));
|
||||||
|
|
||||||
|
// TODO: Check if test project output is enabled, partially related to #2506. Should have options for:
|
||||||
|
// 1) No test project
|
||||||
|
// 2) No model tests
|
||||||
|
// 3) No api tests
|
||||||
|
supportingFiles.add(new SupportingFile("TestProject.mustache", testPackageFolder, testPackageName + ".csproj"));
|
||||||
}
|
}
|
||||||
|
|
||||||
additionalProperties.put("apiDocPath", apiDocPath);
|
additionalProperties.put("apiDocPath", apiDocPath);
|
||||||
@ -439,4 +455,13 @@ public class CSharpClientCodegen extends AbstractCSharpCodegen {
|
|||||||
return (outputFolder + "/" + modelDocPath).replace('/', File.separatorChar);
|
return (outputFolder + "/" + modelDocPath).replace('/', File.separatorChar);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String apiTestFileFolder() {
|
||||||
|
return outputFolder + File.separator + testFolder + File.separator + testPackageName() + File.separator + apiPackage();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String modelTestFileFolder() {
|
||||||
|
return outputFolder + File.separator + testFolder + File.separator + testPackageName() + File.separator + modelPackage();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -11,7 +11,7 @@ import io.swagger.models.Contact;
|
|||||||
import io.swagger.models.Info;
|
import io.swagger.models.Info;
|
||||||
import io.swagger.models.License;
|
import io.swagger.models.License;
|
||||||
import io.swagger.models.Swagger;
|
import io.swagger.models.Swagger;
|
||||||
import org.apache.commons.lang.StringUtils;
|
import org.apache.commons.lang3.StringUtils;
|
||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
@ -17,7 +17,7 @@ import io.swagger.models.properties.LongProperty;
|
|||||||
import io.swagger.models.properties.MapProperty;
|
import io.swagger.models.properties.MapProperty;
|
||||||
import io.swagger.models.properties.Property;
|
import io.swagger.models.properties.Property;
|
||||||
import io.swagger.models.properties.StringProperty;
|
import io.swagger.models.properties.StringProperty;
|
||||||
import org.apache.commons.lang.StringUtils;
|
import org.apache.commons.lang3.StringUtils;
|
||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
|
@ -9,7 +9,7 @@ import io.swagger.models.parameters.Parameter;
|
|||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
|
|
||||||
import org.apache.commons.lang.StringUtils;
|
import org.apache.commons.lang3.StringUtils;
|
||||||
|
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
@ -450,4 +450,4 @@ public class GoClientCodegen extends DefaultCodegen implements CodegenConfig {
|
|||||||
public void setPackageVersion(String packageVersion) {
|
public void setPackageVersion(String packageVersion) {
|
||||||
this.packageVersion = packageVersion;
|
this.packageVersion = packageVersion;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -18,12 +18,6 @@ public class HaskellServantCodegen extends DefaultCodegen implements CodegenConf
|
|||||||
protected String sourceFolder = "src";
|
protected String sourceFolder = "src";
|
||||||
protected String apiVersion = "0.0.1";
|
protected String apiVersion = "0.0.1";
|
||||||
|
|
||||||
|
|
||||||
// How to encode special characters like $
|
|
||||||
// They are translated to words like "Dollar" and prefixed with '
|
|
||||||
// Then translated back during JSON encoding and decoding
|
|
||||||
private Map<Character, String> specialCharReplacements = new HashMap<Character, String>();
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Configures the type of generator.
|
* Configures the type of generator.
|
||||||
*
|
*
|
||||||
@ -57,20 +51,8 @@ public class HaskellServantCodegen extends DefaultCodegen implements CodegenConf
|
|||||||
public HaskellServantCodegen() {
|
public HaskellServantCodegen() {
|
||||||
super();
|
super();
|
||||||
|
|
||||||
// Initialize special characters
|
// override the mapping for "-" (Minus) to keep the original mapping in Haskell
|
||||||
specialCharReplacements.put('$', "Dollar");
|
|
||||||
specialCharReplacements.put('^', "Caret");
|
|
||||||
specialCharReplacements.put('|', "Pipe");
|
|
||||||
specialCharReplacements.put('=', "Equal");
|
|
||||||
specialCharReplacements.put('*', "Star");
|
|
||||||
specialCharReplacements.put('-', "Dash");
|
specialCharReplacements.put('-', "Dash");
|
||||||
specialCharReplacements.put('&', "Ampersand");
|
|
||||||
specialCharReplacements.put('%', "Percent");
|
|
||||||
specialCharReplacements.put('#', "Hash");
|
|
||||||
specialCharReplacements.put('@', "At");
|
|
||||||
specialCharReplacements.put('!', "Exclamation");
|
|
||||||
specialCharReplacements.put('+', "Plus");
|
|
||||||
|
|
||||||
|
|
||||||
// set the output folder here
|
// set the output folder here
|
||||||
outputFolder = "generated-code/haskell-servant";
|
outputFolder = "generated-code/haskell-servant";
|
||||||
|
@ -183,4 +183,4 @@ public class JMeterCodegen extends DefaultCodegen implements CodegenConfig {
|
|||||||
type = swaggerType;
|
type = swaggerType;
|
||||||
return toModelName(type);
|
return toModelName(type);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -9,9 +9,9 @@ import io.swagger.models.Swagger;
|
|||||||
import io.swagger.models.parameters.FormParameter;
|
import io.swagger.models.parameters.FormParameter;
|
||||||
import io.swagger.models.parameters.Parameter;
|
import io.swagger.models.parameters.Parameter;
|
||||||
import io.swagger.models.properties.*;
|
import io.swagger.models.properties.*;
|
||||||
import org.apache.commons.lang.BooleanUtils;
|
import org.apache.commons.lang3.BooleanUtils;
|
||||||
import org.apache.commons.lang.StringUtils;
|
import org.apache.commons.lang3.StringUtils;
|
||||||
import org.apache.commons.lang.WordUtils;
|
//import org.apache.commons.lang3.WordUtils;
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
|
@ -4,7 +4,7 @@ import io.swagger.codegen.*;
|
|||||||
import io.swagger.models.Operation;
|
import io.swagger.models.Operation;
|
||||||
import io.swagger.models.Path;
|
import io.swagger.models.Path;
|
||||||
import io.swagger.models.Swagger;
|
import io.swagger.models.Swagger;
|
||||||
import org.apache.commons.lang.StringUtils;
|
import org.apache.commons.lang3.StringUtils;
|
||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
|
@ -33,7 +33,7 @@ import io.swagger.models.properties.Property;
|
|||||||
import io.swagger.models.properties.RefProperty;
|
import io.swagger.models.properties.RefProperty;
|
||||||
import io.swagger.models.properties.StringProperty;
|
import io.swagger.models.properties.StringProperty;
|
||||||
|
|
||||||
import org.apache.commons.lang.StringUtils;
|
import org.apache.commons.lang3.StringUtils;
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
@ -839,6 +839,7 @@ public class JavascriptClientCodegen extends DefaultCodegen implements CodegenCo
|
|||||||
@SuppressWarnings("unchecked")
|
@SuppressWarnings("unchecked")
|
||||||
@Override
|
@Override
|
||||||
public Map<String, Object> postProcessModels(Map<String, Object> objs) {
|
public Map<String, Object> postProcessModels(Map<String, Object> objs) {
|
||||||
|
objs = super.postProcessModelsEnum(objs);
|
||||||
List<Object> models = (List<Object>) objs.get("models");
|
List<Object> models = (List<Object>) objs.get("models");
|
||||||
for (Object _mo : models) {
|
for (Object _mo : models) {
|
||||||
Map<String, Object> mo = (Map<String, Object>) _mo;
|
Map<String, Object> mo = (Map<String, Object>) _mo;
|
||||||
@ -853,8 +854,6 @@ public class JavascriptClientCodegen extends DefaultCodegen implements CodegenCo
|
|||||||
cm.vendorExtensions.put("x-all-required", allRequired);
|
cm.vendorExtensions.put("x-all-required", allRequired);
|
||||||
|
|
||||||
for (CodegenProperty var : cm.vars) {
|
for (CodegenProperty var : cm.vars) {
|
||||||
Map<String, Object> allowableValues = var.allowableValues;
|
|
||||||
|
|
||||||
// Add JSDoc @type value for this property.
|
// Add JSDoc @type value for this property.
|
||||||
String jsDocType = getJSDocTypeWithBraces(cm, var);
|
String jsDocType = getJSDocTypeWithBraces(cm, var);
|
||||||
var.vendorExtensions.put("x-jsdoc-type", jsDocType);
|
var.vendorExtensions.put("x-jsdoc-type", jsDocType);
|
||||||
@ -862,40 +861,6 @@ public class JavascriptClientCodegen extends DefaultCodegen implements CodegenCo
|
|||||||
if (Boolean.TRUE.equals(var.required)) {
|
if (Boolean.TRUE.equals(var.required)) {
|
||||||
required.add(var.name);
|
required.add(var.name);
|
||||||
}
|
}
|
||||||
|
|
||||||
// handle ArrayProperty
|
|
||||||
if (var.items != null) {
|
|
||||||
allowableValues = var.items.allowableValues;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (allowableValues == null) {
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
List<Object> values = (List<Object>) allowableValues.get("values");
|
|
||||||
if (values == null) {
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
// put "enumVars" map into `allowableValues", including `name` and `value`
|
|
||||||
List<Map<String, String>> enumVars = new ArrayList<Map<String, String>>();
|
|
||||||
String commonPrefix = findCommonPrefixOfVars(values);
|
|
||||||
int truncateIdx = commonPrefix.length();
|
|
||||||
for (Object value : values) {
|
|
||||||
Map<String, String> enumVar = new HashMap<String, String>();
|
|
||||||
String enumName;
|
|
||||||
if (truncateIdx == 0) {
|
|
||||||
enumName = value.toString();
|
|
||||||
} else {
|
|
||||||
enumName = value.toString().substring(truncateIdx);
|
|
||||||
if ("".equals(enumName)) {
|
|
||||||
enumName = value.toString();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
enumVar.put("name", toEnumVarName(enumName, var.datatype));
|
|
||||||
enumVar.put("value",toEnumValue(value.toString(), var.datatype));
|
|
||||||
enumVars.add(enumVar);
|
|
||||||
}
|
|
||||||
allowableValues.put("enumVars", enumVars);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (supportsInheritance) {
|
if (supportsInheritance) {
|
||||||
|
@ -8,7 +8,7 @@ import java.util.TreeSet;
|
|||||||
import java.util.*;
|
import java.util.*;
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
|
|
||||||
import org.apache.commons.lang.StringUtils;
|
import org.apache.commons.lang3.StringUtils;
|
||||||
|
|
||||||
public class JavascriptClosureAngularClientCodegen extends DefaultCodegen implements CodegenConfig {
|
public class JavascriptClosureAngularClientCodegen extends DefaultCodegen implements CodegenConfig {
|
||||||
public JavascriptClosureAngularClientCodegen() {
|
public JavascriptClosureAngularClientCodegen() {
|
||||||
|
@ -232,4 +232,4 @@ public class LumenServerCodegen extends DefaultCodegen implements CodegenConfig
|
|||||||
type = swaggerType;
|
type = swaggerType;
|
||||||
return toModelName(type);
|
return toModelName(type);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -19,7 +19,7 @@ import java.util.List;
|
|||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
|
|
||||||
import org.apache.commons.lang.StringUtils;
|
import org.apache.commons.lang3.StringUtils;
|
||||||
|
|
||||||
public class ObjcClientCodegen extends DefaultCodegen implements CodegenConfig {
|
public class ObjcClientCodegen extends DefaultCodegen implements CodegenConfig {
|
||||||
public static final String CLASS_PREFIX = "classPrefix";
|
public static final String CLASS_PREFIX = "classPrefix";
|
||||||
@ -28,6 +28,9 @@ public class ObjcClientCodegen extends DefaultCodegen implements CodegenConfig {
|
|||||||
public static final String AUTHOR_EMAIL = "authorEmail";
|
public static final String AUTHOR_EMAIL = "authorEmail";
|
||||||
public static final String GIT_REPO_URL = "gitRepoURL";
|
public static final String GIT_REPO_URL = "gitRepoURL";
|
||||||
public static final String LICENSE = "license";
|
public static final String LICENSE = "license";
|
||||||
|
|
||||||
|
public static final String BinaryDataType = "ObjcClientCodegenBinaryData";
|
||||||
|
|
||||||
protected Set<String> foundationClasses = new HashSet<String>();
|
protected Set<String> foundationClasses = new HashSet<String>();
|
||||||
protected String podName = "SwaggerClient";
|
protected String podName = "SwaggerClient";
|
||||||
protected String podVersion = "1.0.0";
|
protected String podVersion = "1.0.0";
|
||||||
@ -39,6 +42,8 @@ public class ObjcClientCodegen extends DefaultCodegen implements CodegenConfig {
|
|||||||
protected String[] specialWords = {"new", "copy"};
|
protected String[] specialWords = {"new", "copy"};
|
||||||
protected String apiDocPath = "docs/";
|
protected String apiDocPath = "docs/";
|
||||||
protected String modelDocPath = "docs/";
|
protected String modelDocPath = "docs/";
|
||||||
|
|
||||||
|
protected Set<String> advancedMapingTypes = new HashSet<String>();
|
||||||
|
|
||||||
public ObjcClientCodegen() {
|
public ObjcClientCodegen() {
|
||||||
super();
|
super();
|
||||||
@ -66,6 +71,18 @@ public class ObjcClientCodegen extends DefaultCodegen implements CodegenConfig {
|
|||||||
defaultIncludes.add("NSMutableArray");
|
defaultIncludes.add("NSMutableArray");
|
||||||
defaultIncludes.add("NSMutableDictionary");
|
defaultIncludes.add("NSMutableDictionary");
|
||||||
|
|
||||||
|
defaultIncludes.add(BinaryDataType);
|
||||||
|
|
||||||
|
advancedMapingTypes.add("NSDictionary");
|
||||||
|
advancedMapingTypes.add("NSArray");
|
||||||
|
advancedMapingTypes.add("NSMutableArray");
|
||||||
|
advancedMapingTypes.add("NSMutableDictionary");
|
||||||
|
advancedMapingTypes.add("NSObject");
|
||||||
|
advancedMapingTypes.add("NSNumber");
|
||||||
|
advancedMapingTypes.add("NSURL");
|
||||||
|
advancedMapingTypes.add("NSString");
|
||||||
|
advancedMapingTypes.add("NSDate");
|
||||||
|
|
||||||
languageSpecificPrimitives.clear();
|
languageSpecificPrimitives.clear();
|
||||||
languageSpecificPrimitives.add("NSNumber");
|
languageSpecificPrimitives.add("NSNumber");
|
||||||
languageSpecificPrimitives.add("NSString");
|
languageSpecificPrimitives.add("NSString");
|
||||||
@ -92,10 +109,8 @@ public class ObjcClientCodegen extends DefaultCodegen implements CodegenConfig {
|
|||||||
typeMapping.put("List", "NSArray");
|
typeMapping.put("List", "NSArray");
|
||||||
typeMapping.put("object", "NSObject");
|
typeMapping.put("object", "NSObject");
|
||||||
typeMapping.put("file", "NSURL");
|
typeMapping.put("file", "NSURL");
|
||||||
//TODO binary should be mapped to byte array
|
typeMapping.put("binary", BinaryDataType);
|
||||||
// mapped to String as a workaround
|
typeMapping.put("ByteArray", BinaryDataType);
|
||||||
typeMapping.put("binary", "NSString");
|
|
||||||
typeMapping.put("ByteArray", "NSString");
|
|
||||||
|
|
||||||
// ref: http://www.tutorialspoint.com/objective_c/objective_c_basic_syntax.htm
|
// ref: http://www.tutorialspoint.com/objective_c/objective_c_basic_syntax.htm
|
||||||
setReservedWordsLowerCase(
|
setReservedWordsLowerCase(
|
||||||
@ -223,6 +238,10 @@ public class ObjcClientCodegen extends DefaultCodegen implements CodegenConfig {
|
|||||||
supportingFiles.add(new SupportingFile("JSONResponseSerializer-body.mustache", swaggerFolder, classPrefix + "JSONResponseSerializer.m"));
|
supportingFiles.add(new SupportingFile("JSONResponseSerializer-body.mustache", swaggerFolder, classPrefix + "JSONResponseSerializer.m"));
|
||||||
supportingFiles.add(new SupportingFile("JSONRequestSerializer-body.mustache", swaggerFolder, classPrefix + "JSONRequestSerializer.m"));
|
supportingFiles.add(new SupportingFile("JSONRequestSerializer-body.mustache", swaggerFolder, classPrefix + "JSONRequestSerializer.m"));
|
||||||
supportingFiles.add(new SupportingFile("JSONRequestSerializer-header.mustache", swaggerFolder, classPrefix + "JSONRequestSerializer.h"));
|
supportingFiles.add(new SupportingFile("JSONRequestSerializer-header.mustache", swaggerFolder, classPrefix + "JSONRequestSerializer.h"));
|
||||||
|
supportingFiles.add(new SupportingFile("ResponseDeserializer-body.mustache", swaggerFolder, classPrefix + "ResponseDeserializer.m"));
|
||||||
|
supportingFiles.add(new SupportingFile("ResponseDeserializer-header.mustache", swaggerFolder, classPrefix + "ResponseDeserializer.h"));
|
||||||
|
supportingFiles.add(new SupportingFile("Sanitizer-body.mustache", swaggerFolder, classPrefix + "Sanitizer.m"));
|
||||||
|
supportingFiles.add(new SupportingFile("Sanitizer-header.mustache", swaggerFolder, classPrefix + "Sanitizer.h"));
|
||||||
supportingFiles.add(new SupportingFile("JSONValueTransformer+ISO8601.m", swaggerFolder, "JSONValueTransformer+ISO8601.m"));
|
supportingFiles.add(new SupportingFile("JSONValueTransformer+ISO8601.m", swaggerFolder, "JSONValueTransformer+ISO8601.m"));
|
||||||
supportingFiles.add(new SupportingFile("JSONValueTransformer+ISO8601.h", swaggerFolder, "JSONValueTransformer+ISO8601.h"));
|
supportingFiles.add(new SupportingFile("JSONValueTransformer+ISO8601.h", swaggerFolder, "JSONValueTransformer+ISO8601.h"));
|
||||||
supportingFiles.add(new SupportingFile("Configuration-body.mustache", swaggerFolder, classPrefix + "Configuration.m"));
|
supportingFiles.add(new SupportingFile("Configuration-body.mustache", swaggerFolder, classPrefix + "Configuration.m"));
|
||||||
@ -278,19 +297,26 @@ public class ObjcClientCodegen extends DefaultCodegen implements CodegenConfig {
|
|||||||
String innerType = getSwaggerType(inner);
|
String innerType = getSwaggerType(inner);
|
||||||
|
|
||||||
String innerTypeDeclaration = getTypeDeclaration(inner);
|
String innerTypeDeclaration = getTypeDeclaration(inner);
|
||||||
|
|
||||||
if (innerTypeDeclaration.endsWith("*")) {
|
if (innerTypeDeclaration.endsWith("*")) {
|
||||||
innerTypeDeclaration = innerTypeDeclaration.substring(0, innerTypeDeclaration.length() - 1);
|
innerTypeDeclaration = innerTypeDeclaration.substring(0, innerTypeDeclaration.length() - 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if(innerTypeDeclaration.equalsIgnoreCase(BinaryDataType)) {
|
||||||
|
return "NSData*";
|
||||||
|
}
|
||||||
// In this codition, type of property p is array of primitive,
|
// In this codition, type of property p is array of primitive,
|
||||||
// return container type with pointer, e.g. `NSArray* /* NSString */'
|
// return container type with pointer, e.g. `NSArray*<NSString*>*'
|
||||||
if (languageSpecificPrimitives.contains(innerType)) {
|
if (languageSpecificPrimitives.contains(innerTypeDeclaration)) {
|
||||||
return getSwaggerType(p) + "*" + " /* " + innerTypeDeclaration + " */";
|
return getSwaggerType(p) + "<" + innerTypeDeclaration + "*>*";
|
||||||
}
|
}
|
||||||
// In this codition, type of property p is array of model,
|
// In this codition, type of property p is array of model,
|
||||||
// return container type combine inner type with pointer, e.g. `NSArray<SWGTag>*'
|
// return container type combine inner type with pointer, e.g. `NSArray<SWGTag>*'
|
||||||
else {
|
else {
|
||||||
|
for (String sd : advancedMapingTypes) {
|
||||||
|
if(innerTypeDeclaration.startsWith(sd)) {
|
||||||
|
return getSwaggerType(p) + "<" + innerTypeDeclaration + "*>*";
|
||||||
|
}
|
||||||
|
}
|
||||||
return getSwaggerType(p) + "<" + innerTypeDeclaration + ">*";
|
return getSwaggerType(p) + "<" + innerTypeDeclaration + ">*";
|
||||||
}
|
}
|
||||||
} else if (p instanceof MapProperty) {
|
} else if (p instanceof MapProperty) {
|
||||||
@ -298,11 +324,20 @@ public class ObjcClientCodegen extends DefaultCodegen implements CodegenConfig {
|
|||||||
Property inner = mp.getAdditionalProperties();
|
Property inner = mp.getAdditionalProperties();
|
||||||
|
|
||||||
String innerTypeDeclaration = getTypeDeclaration(inner);
|
String innerTypeDeclaration = getTypeDeclaration(inner);
|
||||||
|
|
||||||
if (innerTypeDeclaration.endsWith("*")) {
|
if (innerTypeDeclaration.endsWith("*")) {
|
||||||
innerTypeDeclaration = innerTypeDeclaration.substring(0, innerTypeDeclaration.length() - 1);
|
innerTypeDeclaration = innerTypeDeclaration.substring(0, innerTypeDeclaration.length() - 1);
|
||||||
}
|
}
|
||||||
return getSwaggerType(p) + "* /* NSString, " + innerTypeDeclaration + " */";
|
if (languageSpecificPrimitives.contains(innerTypeDeclaration)) {
|
||||||
|
return getSwaggerType(p) + "<NSString*, " + innerTypeDeclaration + "*>*";
|
||||||
|
} else {
|
||||||
|
for (String s : advancedMapingTypes) {
|
||||||
|
if(innerTypeDeclaration.startsWith(s)) {
|
||||||
|
return getSwaggerType(p) + "<NSString*, " + innerTypeDeclaration + "*>*";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return getSwaggerType(p) + "<NSString*, " + innerTypeDeclaration + ">*";
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
String swaggerType = getSwaggerType(p);
|
String swaggerType = getSwaggerType(p);
|
||||||
|
|
||||||
|
@ -27,7 +27,7 @@ import java.util.Arrays;
|
|||||||
import java.util.HashSet;
|
import java.util.HashSet;
|
||||||
import java.util.regex.Matcher;
|
import java.util.regex.Matcher;
|
||||||
|
|
||||||
import org.apache.commons.lang.StringUtils;
|
import org.apache.commons.lang3.StringUtils;
|
||||||
|
|
||||||
public class PerlClientCodegen extends DefaultCodegen implements CodegenConfig {
|
public class PerlClientCodegen extends DefaultCodegen implements CodegenConfig {
|
||||||
public static final String MODULE_NAME = "moduleName";
|
public static final String MODULE_NAME = "moduleName";
|
||||||
|
@ -37,9 +37,13 @@ public class PhpClientCodegen extends DefaultCodegen implements CodegenConfig {
|
|||||||
protected String packagePath = "SwaggerClient-php";
|
protected String packagePath = "SwaggerClient-php";
|
||||||
protected String artifactVersion = "1.0.0";
|
protected String artifactVersion = "1.0.0";
|
||||||
protected String srcBasePath = "lib";
|
protected String srcBasePath = "lib";
|
||||||
|
protected String testBasePath = "test";
|
||||||
|
protected String docsBasePath = "docs";
|
||||||
|
protected String apiDirName = "Api";
|
||||||
|
protected String modelDirName = "Model";
|
||||||
protected String variableNamingConvention= "snake_case";
|
protected String variableNamingConvention= "snake_case";
|
||||||
protected String apiDocPath = "docs/";
|
protected String apiDocPath = docsBasePath + "/" + apiDirName;
|
||||||
protected String modelDocPath = "docs/";
|
protected String modelDocPath = docsBasePath + "/" + modelDirName;
|
||||||
|
|
||||||
public PhpClientCodegen() {
|
public PhpClientCodegen() {
|
||||||
super();
|
super();
|
||||||
@ -51,9 +55,8 @@ public class PhpClientCodegen extends DefaultCodegen implements CodegenConfig {
|
|||||||
modelTestTemplateFiles.put("model_test.mustache", ".php");
|
modelTestTemplateFiles.put("model_test.mustache", ".php");
|
||||||
apiTestTemplateFiles.put("api_test.mustache", ".php");
|
apiTestTemplateFiles.put("api_test.mustache", ".php");
|
||||||
embeddedTemplateDir = templateDir = "php";
|
embeddedTemplateDir = templateDir = "php";
|
||||||
apiPackage = invokerPackage + "\\Api";
|
apiPackage = invokerPackage + "\\" + apiDirName;
|
||||||
modelPackage = invokerPackage + "\\Model";
|
modelPackage = invokerPackage + "\\" + modelDirName;
|
||||||
testPackage = invokerPackage + "\\Tests";
|
|
||||||
|
|
||||||
modelDocTemplateFiles.put("model_doc.mustache", ".md");
|
modelDocTemplateFiles.put("model_doc.mustache", ".md");
|
||||||
apiDocTemplateFiles.put("api_doc.mustache", ".md");
|
apiDocTemplateFiles.put("api_doc.mustache", ".md");
|
||||||
@ -233,6 +236,9 @@ public class PhpClientCodegen extends DefaultCodegen implements CodegenConfig {
|
|||||||
additionalProperties.put("apiDocPath", apiDocPath);
|
additionalProperties.put("apiDocPath", apiDocPath);
|
||||||
additionalProperties.put("modelDocPath", modelDocPath);
|
additionalProperties.put("modelDocPath", modelDocPath);
|
||||||
|
|
||||||
|
// make test path available in mustache template
|
||||||
|
additionalProperties.put("testBasePath", testBasePath);
|
||||||
|
|
||||||
supportingFiles.add(new SupportingFile("configuration.mustache", toPackagePath(invokerPackage, srcBasePath), "Configuration.php"));
|
supportingFiles.add(new SupportingFile("configuration.mustache", toPackagePath(invokerPackage, srcBasePath), "Configuration.php"));
|
||||||
supportingFiles.add(new SupportingFile("ApiClient.mustache", toPackagePath(invokerPackage, srcBasePath), "ApiClient.php"));
|
supportingFiles.add(new SupportingFile("ApiClient.mustache", toPackagePath(invokerPackage, srcBasePath), "ApiClient.php"));
|
||||||
supportingFiles.add(new SupportingFile("ApiException.mustache", toPackagePath(invokerPackage, srcBasePath), "ApiException.php"));
|
supportingFiles.add(new SupportingFile("ApiException.mustache", toPackagePath(invokerPackage, srcBasePath), "ApiException.php"));
|
||||||
@ -262,23 +268,21 @@ public class PhpClientCodegen extends DefaultCodegen implements CodegenConfig {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String apiTestFileFolder() {
|
public String apiTestFileFolder() {
|
||||||
return (outputFolder + "/" + toPackagePath(testPackage, srcBasePath));
|
return (outputFolder + "/" + getPackagePath() + "/" + testBasePath + "/" + apiDirName);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String modelTestFileFolder() {
|
public String modelTestFileFolder() {
|
||||||
return (outputFolder + "/" + toPackagePath(testPackage, srcBasePath));
|
return (outputFolder + "/" + getPackagePath() + "/" + testBasePath + "/" + modelDirName);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String apiDocFileFolder() {
|
public String apiDocFileFolder() {
|
||||||
//return (outputFolder + "/" + apiDocPath).replace('/', File.separatorChar);
|
|
||||||
return (outputFolder + "/" + getPackagePath() + "/" + apiDocPath);
|
return (outputFolder + "/" + getPackagePath() + "/" + apiDocPath);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String modelDocFileFolder() {
|
public String modelDocFileFolder() {
|
||||||
//return (outputFolder + "/" + modelDocPath).replace('/', File.separatorChar);
|
|
||||||
return (outputFolder + "/" + getPackagePath() + "/" + modelDocPath);
|
return (outputFolder + "/" + getPackagePath() + "/" + modelDocPath);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -3,17 +3,23 @@ package io.swagger.codegen.languages;
|
|||||||
import io.swagger.codegen.CliOption;
|
import io.swagger.codegen.CliOption;
|
||||||
import io.swagger.codegen.CodegenConfig;
|
import io.swagger.codegen.CodegenConfig;
|
||||||
import io.swagger.codegen.CodegenConstants;
|
import io.swagger.codegen.CodegenConstants;
|
||||||
|
import io.swagger.codegen.CodegenModel;
|
||||||
import io.swagger.codegen.CodegenParameter;
|
import io.swagger.codegen.CodegenParameter;
|
||||||
|
import io.swagger.codegen.CodegenProperty;
|
||||||
import io.swagger.codegen.CodegenType;
|
import io.swagger.codegen.CodegenType;
|
||||||
import io.swagger.codegen.DefaultCodegen;
|
import io.swagger.codegen.DefaultCodegen;
|
||||||
import io.swagger.codegen.SupportingFile;
|
import io.swagger.codegen.SupportingFile;
|
||||||
import io.swagger.models.properties.*;
|
import io.swagger.models.properties.*;
|
||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
|
import java.util.ArrayList;
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
|
import java.util.HashMap;
|
||||||
import java.util.HashSet;
|
import java.util.HashSet;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
import org.apache.commons.lang.StringUtils;
|
import org.apache.commons.lang3.StringUtils;
|
||||||
|
|
||||||
public class PythonClientCodegen extends DefaultCodegen implements CodegenConfig {
|
public class PythonClientCodegen extends DefaultCodegen implements CodegenConfig {
|
||||||
protected String packageName;
|
protected String packageName;
|
||||||
@ -21,6 +27,8 @@ public class PythonClientCodegen extends DefaultCodegen implements CodegenConfig
|
|||||||
protected String apiDocPath = "docs/";
|
protected String apiDocPath = "docs/";
|
||||||
protected String modelDocPath = "docs/";
|
protected String modelDocPath = "docs/";
|
||||||
|
|
||||||
|
protected Map<Character, String> regexModifiers;
|
||||||
|
|
||||||
private String testFolder;
|
private String testFolder;
|
||||||
|
|
||||||
public PythonClientCodegen() {
|
public PythonClientCodegen() {
|
||||||
@ -87,6 +95,14 @@ public class PythonClientCodegen extends DefaultCodegen implements CodegenConfig
|
|||||||
"assert", "else", "if", "pass", "yield", "break", "except", "import",
|
"assert", "else", "if", "pass", "yield", "break", "except", "import",
|
||||||
"print", "class", "exec", "in", "raise", "continue", "finally", "is",
|
"print", "class", "exec", "in", "raise", "continue", "finally", "is",
|
||||||
"return", "def", "for", "lambda", "try", "self"));
|
"return", "def", "for", "lambda", "try", "self"));
|
||||||
|
|
||||||
|
regexModifiers = new HashMap<Character, String>();
|
||||||
|
regexModifiers.put('i', "IGNORECASE");
|
||||||
|
regexModifiers.put('l', "LOCALE");
|
||||||
|
regexModifiers.put('m', "MULTILINE");
|
||||||
|
regexModifiers.put('s', "DOTALL");
|
||||||
|
regexModifiers.put('u', "UNICODE");
|
||||||
|
regexModifiers.put('x', "VERBOSE");
|
||||||
|
|
||||||
cliOptions.clear();
|
cliOptions.clear();
|
||||||
cliOptions.add(new CliOption(CodegenConstants.PACKAGE_NAME, "python package name (convention: snake_case).")
|
cliOptions.add(new CliOption(CodegenConstants.PACKAGE_NAME, "python package name (convention: snake_case).")
|
||||||
@ -143,6 +159,46 @@ public class PythonClientCodegen extends DefaultCodegen implements CodegenConfig
|
|||||||
private static String dropDots(String str) {
|
private static String dropDots(String str) {
|
||||||
return str.replaceAll("\\.", "_");
|
return str.replaceAll("\\.", "_");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void postProcessParameter(CodegenParameter parameter){
|
||||||
|
postProcessPattern(parameter.pattern, parameter.vendorExtensions);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void postProcessModelProperty(CodegenModel model, CodegenProperty property) {
|
||||||
|
postProcessPattern(property.pattern, property.vendorExtensions);
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* The swagger pattern spec follows the Perl convention and style of modifiers. Python
|
||||||
|
* does not support this in as natural a way so it needs to convert it. See
|
||||||
|
* https://docs.python.org/2/howto/regex.html#compilation-flags for details.
|
||||||
|
*/
|
||||||
|
public void postProcessPattern(String pattern, Map<String, Object> vendorExtensions){
|
||||||
|
if(pattern != null) {
|
||||||
|
int i = pattern.lastIndexOf('/');
|
||||||
|
|
||||||
|
//Must follow Perl /pattern/modifiers convention
|
||||||
|
if(pattern.charAt(0) != '/' || i < 2) {
|
||||||
|
throw new IllegalArgumentException("Pattern must follow the Perl "
|
||||||
|
+ "/pattern/modifiers convention. "+pattern+" is not valid.");
|
||||||
|
}
|
||||||
|
|
||||||
|
String regex = pattern.substring(1, i).replace("'", "\'");
|
||||||
|
List<String> modifiers = new ArrayList<String>();
|
||||||
|
|
||||||
|
for(char c : pattern.substring(i).toCharArray()) {
|
||||||
|
if(regexModifiers.containsKey(c)) {
|
||||||
|
String modifier = regexModifiers.get(c);
|
||||||
|
modifiers.add(modifier);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
vendorExtensions.put("x-regex", regex);
|
||||||
|
vendorExtensions.put("x-modifiers", modifiers);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public CodegenType getTag() {
|
public CodegenType getTag() {
|
||||||
|
@ -19,7 +19,7 @@ import java.util.HashSet;
|
|||||||
import java.util.Iterator;
|
import java.util.Iterator;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
import org.apache.commons.lang.StringUtils;
|
import org.apache.commons.lang3.StringUtils;
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
@ -224,6 +224,12 @@ public class RubyClientCodegen extends DefaultCodegen implements CodegenConfig {
|
|||||||
supportingFiles.add(new SupportingFile("README.mustache", "", "README.md"));
|
supportingFiles.add(new SupportingFile("README.mustache", "", "README.md"));
|
||||||
supportingFiles.add(new SupportingFile("git_push.sh.mustache", "", "git_push.sh"));
|
supportingFiles.add(new SupportingFile("git_push.sh.mustache", "", "git_push.sh"));
|
||||||
supportingFiles.add(new SupportingFile("gitignore.mustache", "", ".gitignore"));
|
supportingFiles.add(new SupportingFile("gitignore.mustache", "", ".gitignore"));
|
||||||
|
writeOptional(outputFolder, new SupportingFile("rspec.mustache", "", ".rspec"));
|
||||||
|
writeOptional(outputFolder, new SupportingFile("spec_helper.mustache", specFolder, "spec_helper.rb"));
|
||||||
|
writeOptional(outputFolder, new SupportingFile("configuration_spec.mustache", specFolder, "configuration_spec.rb"));
|
||||||
|
writeOptional(outputFolder, new SupportingFile("api_client_spec.mustache", specFolder, "api_client_spec.rb"));
|
||||||
|
// not including base object test as the moment as not all API has model
|
||||||
|
//writeOptional(outputFolder, new SupportingFile("base_object_spec.mustache", specFolder, "base_object_spec.rb"));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -644,10 +650,11 @@ public class RubyClientCodegen extends DefaultCodegen implements CodegenConfig {
|
|||||||
this.gemAuthorEmail = gemAuthorEmail;
|
this.gemAuthorEmail = gemAuthorEmail;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean shouldOverwrite(String filename) {
|
public boolean shouldOverwrite(String filename) {
|
||||||
// skip spec file as the file might have been updated with new test cases
|
// skip spec file as the file might have been updated with new test cases
|
||||||
return super.shouldOverwrite(filename) && !filename.endsWith("_spec.rb");
|
return !(skipOverwrite && new File(filename).exists());
|
||||||
|
//
|
||||||
|
//return super.shouldOverwrite(filename) && !filename.endsWith("_spec.rb");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -26,7 +26,7 @@ import java.util.Iterator;
|
|||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
import org.apache.commons.lang.StringUtils;
|
import org.apache.commons.lang3.StringUtils;
|
||||||
|
|
||||||
public class ScalaClientCodegen extends DefaultCodegen implements CodegenConfig {
|
public class ScalaClientCodegen extends DefaultCodegen implements CodegenConfig {
|
||||||
protected String invokerPackage = "io.swagger.client";
|
protected String invokerPackage = "io.swagger.client";
|
||||||
|
@ -17,7 +17,7 @@ import java.util.Arrays;
|
|||||||
import java.util.HashSet;
|
import java.util.HashSet;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
import org.apache.commons.lang.StringUtils;
|
import org.apache.commons.lang3.StringUtils;
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
|
@ -0,0 +1,281 @@
|
|||||||
|
package io.swagger.codegen.languages;
|
||||||
|
|
||||||
|
import io.swagger.codegen.*;
|
||||||
|
import io.swagger.models.Operation;
|
||||||
|
import io.swagger.models.Path;
|
||||||
|
import io.swagger.models.Swagger;
|
||||||
|
import java.io.File;
|
||||||
|
import java.util.*;
|
||||||
|
|
||||||
|
public class SpringBootServerCodegen extends JavaClientCodegen implements CodegenConfig{
|
||||||
|
public static final String CONFIG_PACKAGE = "configPackage";
|
||||||
|
public static final String BASE_PACKAGE = "basePackage";
|
||||||
|
protected String title = "Petstore Server";
|
||||||
|
protected String configPackage = "";
|
||||||
|
protected String basePackage = "";
|
||||||
|
protected String templateFileName = "api.mustache";
|
||||||
|
|
||||||
|
public SpringBootServerCodegen() {
|
||||||
|
super();
|
||||||
|
outputFolder = "generated-code/javaSpringBoot";
|
||||||
|
modelTemplateFiles.put("model.mustache", ".java");
|
||||||
|
apiTemplateFiles.put(templateFileName, ".java");
|
||||||
|
embeddedTemplateDir = templateDir = "JavaSpringBoot";
|
||||||
|
apiPackage = "io.swagger.api";
|
||||||
|
modelPackage = "io.swagger.model";
|
||||||
|
configPackage = "io.swagger.configuration";
|
||||||
|
invokerPackage = "io.swagger.api";
|
||||||
|
basePackage = "io.swagger";
|
||||||
|
artifactId = "swagger-springboot-server";
|
||||||
|
|
||||||
|
additionalProperties.put(CodegenConstants.INVOKER_PACKAGE, invokerPackage);
|
||||||
|
additionalProperties.put(CodegenConstants.GROUP_ID, groupId);
|
||||||
|
additionalProperties.put(CodegenConstants.ARTIFACT_ID, artifactId);
|
||||||
|
additionalProperties.put(CodegenConstants.ARTIFACT_VERSION, artifactVersion);
|
||||||
|
additionalProperties.put("title", title);
|
||||||
|
additionalProperties.put(CodegenConstants.API_PACKAGE, apiPackage);
|
||||||
|
additionalProperties.put(CONFIG_PACKAGE, configPackage);
|
||||||
|
additionalProperties.put(BASE_PACKAGE, basePackage);
|
||||||
|
|
||||||
|
cliOptions.add(new CliOption(CONFIG_PACKAGE, "configuration package for generated code"));
|
||||||
|
cliOptions.add(new CliOption(BASE_PACKAGE, "base package for generated code"));
|
||||||
|
|
||||||
|
supportedLibraries.clear();
|
||||||
|
supportedLibraries.put(DEFAULT_LIBRARY, "Default Spring Boot server stub.");
|
||||||
|
supportedLibraries.put("j8-async", "Use async servlet feature and Java 8's default interface. Generating interface with service " +
|
||||||
|
"declaration is useful when using Maven plugin. Just provide a implementation with @Controller to instantiate service.");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public CodegenType getTag() {
|
||||||
|
return CodegenType.SERVER;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getName() {
|
||||||
|
return "springboot";
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getHelp() {
|
||||||
|
return "Generates a Java SpringBoot Server application using the SpringFox integration.";
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void processOpts() {
|
||||||
|
super.processOpts();
|
||||||
|
|
||||||
|
// clear model and api doc template as this codegen
|
||||||
|
// does not support auto-generated markdown doc at the moment
|
||||||
|
modelDocTemplateFiles.remove("model_doc.mustache");
|
||||||
|
apiDocTemplateFiles.remove("api_doc.mustache");
|
||||||
|
|
||||||
|
if (additionalProperties.containsKey(CONFIG_PACKAGE)) {
|
||||||
|
this.setConfigPackage((String) additionalProperties.get(CONFIG_PACKAGE));
|
||||||
|
}
|
||||||
|
|
||||||
|
if (additionalProperties.containsKey(BASE_PACKAGE)) {
|
||||||
|
this.setBasePackage((String) additionalProperties.get(BASE_PACKAGE));
|
||||||
|
}
|
||||||
|
|
||||||
|
supportingFiles.clear();
|
||||||
|
supportingFiles.add(new SupportingFile("pom.mustache", "", "pom.xml"));
|
||||||
|
supportingFiles.add(new SupportingFile("README.mustache", "", "README.md"));
|
||||||
|
supportingFiles.add(new SupportingFile("apiException.mustache",
|
||||||
|
(sourceFolder + File.separator + apiPackage).replace(".", java.io.File.separator), "ApiException.java"));
|
||||||
|
supportingFiles.add(new SupportingFile("apiOriginFilter.mustache",
|
||||||
|
(sourceFolder + File.separator + apiPackage).replace(".", java.io.File.separator), "ApiOriginFilter.java"));
|
||||||
|
supportingFiles.add(new SupportingFile("apiResponseMessage.mustache",
|
||||||
|
(sourceFolder + File.separator + apiPackage).replace(".", java.io.File.separator), "ApiResponseMessage.java"));
|
||||||
|
supportingFiles.add(new SupportingFile("notFoundException.mustache",
|
||||||
|
(sourceFolder + File.separator + apiPackage).replace(".", java.io.File.separator), "NotFoundException.java"));
|
||||||
|
|
||||||
|
supportingFiles.add(new SupportingFile("swaggerDocumentationConfig.mustache",
|
||||||
|
(sourceFolder + File.separator + configPackage).replace(".", java.io.File.separator), "SwaggerDocumentationConfig.java"));
|
||||||
|
supportingFiles.add(new SupportingFile("homeController.mustache",
|
||||||
|
(sourceFolder + File.separator + configPackage).replace(".", java.io.File.separator), "HomeController.java"));
|
||||||
|
|
||||||
|
supportingFiles.add(new SupportingFile("swagger2SpringBoot.mustache",
|
||||||
|
(sourceFolder + File.separator + basePackage).replace(".", java.io.File.separator), "Swagger2SpringBoot.java"));
|
||||||
|
|
||||||
|
|
||||||
|
supportingFiles.add(new SupportingFile("application.properties",
|
||||||
|
("src.main.resources").replace(".", java.io.File.separator), "application.properties"));
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void addOperationToGroup(String tag, String resourcePath, Operation operation, CodegenOperation co, Map<String, List<CodegenOperation>> operations) {
|
||||||
|
String basePath = resourcePath;
|
||||||
|
if (basePath.startsWith("/")) {
|
||||||
|
basePath = basePath.substring(1);
|
||||||
|
}
|
||||||
|
int pos = basePath.indexOf("/");
|
||||||
|
if (pos > 0) {
|
||||||
|
basePath = basePath.substring(0, pos);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (basePath == "") {
|
||||||
|
basePath = "default";
|
||||||
|
} else {
|
||||||
|
if (co.path.startsWith("/" + basePath)) {
|
||||||
|
co.path = co.path.substring(("/" + basePath).length());
|
||||||
|
}
|
||||||
|
co.subresourceOperation = !co.path.isEmpty();
|
||||||
|
}
|
||||||
|
List<CodegenOperation> opList = operations.get(basePath);
|
||||||
|
if (opList == null) {
|
||||||
|
opList = new ArrayList<CodegenOperation>();
|
||||||
|
operations.put(basePath, opList);
|
||||||
|
}
|
||||||
|
opList.add(co);
|
||||||
|
co.baseName = basePath;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void preprocessSwagger(Swagger swagger) {
|
||||||
|
System.out.println("preprocessSwagger");
|
||||||
|
if ("/".equals(swagger.getBasePath())) {
|
||||||
|
swagger.setBasePath("");
|
||||||
|
}
|
||||||
|
|
||||||
|
String host = swagger.getHost();
|
||||||
|
String port = "8080";
|
||||||
|
if (host != null) {
|
||||||
|
String[] parts = host.split(":");
|
||||||
|
if (parts.length > 1) {
|
||||||
|
port = parts[1];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
this.additionalProperties.put("serverPort", port);
|
||||||
|
if (swagger != null && swagger.getPaths() != null) {
|
||||||
|
for (String pathname : swagger.getPaths().keySet()) {
|
||||||
|
Path path = swagger.getPath(pathname);
|
||||||
|
if (path.getOperations() != null) {
|
||||||
|
for (Operation operation : path.getOperations()) {
|
||||||
|
if (operation.getTags() != null) {
|
||||||
|
List<Map<String, String>> tags = new ArrayList<Map<String, String>>();
|
||||||
|
for (String tag : operation.getTags()) {
|
||||||
|
Map<String, String> value = new HashMap<String, String>();
|
||||||
|
value.put("tag", tag);
|
||||||
|
value.put("hasMore", "true");
|
||||||
|
tags.add(value);
|
||||||
|
}
|
||||||
|
if (tags.size() > 0) {
|
||||||
|
tags.get(tags.size() - 1).remove("hasMore");
|
||||||
|
}
|
||||||
|
if (operation.getTags().size() > 0) {
|
||||||
|
String tag = operation.getTags().get(0);
|
||||||
|
operation.setTags(Arrays.asList(tag));
|
||||||
|
}
|
||||||
|
operation.setVendorExtension("x-tags", tags);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Map<String, Object> postProcessOperations(Map<String, Object> objs) {
|
||||||
|
Map<String, Object> operations = (Map<String, Object>) objs.get("operations");
|
||||||
|
if (operations != null) {
|
||||||
|
List<CodegenOperation> ops = (List<CodegenOperation>) operations.get("operation");
|
||||||
|
for (CodegenOperation operation : ops) {
|
||||||
|
List<CodegenResponse> responses = operation.responses;
|
||||||
|
if (responses != null) {
|
||||||
|
for (CodegenResponse resp : responses) {
|
||||||
|
if ("0".equals(resp.code)) {
|
||||||
|
resp.code = "200";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (operation.returnType == null) {
|
||||||
|
operation.returnType = "Void";
|
||||||
|
} else if (operation.returnType.startsWith("List")) {
|
||||||
|
String rt = operation.returnType;
|
||||||
|
int end = rt.lastIndexOf(">");
|
||||||
|
if (end > 0) {
|
||||||
|
operation.returnType = rt.substring("List<".length(), end).trim();
|
||||||
|
operation.returnContainer = "List";
|
||||||
|
}
|
||||||
|
} else if (operation.returnType.startsWith("Map")) {
|
||||||
|
String rt = operation.returnType;
|
||||||
|
int end = rt.lastIndexOf(">");
|
||||||
|
if (end > 0) {
|
||||||
|
operation.returnType = rt.substring("Map<".length(), end).split(",")[1].trim();
|
||||||
|
operation.returnContainer = "Map";
|
||||||
|
}
|
||||||
|
} else if (operation.returnType.startsWith("Set")) {
|
||||||
|
String rt = operation.returnType;
|
||||||
|
int end = rt.lastIndexOf(">");
|
||||||
|
if (end > 0) {
|
||||||
|
operation.returnType = rt.substring("Set<".length(), end).trim();
|
||||||
|
operation.returnContainer = "Set";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if("j8-async".equals(getLibrary())) {
|
||||||
|
apiTemplateFiles.remove(this.templateFileName);
|
||||||
|
this.templateFileName = "api-j8-async.mustache";
|
||||||
|
apiTemplateFiles.put(this.templateFileName, ".java");
|
||||||
|
|
||||||
|
int originalPomFileIdx = -1;
|
||||||
|
for (int i = 0; i < supportingFiles.size(); i++) {
|
||||||
|
if ("pom.xml".equals(supportingFiles.get(i).destinationFilename)) {
|
||||||
|
originalPomFileIdx = i;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (originalPomFileIdx > -1) {
|
||||||
|
supportingFiles.remove(originalPomFileIdx);
|
||||||
|
}
|
||||||
|
supportingFiles.add(new SupportingFile("pom-j8-async.mustache", "", "pom.xml"));
|
||||||
|
}
|
||||||
|
|
||||||
|
return objs;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String toApiName(String name) {
|
||||||
|
if (name.length() == 0) {
|
||||||
|
return "DefaultApi";
|
||||||
|
}
|
||||||
|
name = sanitizeName(name);
|
||||||
|
return camelize(name) + "Api";
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setConfigPackage(String configPackage) {
|
||||||
|
this.configPackage = configPackage;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setBasePackage(String configPackage) {
|
||||||
|
this.basePackage = configPackage;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Map<String, Object> postProcessModels(Map<String, Object> objs) {
|
||||||
|
// remove the import of "Object" to avoid compilation error
|
||||||
|
List<Map<String, String>> imports = (List<Map<String, String>>) objs.get("imports");
|
||||||
|
Iterator<Map<String, String>> iterator = imports.iterator();
|
||||||
|
while (iterator.hasNext()) {
|
||||||
|
String _import = iterator.next().get("import");
|
||||||
|
if (_import.endsWith(".Object")) iterator.remove();
|
||||||
|
}
|
||||||
|
List<Object> models = (List<Object>) objs.get("models");
|
||||||
|
for (Object _mo : models) {
|
||||||
|
Map<String, Object> mo = (Map<String, Object>) _mo;
|
||||||
|
CodegenModel cm = (CodegenModel) mo.get("model");
|
||||||
|
for (CodegenProperty var : cm.vars) {
|
||||||
|
// handle default value for enum, e.g. available => StatusEnum.available
|
||||||
|
if (var.isEnum && var.defaultValue != null && !"null".equals(var.defaultValue)) {
|
||||||
|
var.defaultValue = var.datatypeWithEnum + "." + var.defaultValue;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return objs;
|
||||||
|
}
|
||||||
|
}
|
@ -2,11 +2,12 @@ package io.swagger.codegen.languages;
|
|||||||
|
|
||||||
import io.swagger.codegen.*;
|
import io.swagger.codegen.*;
|
||||||
import io.swagger.models.Operation;
|
import io.swagger.models.Operation;
|
||||||
|
import io.swagger.models.Path;
|
||||||
|
import io.swagger.models.Swagger;
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
|
|
||||||
public class SpringMVCServerCodegen extends JavaClientCodegen {
|
public class SpringMVCServerCodegen extends JavaClientCodegen implements CodegenConfig{
|
||||||
public static final String CONFIG_PACKAGE = "configPackage";
|
public static final String CONFIG_PACKAGE = "configPackage";
|
||||||
protected String title = "Petstore Server";
|
protected String title = "Petstore Server";
|
||||||
protected String configPackage = "";
|
protected String configPackage = "";
|
||||||
@ -120,6 +121,51 @@ public class SpringMVCServerCodegen extends JavaClientCodegen {
|
|||||||
opList.add(co);
|
opList.add(co);
|
||||||
co.baseName = basePath;
|
co.baseName = basePath;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void preprocessSwagger(Swagger swagger) {
|
||||||
|
System.out.println("preprocessSwagger");
|
||||||
|
if ("/".equals(swagger.getBasePath())) {
|
||||||
|
swagger.setBasePath("");
|
||||||
|
}
|
||||||
|
|
||||||
|
String host = swagger.getHost();
|
||||||
|
String port = "8080";
|
||||||
|
if (host != null) {
|
||||||
|
String[] parts = host.split(":");
|
||||||
|
if (parts.length > 1) {
|
||||||
|
port = parts[1];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
this.additionalProperties.put("serverPort", port);
|
||||||
|
if (swagger != null && swagger.getPaths() != null) {
|
||||||
|
for (String pathname : swagger.getPaths().keySet()) {
|
||||||
|
Path path = swagger.getPath(pathname);
|
||||||
|
if (path.getOperations() != null) {
|
||||||
|
for (Operation operation : path.getOperations()) {
|
||||||
|
if (operation.getTags() != null) {
|
||||||
|
List<Map<String, String>> tags = new ArrayList<Map<String, String>>();
|
||||||
|
for (String tag : operation.getTags()) {
|
||||||
|
Map<String, String> value = new HashMap<String, String>();
|
||||||
|
value.put("tag", tag);
|
||||||
|
value.put("hasMore", "true");
|
||||||
|
tags.add(value);
|
||||||
|
}
|
||||||
|
if (tags.size() > 0) {
|
||||||
|
tags.get(tags.size() - 1).remove("hasMore");
|
||||||
|
}
|
||||||
|
if (operation.getTags().size() > 0) {
|
||||||
|
String tag = operation.getTags().get(0);
|
||||||
|
operation.setTags(Arrays.asList(tag));
|
||||||
|
}
|
||||||
|
operation.setVendorExtension("x-tags", tags);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Map<String, Object> postProcessOperations(Map<String, Object> objs) {
|
public Map<String, Object> postProcessOperations(Map<String, Object> objs) {
|
||||||
|
@ -85,4 +85,4 @@ public class StaticDocCodegen extends DefaultCodegen implements CodegenConfig {
|
|||||||
public String modelFileFolder() {
|
public String modelFileFolder() {
|
||||||
return outputFolder + File.separator + sourceFolder + File.separator + "models";
|
return outputFolder + File.separator + sourceFolder + File.separator + "models";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -101,4 +101,4 @@ public class StaticHtmlGenerator extends DefaultCodegen implements CodegenConfig
|
|||||||
}
|
}
|
||||||
return objs;
|
return objs;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -52,4 +52,4 @@ public class SwaggerGenerator extends DefaultCodegen implements CodegenConfig {
|
|||||||
LOGGER.error(e.getMessage(), e);
|
LOGGER.error(e.getMessage(), e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -51,4 +51,4 @@ public class SwaggerYamlGenerator extends DefaultCodegen implements CodegenConfi
|
|||||||
LOGGER.error(e.getMessage(), e);
|
LOGGER.error(e.getMessage(), e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -13,9 +13,9 @@ import io.swagger.models.parameters.Parameter;
|
|||||||
import io.swagger.models.properties.ArrayProperty;
|
import io.swagger.models.properties.ArrayProperty;
|
||||||
import io.swagger.models.properties.MapProperty;
|
import io.swagger.models.properties.MapProperty;
|
||||||
import io.swagger.models.properties.Property;
|
import io.swagger.models.properties.Property;
|
||||||
import org.apache.commons.lang.ArrayUtils;
|
import org.apache.commons.lang3.ArrayUtils;
|
||||||
import org.apache.commons.lang.StringUtils;
|
import org.apache.commons.lang3.StringUtils;
|
||||||
import org.apache.commons.lang.WordUtils;
|
import org.apache.commons.lang3.text.WordUtils;
|
||||||
|
|
||||||
import javax.annotation.Nullable;
|
import javax.annotation.Nullable;
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
|
@ -25,7 +25,7 @@ import java.util.HashSet;
|
|||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
|
|
||||||
import org.apache.commons.lang.StringUtils;
|
import org.apache.commons.lang3.StringUtils;
|
||||||
|
|
||||||
public class TizenClientCodegen extends DefaultCodegen implements CodegenConfig {
|
public class TizenClientCodegen extends DefaultCodegen implements CodegenConfig {
|
||||||
protected static String PREFIX = "Sami";
|
protected static String PREFIX = "Sami";
|
||||||
|
@ -0,0 +1,70 @@
|
|||||||
|
package io.swagger.codegen.languages;
|
||||||
|
|
||||||
|
import io.swagger.codegen.CliOption;
|
||||||
|
import io.swagger.codegen.SupportingFile;
|
||||||
|
|
||||||
|
import java.io.File;
|
||||||
|
|
||||||
|
public class TypeScriptFetchClientCodegen extends AbstractTypeScriptClientCodegen {
|
||||||
|
|
||||||
|
public static final String NPM_NAME = "npmName";
|
||||||
|
public static final String NPM_VERSION = "npmVersion";
|
||||||
|
|
||||||
|
protected String npmName = null;
|
||||||
|
protected String npmVersion = "1.0.0";
|
||||||
|
|
||||||
|
public TypeScriptFetchClientCodegen() {
|
||||||
|
super();
|
||||||
|
outputFolder = "generated-code/typescript-fetch";
|
||||||
|
embeddedTemplateDir = templateDir = "TypeScript-Fetch";
|
||||||
|
this.cliOptions.add(new CliOption(NPM_NAME, "The name under which you want to publish generated npm package"));
|
||||||
|
this.cliOptions.add(new CliOption(NPM_VERSION, "The version of your npm package"));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void processOpts() {
|
||||||
|
super.processOpts();
|
||||||
|
supportingFiles.add(new SupportingFile("api.mustache", "", "api.ts"));
|
||||||
|
supportingFiles.add(new SupportingFile("git_push.sh.mustache", "", "git_push.sh"));
|
||||||
|
supportingFiles.add(new SupportingFile("assign.ts", "", "assign.ts"));
|
||||||
|
supportingFiles.add(new SupportingFile("README.md", "", "README.md"));
|
||||||
|
supportingFiles.add(new SupportingFile("package.json.mustache", "", "package.json"));
|
||||||
|
supportingFiles.add(new SupportingFile("typings.json.mustache", "", "typings.json"));
|
||||||
|
supportingFiles.add(new SupportingFile("tsconfig.json.mustache", "", "tsconfig.json"));
|
||||||
|
|
||||||
|
if(additionalProperties.containsKey(NPM_NAME)) {
|
||||||
|
this.setNpmName(additionalProperties.get(NPM_NAME).toString());
|
||||||
|
}
|
||||||
|
|
||||||
|
if (additionalProperties.containsKey(NPM_VERSION)) {
|
||||||
|
this.setNpmVersion(additionalProperties.get(NPM_VERSION).toString());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getName() {
|
||||||
|
return "typescript-fetch";
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getHelp() {
|
||||||
|
return "Generates a TypeScript client library using Fetch API (beta).";
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getNpmName() {
|
||||||
|
return npmName;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setNpmName(String npmName) {
|
||||||
|
this.npmName = npmName;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getNpmVersion() {
|
||||||
|
return npmVersion;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setNpmVersion(String npmVersion) {
|
||||||
|
this.npmVersion = npmVersion;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -41,7 +41,6 @@ public class TypeScriptNodeClientCodegen extends AbstractTypeScriptClientCodegen
|
|||||||
super.processOpts();
|
super.processOpts();
|
||||||
supportingFiles.add(new SupportingFile("api.mustache", null, "api.ts"));
|
supportingFiles.add(new SupportingFile("api.mustache", null, "api.ts"));
|
||||||
supportingFiles.add(new SupportingFile("git_push.sh.mustache", "", "git_push.sh"));
|
supportingFiles.add(new SupportingFile("git_push.sh.mustache", "", "git_push.sh"));
|
||||||
//supportingFiles.add(new SupportingFile("gitignore.mustache", "", ".gitignore"));
|
|
||||||
|
|
||||||
LOGGER.warn("check additionals: " + additionalProperties.get(NPM_NAME));
|
LOGGER.warn("check additionals: " + additionalProperties.get(NPM_NAME));
|
||||||
if(additionalProperties.containsKey(NPM_NAME)) {
|
if(additionalProperties.containsKey(NPM_NAME)) {
|
||||||
|
@ -5,11 +5,13 @@ import com.sun.jersey.api.client.GenericType;
|
|||||||
import {{invokerPackage}}.ApiException;
|
import {{invokerPackage}}.ApiException;
|
||||||
import {{invokerPackage}}.ApiClient;
|
import {{invokerPackage}}.ApiClient;
|
||||||
import {{invokerPackage}}.Configuration;
|
import {{invokerPackage}}.Configuration;
|
||||||
|
import {{modelPackage}}.*;
|
||||||
import {{invokerPackage}}.Pair;
|
import {{invokerPackage}}.Pair;
|
||||||
|
|
||||||
{{#imports}}import {{import}};
|
{{#imports}}import {{import}};
|
||||||
{{/imports}}
|
{{/imports}}
|
||||||
|
|
||||||
|
|
||||||
{{^fullJavaUtil}}
|
{{^fullJavaUtil}}
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
|
@ -2,6 +2,6 @@
|
|||||||
|
|
||||||
## Enum
|
## Enum
|
||||||
|
|
||||||
{{#allowableValues}}
|
{{#allowableValues}}{{#enumVars}}
|
||||||
* `{{.}}`
|
* `{{name}}` (value: `{{{value}}}`)
|
||||||
{{/allowableValues}}
|
{{/enumVars}}{{/allowableValues}}
|
||||||
|
@ -3,5 +3,5 @@
|
|||||||
## Enum
|
## Enum
|
||||||
|
|
||||||
{{#allowableValues}}{{#enumVars}}
|
{{#allowableValues}}{{#enumVars}}
|
||||||
* `{{name}}` (value: `{{value}}`)
|
* `{{name}}` (value: `{{{value}}}`)
|
||||||
{{/enumVars}}{{/allowableValues}}
|
{{/enumVars}}{{/allowableValues}}
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
package {{package}};
|
package {{package}};
|
||||||
|
|
||||||
|
import com.fasterxml.jackson.annotation.JsonValue;
|
||||||
import java.util.Objects;
|
import java.util.Objects;
|
||||||
{{#imports}}import {{import}};
|
{{#imports}}import {{import}};
|
||||||
{{/imports}}
|
{{/imports}}
|
||||||
|
@ -0,0 +1,18 @@
|
|||||||
|
# Swagger generated server
|
||||||
|
|
||||||
|
Spring Boot Server
|
||||||
|
|
||||||
|
|
||||||
|
## Overview
|
||||||
|
This server was generated by the [swagger-codegen](https://github.com/swagger-api/swagger-codegen) project.
|
||||||
|
By using the [OpenAPI-Spec](https://github.com/swagger-api/swagger-core), you can easily generate a server stub.
|
||||||
|
This is an example of building a swagger-enabled server in Java using the SpringBoot framework.
|
||||||
|
|
||||||
|
The underlying library integrating swagger to SpringBoot is [springfox](https://github.com/springfox/springfox)
|
||||||
|
|
||||||
|
Start your server as an simple java application
|
||||||
|
|
||||||
|
You can view the api documentation in swagger-ui by pointing to
|
||||||
|
http://localhost:8080/
|
||||||
|
|
||||||
|
Change default port value in application.properties
|
@ -0,0 +1,56 @@
|
|||||||
|
package {{apiPackage}};
|
||||||
|
|
||||||
|
import {{modelPackage}}.*;
|
||||||
|
|
||||||
|
{{#imports}}import {{import}};
|
||||||
|
{{/imports}}
|
||||||
|
|
||||||
|
import io.swagger.annotations.*;
|
||||||
|
|
||||||
|
import org.springframework.http.HttpStatus;
|
||||||
|
import org.springframework.http.ResponseEntity;
|
||||||
|
import org.springframework.stereotype.Controller;
|
||||||
|
import org.springframework.web.bind.annotation.PathVariable;
|
||||||
|
import org.springframework.web.bind.annotation.RequestBody;
|
||||||
|
import org.springframework.web.bind.annotation.RequestHeader;
|
||||||
|
import org.springframework.web.bind.annotation.RequestMapping;
|
||||||
|
import org.springframework.web.bind.annotation.RequestMethod;
|
||||||
|
import org.springframework.web.bind.annotation.RequestParam;
|
||||||
|
import org.springframework.web.bind.annotation.RequestPart;
|
||||||
|
import org.springframework.web.multipart.MultipartFile;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
import static org.springframework.http.MediaType.*;
|
||||||
|
|
||||||
|
@Controller
|
||||||
|
@RequestMapping(value = "/{{{baseName}}}", produces = {APPLICATION_JSON_VALUE})
|
||||||
|
@Api(value = "/{{{baseName}}}", description = "the {{{baseName}}} API")
|
||||||
|
{{>generatedAnnotation}}
|
||||||
|
{{#operations}}
|
||||||
|
public class {{classname}} {
|
||||||
|
{{#operation}}
|
||||||
|
|
||||||
|
@ApiOperation(value = "{{{summary}}}", notes = "{{{notes}}}", response = {{{returnType}}}.class{{#returnContainer}}, responseContainer = "{{{returnContainer}}}"{{/returnContainer}}{{#hasAuthMethods}}, authorizations = {
|
||||||
|
{{#authMethods}}@Authorization(value = "{{name}}"{{#isOAuth}}, scopes = {
|
||||||
|
{{#scopes}}@AuthorizationScope(scope = "{{scope}}", description = "{{description}}"){{#hasMore}},
|
||||||
|
{{/hasMore}}{{/scopes}}
|
||||||
|
}{{/isOAuth}}){{#hasMore}},
|
||||||
|
{{/hasMore}}{{/authMethods}}
|
||||||
|
}{{/hasAuthMethods}})
|
||||||
|
@ApiResponses(value = { {{#responses}}
|
||||||
|
@ApiResponse(code = {{{code}}}, message = "{{{message}}}", response = {{{returnType}}}.class){{#hasMore}},{{/hasMore}}{{/responses}} })
|
||||||
|
@RequestMapping(value = "{{{path}}}",
|
||||||
|
{{#hasProduces}}produces = { {{#produces}}"{{mediaType}}"{{#hasMore}}, {{/hasMore}}{{/produces}} }, {{/hasProduces}}
|
||||||
|
{{#hasConsumes}}consumes = { {{#consumes}}"{{mediaType}}"{{#hasMore}}, {{/hasMore}}{{/consumes}} },{{/hasConsumes}}
|
||||||
|
method = RequestMethod.{{httpMethod}})
|
||||||
|
public ResponseEntity<{{>returnTypes}}> {{operationId}}({{#allParams}}{{>queryParams}}{{>pathParams}}{{>headerParams}}{{>bodyParams}}{{>formParams}}{{#hasMore}},
|
||||||
|
{{/hasMore}}{{/allParams}})
|
||||||
|
throws NotFoundException {
|
||||||
|
// do some magic!
|
||||||
|
return new ResponseEntity<{{>returnTypes}}>(HttpStatus.OK);
|
||||||
|
}
|
||||||
|
|
||||||
|
{{/operation}}
|
||||||
|
}
|
||||||
|
{{/operations}}
|
@ -0,0 +1,10 @@
|
|||||||
|
package {{apiPackage}};
|
||||||
|
|
||||||
|
{{>generatedAnnotation}}
|
||||||
|
public class ApiException extends Exception{
|
||||||
|
private int code;
|
||||||
|
public ApiException (int code, String msg) {
|
||||||
|
super(msg);
|
||||||
|
this.code = code;
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,27 @@
|
|||||||
|
package {{apiPackage}};
|
||||||
|
|
||||||
|
import java.io.IOException;
|
||||||
|
|
||||||
|
import javax.servlet.*;
|
||||||
|
import javax.servlet.http.HttpServletResponse;
|
||||||
|
|
||||||
|
{{>generatedAnnotation}}
|
||||||
|
public class ApiOriginFilter implements javax.servlet.Filter {
|
||||||
|
@Override
|
||||||
|
public void doFilter(ServletRequest request, ServletResponse response,
|
||||||
|
FilterChain chain) throws IOException, ServletException {
|
||||||
|
HttpServletResponse res = (HttpServletResponse) response;
|
||||||
|
res.addHeader("Access-Control-Allow-Origin", "*");
|
||||||
|
res.addHeader("Access-Control-Allow-Methods", "GET, POST, DELETE, PUT");
|
||||||
|
res.addHeader("Access-Control-Allow-Headers", "Content-Type");
|
||||||
|
chain.doFilter(request, response);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void destroy() {
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void init(FilterConfig filterConfig) throws ServletException {
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,69 @@
|
|||||||
|
package {{apiPackage}};
|
||||||
|
|
||||||
|
import javax.xml.bind.annotation.XmlTransient;
|
||||||
|
|
||||||
|
@javax.xml.bind.annotation.XmlRootElement
|
||||||
|
{{>generatedAnnotation}}
|
||||||
|
public class ApiResponseMessage {
|
||||||
|
public static final int ERROR = 1;
|
||||||
|
public static final int WARNING = 2;
|
||||||
|
public static final int INFO = 3;
|
||||||
|
public static final int OK = 4;
|
||||||
|
public static final int TOO_BUSY = 5;
|
||||||
|
|
||||||
|
int code;
|
||||||
|
String type;
|
||||||
|
String message;
|
||||||
|
|
||||||
|
public ApiResponseMessage(){}
|
||||||
|
|
||||||
|
public ApiResponseMessage(int code, String message){
|
||||||
|
this.code = code;
|
||||||
|
switch(code){
|
||||||
|
case ERROR:
|
||||||
|
setType("error");
|
||||||
|
break;
|
||||||
|
case WARNING:
|
||||||
|
setType("warning");
|
||||||
|
break;
|
||||||
|
case INFO:
|
||||||
|
setType("info");
|
||||||
|
break;
|
||||||
|
case OK:
|
||||||
|
setType("ok");
|
||||||
|
break;
|
||||||
|
case TOO_BUSY:
|
||||||
|
setType("too busy");
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
setType("unknown");
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
this.message = message;
|
||||||
|
}
|
||||||
|
|
||||||
|
@XmlTransient
|
||||||
|
public int getCode() {
|
||||||
|
return code;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setCode(int code) {
|
||||||
|
this.code = code;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getType() {
|
||||||
|
return type;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setType(String type) {
|
||||||
|
this.type = type;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getMessage() {
|
||||||
|
return message;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setMessage(String message) {
|
||||||
|
this.message = message;
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,2 @@
|
|||||||
|
springfox.documentation.swagger.v2.path=/api-docs
|
||||||
|
#server.port=8090
|
@ -0,0 +1 @@
|
|||||||
|
{{#isBodyParam}}@ApiParam(value = "{{{description}}}" {{#required}},required=true{{/required}} {{#allowableValues}}, allowableValues="{{{allowableValues}}}"{{/allowableValues}}{{#defaultValue}}, defaultValue="{{{defaultValue}}}"{{/defaultValue}}) @RequestBody {{{dataType}}} {{paramName}}{{/isBodyParam}}
|
@ -0,0 +1,2 @@
|
|||||||
|
{{#isFormParam}}{{#notFile}}
|
||||||
|
@ApiParam(value = "{{{description}}}"{{#required}}, required=true{{/required}} {{#allowableValues}}, allowableValues="{{{allowableValues}}}"{{/allowableValues}}{{#defaultValue}}, defaultValue="{{{defaultValue}}}"{{/defaultValue}}) @RequestPart(value="{{paramName}}"{{#required}}, required=true{{/required}}{{^required}}, required=false{{/required}}) {{{dataType}}} {{paramName}}{{/notFile}}{{#isFile}}@ApiParam(value = "file detail") @RequestPart("file") MultipartFile {{baseName}}{{/isFile}}{{/isFormParam}}
|
@ -0,0 +1 @@
|
|||||||
|
@javax.annotation.Generated(value = "{{generatorClass}}", date = "{{generatedDate}}")
|
@ -0,0 +1 @@
|
|||||||
|
{{#isHeaderParam}}@ApiParam(value = "{{{description}}}" {{#required}},required=true{{/required}} {{#allowableValues}}, allowableValues="{{{allowableValues}}}"{{/allowableValues}}{{#defaultValue}}, defaultValue="{{{defaultValue}}}"{{/defaultValue}}) @RequestHeader(value="{{baseName}}", required={{#required}}true{{/required}}{{^required}}false{{/required}}) {{{dataType}}} {{paramName}}{{/isHeaderParam}}
|
@ -0,0 +1,16 @@
|
|||||||
|
package {{configPackage}};
|
||||||
|
|
||||||
|
import org.springframework.stereotype.Controller;
|
||||||
|
import org.springframework.web.bind.annotation.RequestMapping;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Home redirection to swagger api documentation
|
||||||
|
*/
|
||||||
|
@Controller
|
||||||
|
public class HomeController {
|
||||||
|
@RequestMapping(value = "/")
|
||||||
|
public String index() {
|
||||||
|
System.out.println("swagger-ui.html");
|
||||||
|
return "redirect:swagger-ui.html";
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,77 @@
|
|||||||
|
package {{package}};
|
||||||
|
|
||||||
|
{{#imports}}import {{import}};
|
||||||
|
{{/imports}}
|
||||||
|
|
||||||
|
import io.swagger.annotations.*;
|
||||||
|
import com.fasterxml.jackson.annotation.JsonProperty;
|
||||||
|
|
||||||
|
import java.util.Objects;
|
||||||
|
{{#models}}
|
||||||
|
|
||||||
|
{{#model}}{{#description}}
|
||||||
|
/**
|
||||||
|
* {{description}}
|
||||||
|
**/{{/description}}
|
||||||
|
@ApiModel(description = "{{{description}}}")
|
||||||
|
{{>generatedAnnotation}}
|
||||||
|
public class {{classname}} {{#parent}}extends {{{parent}}}{{/parent}} {
|
||||||
|
{{#vars}}{{#isEnum}}
|
||||||
|
public enum {{datatypeWithEnum}} {
|
||||||
|
{{#allowableValues}}{{#values}} {{.}}, {{/values}}{{/allowableValues}}
|
||||||
|
};
|
||||||
|
{{/isEnum}}{{#items}}{{#isEnum}}
|
||||||
|
public enum {{datatypeWithEnum}} {
|
||||||
|
{{#allowableValues}}{{#values}} {{.}}, {{/values}}{{/allowableValues}}
|
||||||
|
};
|
||||||
|
{{/isEnum}}{{/items}}
|
||||||
|
private {{{datatypeWithEnum}}} {{name}} = {{{defaultValue}}};{{/vars}}
|
||||||
|
|
||||||
|
{{#vars}}
|
||||||
|
/**{{#description}}
|
||||||
|
* {{{description}}}{{/description}}{{#minimum}}
|
||||||
|
* minimum: {{minimum}}{{/minimum}}{{#maximum}}
|
||||||
|
* maximum: {{maximum}}{{/maximum}}
|
||||||
|
**/
|
||||||
|
@ApiModelProperty({{#required}}required = {{required}}, {{/required}}value = "{{{description}}}")
|
||||||
|
@JsonProperty("{{baseName}}")
|
||||||
|
public {{{datatypeWithEnum}}} {{getter}}() {
|
||||||
|
return {{name}};
|
||||||
|
}
|
||||||
|
public void {{setter}}({{{datatypeWithEnum}}} {{name}}) {
|
||||||
|
this.{{name}} = {{name}};
|
||||||
|
}
|
||||||
|
|
||||||
|
{{/vars}}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean equals(Object o) {
|
||||||
|
if (this == o) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
if (o == null || getClass() != o.getClass()) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
{{classname}} {{classVarName}} = ({{classname}}) o;{{#hasVars}}
|
||||||
|
return {{#vars}}Objects.equals({{name}}, {{classVarName}}.{{name}}){{#hasMore}} &&
|
||||||
|
{{/hasMore}}{{^hasMore}};{{/hasMore}}{{/vars}}{{/hasVars}}{{^hasVars}}
|
||||||
|
return true;{{/hasVars}}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int hashCode() {
|
||||||
|
return Objects.hash({{#vars}}{{name}}{{#hasMore}}, {{/hasMore}}{{/vars}});
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String toString() {
|
||||||
|
StringBuilder sb = new StringBuilder();
|
||||||
|
sb.append("class {{classname}} {\n");
|
||||||
|
{{#parent}}sb.append(" " + super.toString()).append("\n");{{/parent}}
|
||||||
|
{{#vars}}sb.append(" {{name}}: ").append({{name}}).append("\n");
|
||||||
|
{{/vars}}sb.append("}\n");
|
||||||
|
return sb.toString();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
{{/model}}
|
||||||
|
{{/models}}
|
@ -0,0 +1,10 @@
|
|||||||
|
package {{apiPackage}};
|
||||||
|
|
||||||
|
{{>generatedAnnotation}}
|
||||||
|
public class NotFoundException extends ApiException {
|
||||||
|
private int code;
|
||||||
|
public NotFoundException (int code, String msg) {
|
||||||
|
super(code, msg);
|
||||||
|
this.code = code;
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1 @@
|
|||||||
|
{{#isPathParam}}@ApiParam(value = "{{{description}}}"{{#required}},required=true{{/required}}{{#allowableValues}}, allowableValues="{{{allowableValues}}}"{{/allowableValues}} {{#defaultValue}}, defaultValue="{{{defaultValue}}}"{{/defaultValue}}) @PathVariable("{{paramName}}") {{{dataType}}} {{paramName}}{{/isPathParam}}
|
@ -0,0 +1,54 @@
|
|||||||
|
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
|
||||||
|
<modelVersion>4.0.0</modelVersion>
|
||||||
|
<groupId>{{groupId}}</groupId>
|
||||||
|
<artifactId>{{artifactId}}</artifactId>
|
||||||
|
<packaging>jar</packaging>
|
||||||
|
<name>{{artifactId}}</name>
|
||||||
|
<version>{{artifactVersion}}</version>
|
||||||
|
<properties>
|
||||||
|
<springfox-version>2.4.0</springfox-version>
|
||||||
|
</properties>
|
||||||
|
<parent>
|
||||||
|
<groupId>org.springframework.boot</groupId>
|
||||||
|
<artifactId>spring-boot-starter-parent</artifactId>
|
||||||
|
<version>1.3.3.RELEASE</version>
|
||||||
|
</parent>
|
||||||
|
<build>
|
||||||
|
<sourceDirectory>src/main/java</sourceDirectory>
|
||||||
|
<plugins>
|
||||||
|
<plugin>
|
||||||
|
<groupId>org.springframework.boot</groupId>
|
||||||
|
<artifactId>spring-boot-maven-plugin</artifactId>
|
||||||
|
<executions>
|
||||||
|
<execution>
|
||||||
|
<goals>
|
||||||
|
<goal>repackage</goal>
|
||||||
|
</goals>
|
||||||
|
</execution>
|
||||||
|
</executions>
|
||||||
|
</plugin>
|
||||||
|
</plugins>
|
||||||
|
</build>
|
||||||
|
<dependencies>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.springframework.boot</groupId>
|
||||||
|
<artifactId>spring-boot-starter-web</artifactId>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.springframework.boot</groupId>
|
||||||
|
<artifactId>spring-boot-starter-tomcat</artifactId>
|
||||||
|
<scope>provided</scope>
|
||||||
|
</dependency>
|
||||||
|
<!--SpringFox dependencies -->
|
||||||
|
<dependency>
|
||||||
|
<groupId>io.springfox</groupId>
|
||||||
|
<artifactId>springfox-swagger2</artifactId>
|
||||||
|
<version>${springfox-version}</version>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>io.springfox</groupId>
|
||||||
|
<artifactId>springfox-swagger-ui</artifactId>
|
||||||
|
<version>${springfox-version}</version>
|
||||||
|
</dependency>
|
||||||
|
</dependencies>
|
||||||
|
</project>
|
@ -0,0 +1 @@
|
|||||||
|
sbt.version=0.12.0
|
@ -0,0 +1,9 @@
|
|||||||
|
addSbtPlugin("com.eed3si9n" % "sbt-assembly" % "0.8.4")
|
||||||
|
|
||||||
|
libraryDependencies <+= sbtVersion(v => v match {
|
||||||
|
case "0.11.0" => "com.github.siasia" %% "xsbt-web-plugin" % "0.11.0-0.2.8"
|
||||||
|
case "0.11.1" => "com.github.siasia" %% "xsbt-web-plugin" % "0.11.1-0.2.10"
|
||||||
|
case "0.11.2" => "com.github.siasia" %% "xsbt-web-plugin" % "0.11.2-0.2.11"
|
||||||
|
case "0.11.3" => "com.github.siasia" %% "xsbt-web-plugin" % "0.11.3-0.2.11.1"
|
||||||
|
case x if (x.startsWith("0.12")) => "com.github.siasia" %% "xsbt-web-plugin" % "0.12.0-0.2.11.1"
|
||||||
|
})
|
@ -0,0 +1 @@
|
|||||||
|
{{#isQueryParam}}@ApiParam(value = "{{{description}}}"{{#required}}, required = true{{/required}}{{#allowableValues}}, allowableValues = "{{{allowableValues}}}"{{/allowableValues}}{{#defaultValue}}, defaultValue = "{{{defaultValue}}}"{{/defaultValue}}) @RequestParam(value = "{{paramName}}"{{#required}}, required = true{{/required}}{{^required}}, required = false{{/required}}{{#defaultValue}}, defaultValue="{{{defaultValue}}}"{{/defaultValue}}) {{{dataType}}} {{paramName}}{{/isQueryParam}}
|
@ -0,0 +1 @@
|
|||||||
|
{{#returnContainer}}{{#isMapContainer}}Map<String, {{{returnType}}}>{{/isMapContainer}}{{#isListContainer}}List<{{{returnType}}}>{{/isListContainer}}{{/returnContainer}}{{^returnContainer}}{{{returnType}}}{{/returnContainer}}
|
@ -0,0 +1,36 @@
|
|||||||
|
package {{basePackage}};
|
||||||
|
|
||||||
|
import org.springframework.boot.CommandLineRunner;
|
||||||
|
import org.springframework.boot.ExitCodeGenerator;
|
||||||
|
import org.springframework.boot.SpringApplication;
|
||||||
|
import org.springframework.boot.autoconfigure.SpringBootApplication;
|
||||||
|
import org.springframework.context.annotation.ComponentScan;
|
||||||
|
|
||||||
|
import springfox.documentation.swagger2.annotations.EnableSwagger2;
|
||||||
|
|
||||||
|
@SpringBootApplication
|
||||||
|
@EnableSwagger2
|
||||||
|
@ComponentScan(basePackages = "{{basePackage}}")
|
||||||
|
public class Swagger2SpringBoot implements CommandLineRunner {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void run(String... arg0) throws Exception {
|
||||||
|
if (arg0.length > 0 && arg0[0].equals("exitcode")) {
|
||||||
|
throw new ExitException();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void main(String[] args) throws Exception {
|
||||||
|
new SpringApplication(Swagger2SpringBoot.class).run(args);
|
||||||
|
}
|
||||||
|
|
||||||
|
class ExitException extends RuntimeException implements ExitCodeGenerator {
|
||||||
|
private static final long serialVersionUID = 1L;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int getExitCode() {
|
||||||
|
return 10;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,40 @@
|
|||||||
|
package {{configPackage}};
|
||||||
|
|
||||||
|
import org.springframework.context.annotation.Bean;
|
||||||
|
import org.springframework.context.annotation.Configuration;
|
||||||
|
|
||||||
|
import springfox.documentation.builders.ApiInfoBuilder;
|
||||||
|
import springfox.documentation.builders.RequestHandlerSelectors;
|
||||||
|
import springfox.documentation.service.ApiInfo;
|
||||||
|
import springfox.documentation.service.Contact;
|
||||||
|
import springfox.documentation.spi.DocumentationType;
|
||||||
|
import springfox.documentation.spring.web.plugins.Docket;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@Configuration
|
||||||
|
{{>generatedAnnotation}}
|
||||||
|
public class SwaggerDocumentationConfig {
|
||||||
|
|
||||||
|
ApiInfo apiInfo() {
|
||||||
|
return new ApiInfoBuilder()
|
||||||
|
.title("{{appName}}")
|
||||||
|
.description("{{{appDescription}}}")
|
||||||
|
.license("{{licenseInfo}}")
|
||||||
|
.licenseUrl("{{licenseUrl}}")
|
||||||
|
.termsOfServiceUrl("{{infoUrl}}")
|
||||||
|
.version("{{appVersion}}")
|
||||||
|
.contact(new Contact("","", "{{infoEmail}}"))
|
||||||
|
.build();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Bean
|
||||||
|
public Docket customImplementation(){
|
||||||
|
return new Docket(DocumentationType.SWAGGER_2)
|
||||||
|
.select()
|
||||||
|
.apis(RequestHandlerSelectors.basePackage("{{apiPackage}}"))
|
||||||
|
.build()
|
||||||
|
.apiInfo(apiInfo());
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -1,9 +1,25 @@
|
|||||||
{{#models}}{{#model}}# {{moduleName}}.{{classname}}
|
{{#models}}{{#model}}{{#isEnum}}# {{moduleName}}.{{classname}}
|
||||||
|
|
||||||
|
## Enum
|
||||||
|
|
||||||
|
{{#allowableValues}}{{#enumVars}}
|
||||||
|
* `{{name}}` (value: `{{{value}}}`)
|
||||||
|
{{/enumVars}}{{/allowableValues}}
|
||||||
|
{{/isEnum}}{{^isEnum}}# {{moduleName}}.{{classname}}
|
||||||
|
|
||||||
## Properties
|
## Properties
|
||||||
Name | Type | Description | Notes
|
Name | Type | Description | Notes
|
||||||
------------ | ------------- | ------------- | -------------
|
------------ | ------------- | ------------- | -------------
|
||||||
{{#vars}}**{{name}}** | {{#isPrimitiveType}}**{{datatype}}**{{/isPrimitiveType}}{{^isPrimitiveType}}[**{{datatype}}**]({{complexType}}.md){{/isPrimitiveType}} | {{description}} | {{^required}}[optional] {{/required}}{{#readOnly}}[readonly] {{/readOnly}}{{#defaultValue}}[default to {{defaultValue}}]{{/defaultValue}}
|
{{#vars}}**{{name}}** | {{#isPrimitiveType}}**{{datatype}}**{{/isPrimitiveType}}{{^isPrimitiveType}}[**{{datatype}}**]({{complexType}}.md){{/isPrimitiveType}} | {{description}} | {{^required}}[optional] {{/required}}{{#readOnly}}[readonly] {{/readOnly}}{{#defaultValue}}[default to {{defaultValue}}]{{/defaultValue}}
|
||||||
{{/vars}}
|
{{/vars}}
|
||||||
|
{{#vars}}{{#isEnum}}
|
||||||
|
|
||||||
{{/model}}{{/models}}
|
<a name="{{{datatypeWithEnum}}}"></a>
|
||||||
|
## Enum: {{datatypeWithEnum}}
|
||||||
|
|
||||||
|
{{#allowableValues}}{{#enumVars}}
|
||||||
|
* `{{name}}` (value: `{{{value}}}`)
|
||||||
|
{{/enumVars}}{{/allowableValues}}
|
||||||
|
|
||||||
|
{{/isEnum}}{{/vars}}
|
||||||
|
{{/isEnum}}{{/model}}{{/models}}
|
||||||
|
@ -5,18 +5,18 @@
|
|||||||
* @readonly
|
* @readonly
|
||||||
*/
|
*/
|
||||||
{{/emitJSDoc}}
|
{{/emitJSDoc}}
|
||||||
exports.{{classname}} = {
|
var exports = {
|
||||||
{{#allowableValues}}
|
{{#allowableValues}}
|
||||||
{{#values}}
|
{{#enumVars}}
|
||||||
{{#emitJSDoc}}
|
{{#emitJSDoc}}
|
||||||
/**
|
/**
|
||||||
* value: {{{.}}}
|
* value: {{{value}}}
|
||||||
* @const
|
* @const
|
||||||
*/
|
*/
|
||||||
{{/emitJSDoc}}
|
{{/emitJSDoc}}
|
||||||
"{{{.}}}": "{{{.}}}"{{^-last}},
|
"{{name}}": {{{value}}}{{^-last}},
|
||||||
{{/-last}}
|
{{/-last}}
|
||||||
{{/values}}
|
{{/enumVars}}
|
||||||
{{/allowableValues}}
|
{{/allowableValues}}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -28,6 +28,7 @@ io.swagger.codegen.languages.ScalatraServerCodegen
|
|||||||
io.swagger.codegen.languages.SilexServerCodegen
|
io.swagger.codegen.languages.SilexServerCodegen
|
||||||
io.swagger.codegen.languages.SinatraServerCodegen
|
io.swagger.codegen.languages.SinatraServerCodegen
|
||||||
io.swagger.codegen.languages.SlimFrameworkServerCodegen
|
io.swagger.codegen.languages.SlimFrameworkServerCodegen
|
||||||
|
io.swagger.codegen.languages.SpringBootServerCodegen
|
||||||
io.swagger.codegen.languages.SpringMVCServerCodegen
|
io.swagger.codegen.languages.SpringMVCServerCodegen
|
||||||
io.swagger.codegen.languages.StaticDocCodegen
|
io.swagger.codegen.languages.StaticDocCodegen
|
||||||
io.swagger.codegen.languages.StaticHtmlGenerator
|
io.swagger.codegen.languages.StaticHtmlGenerator
|
||||||
@ -38,6 +39,7 @@ io.swagger.codegen.languages.TizenClientCodegen
|
|||||||
io.swagger.codegen.languages.TypeScriptAngular2ClientCodegen
|
io.swagger.codegen.languages.TypeScriptAngular2ClientCodegen
|
||||||
io.swagger.codegen.languages.TypeScriptAngularClientCodegen
|
io.swagger.codegen.languages.TypeScriptAngularClientCodegen
|
||||||
io.swagger.codegen.languages.TypeScriptNodeClientCodegen
|
io.swagger.codegen.languages.TypeScriptNodeClientCodegen
|
||||||
|
io.swagger.codegen.languages.TypeScriptFetchClientCodegen
|
||||||
io.swagger.codegen.languages.AkkaScalaClientCodegen
|
io.swagger.codegen.languages.AkkaScalaClientCodegen
|
||||||
io.swagger.codegen.languages.CsharpDotNet2ClientCodegen
|
io.swagger.codegen.languages.CsharpDotNet2ClientCodegen
|
||||||
io.swagger.codegen.languages.ClojureClientCodegen
|
io.swagger.codegen.languages.ClojureClientCodegen
|
||||||
|
@ -0,0 +1,44 @@
|
|||||||
|
# TypeScript-Fetch
|
||||||
|
|
||||||
|
This generator creates TypeScript/JavaScript client that utilizes [Fetch API](https://fetch.spec.whatwg.org/). The codegen Node module can be used in the following environments:
|
||||||
|
|
||||||
|
* Node.JS
|
||||||
|
* Webpack
|
||||||
|
* Browserify
|
||||||
|
|
||||||
|
It is usable in both TypeScript and JavaScript. In TypeScript, the definition should be automatically resolved via `typings` in `package.json`. ([Reference](http://www.typescriptlang.org/docs/handbook/typings-for-npm-packages.html))
|
||||||
|
|
||||||
|
### Installation ###
|
||||||
|
|
||||||
|
`swagger-codegen` does not generate JavaScript directly. The codegen Node module comes with `package.json` that bundles `typescript` and `typings` so it can self-compile. The self-compile is normally run automatically via the `npm` `postinstall` script of `npm install`.
|
||||||
|
|
||||||
|
CAVEAT: Due to [privilege implications](https://docs.npmjs.com/misc/scripts#user), `npm` may skip `postinstall` script if the user is `root`. You would need to manually invoke `npm install` or `npm run postinstall` for the codegen module if that's the case.
|
||||||
|
|
||||||
|
#### NPM repository ###
|
||||||
|
If you remove `"private": true` from `package.json`, you may publish the module to NPM. In which case, you would be able to install the module as any other NPM module.
|
||||||
|
|
||||||
|
It maybe useful to use [scoped packages](https://docs.npmjs.com/misc/scope).
|
||||||
|
|
||||||
|
#### NPM install local file ###
|
||||||
|
You should be able to directly install the module using `npm install file:///codegen_path`.
|
||||||
|
|
||||||
|
NOTES: If you do `npm install file:///codegen_path --save` NPM might convert your path to relative path, maybe have adverse affect. `npm install` and `npm shrinkwrap` may misbehave if the installation path is not absolute.
|
||||||
|
|
||||||
|
#### direct copy/symlink ###
|
||||||
|
You may also simply copy or symlink the codegen into a directly under your project. The syntax of the usage would differ if you take this route. (See below)
|
||||||
|
|
||||||
|
### Usage ###
|
||||||
|
With ES6 module syntax, the following syntaxes are supported:
|
||||||
|
```
|
||||||
|
import * as localName from 'npmName';
|
||||||
|
import {operationId} from 'npmName';
|
||||||
|
|
||||||
|
import * as localName from './symlinkDir';
|
||||||
|
import {operationId} from './symlinkDir';
|
||||||
|
```
|
||||||
|
With CommonJS, the following syntaxes are supported:
|
||||||
|
```
|
||||||
|
import localName = require('npmName');
|
||||||
|
|
||||||
|
import localName = require('./symlinkDir')';
|
||||||
|
```
|
@ -0,0 +1,133 @@
|
|||||||
|
import * as querystring from 'querystring';
|
||||||
|
import * as fetch from 'isomorphic-fetch';
|
||||||
|
import {assign} from './assign';
|
||||||
|
|
||||||
|
|
||||||
|
{{#models}}
|
||||||
|
{{#model}}
|
||||||
|
{{#description}}
|
||||||
|
/**
|
||||||
|
* {{{description}}}
|
||||||
|
*/
|
||||||
|
{{/description}}
|
||||||
|
export interface {{classname}} {{#parent}}extends {{{parent}}} {{/parent}}{
|
||||||
|
{{#vars}}
|
||||||
|
{{#description}}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* {{{description}}}
|
||||||
|
*/
|
||||||
|
{{/description}}
|
||||||
|
"{{name}}"{{^required}}?{{/required}}: {{#isEnum}}{{classname}}.{{{datatypeWithEnum}}}{{/isEnum}}{{^isEnum}}{{{datatype}}}{{/isEnum}};
|
||||||
|
{{/vars}}
|
||||||
|
}
|
||||||
|
|
||||||
|
{{#hasEnums}}
|
||||||
|
export namespace {{classname}} {
|
||||||
|
{{#vars}}
|
||||||
|
{{#isEnum}}
|
||||||
|
|
||||||
|
export type {{datatypeWithEnum}} = {{#allowableValues}}{{#values}}'{{.}}'{{^-last}} | {{/-last}}{{/values}}{{/allowableValues}};
|
||||||
|
{{/isEnum}}
|
||||||
|
{{/vars}}
|
||||||
|
}
|
||||||
|
{{/hasEnums}}
|
||||||
|
{{/model}}
|
||||||
|
{{/models}}
|
||||||
|
|
||||||
|
{{#apiInfo}}
|
||||||
|
{{#apis}}
|
||||||
|
{{#operations}}
|
||||||
|
//export namespace {{package}} {
|
||||||
|
'use strict';
|
||||||
|
|
||||||
|
{{#description}}
|
||||||
|
/**
|
||||||
|
* {{&description}}
|
||||||
|
*/
|
||||||
|
{{/description}}
|
||||||
|
export class {{classname}} {
|
||||||
|
protected basePath = '{{basePath}}';
|
||||||
|
public defaultHeaders : any = {};
|
||||||
|
|
||||||
|
constructor(basePath?: string) {
|
||||||
|
if (basePath) {
|
||||||
|
this.basePath = basePath;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
{{#operation}}
|
||||||
|
/**
|
||||||
|
* {{summary}}
|
||||||
|
* {{notes}}
|
||||||
|
{{#allParams}}* @param {{paramName}} {{description}}
|
||||||
|
{{/allParams}}*/
|
||||||
|
public {{nickname}} (params: { {{#allParams}} {{paramName}}{{^required}}?{{/required}}: {{{dataType}}};{{/allParams}} }, extraQueryParams?: any, extraFetchParams?: any ) : Promise<{{#returnType}}{{{returnType}}}{{/returnType}}{{^returnType}}{}{{/returnType}}> {
|
||||||
|
const localVarPath = this.basePath + '{{path}}'{{#pathParams}}
|
||||||
|
.replace('{' + '{{baseName}}' + '}', String(params.{{paramName}})){{/pathParams}};
|
||||||
|
|
||||||
|
let queryParameters: any = assign({}, extraQueryParams);
|
||||||
|
let headerParams: any = assign({}, this.defaultHeaders);
|
||||||
|
{{#hasFormParams}}
|
||||||
|
let formParams: any = {};
|
||||||
|
headerParams['Content-Type'] = 'application/x-www-form-urlencoded';
|
||||||
|
|
||||||
|
{{/hasFormParams}}
|
||||||
|
{{#hasBodyParam}}
|
||||||
|
headerParams['Content-Type'] = 'application/json';
|
||||||
|
|
||||||
|
{{/hasBodyParam}}
|
||||||
|
{{#allParams}}
|
||||||
|
{{#required}}
|
||||||
|
// verify required parameter '{{paramName}}' is set
|
||||||
|
if (params.{{paramName}} == null) {
|
||||||
|
throw new Error('Missing required parameter {{paramName}} when calling {{nickname}}');
|
||||||
|
}
|
||||||
|
{{/required}}
|
||||||
|
{{/allParams}}
|
||||||
|
{{#queryParams}}
|
||||||
|
if (params.{{paramName}} !== undefined) {
|
||||||
|
queryParameters['{{baseName}}'] = params.{{paramName}};
|
||||||
|
}
|
||||||
|
|
||||||
|
{{/queryParams}}
|
||||||
|
{{#headerParams}}
|
||||||
|
headerParams['{{baseName}}'] = params.{{paramName}};
|
||||||
|
|
||||||
|
{{/headerParams}}
|
||||||
|
{{#formParams}}
|
||||||
|
formParams['{{baseName}}'] = params.{{paramName}};
|
||||||
|
|
||||||
|
{{/formParams}}
|
||||||
|
let fetchParams = {
|
||||||
|
method: '{{httpMethod}}',
|
||||||
|
headers: headerParams,
|
||||||
|
{{#bodyParam}}body: JSON.stringify(params.{{paramName}}),
|
||||||
|
{{/bodyParam}}
|
||||||
|
{{#hasFormParams}}body: querystring.stringify(formParams),
|
||||||
|
{{/hasFormParams}}
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
if (extraFetchParams) {
|
||||||
|
fetchParams = assign(fetchParams, extraFetchParams);
|
||||||
|
}
|
||||||
|
|
||||||
|
let localVarPathWithQueryParameters = localVarPath + (localVarPath.indexOf('?') !== -1 ? '&' : '?') + querystring.stringify(queryParameters);
|
||||||
|
|
||||||
|
return fetch(localVarPathWithQueryParameters, fetchParams).then((response) => {
|
||||||
|
if (response.status >= 200 && response.status < 300) {
|
||||||
|
return response.json();
|
||||||
|
} else {
|
||||||
|
let error = new Error(response.statusText);
|
||||||
|
(error as any).response = response;
|
||||||
|
throw error;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
{{/operation}}
|
||||||
|
}
|
||||||
|
//}
|
||||||
|
{{/operations}}
|
||||||
|
{{/apis}}
|
||||||
|
{{/apiInfo}}
|
@ -0,0 +1,18 @@
|
|||||||
|
export function assign (target: any, ...args: any[]) {
|
||||||
|
'use strict';
|
||||||
|
if (target === undefined || target === null) {
|
||||||
|
throw new TypeError('Cannot convert undefined or null to object');
|
||||||
|
}
|
||||||
|
|
||||||
|
var output = Object(target);
|
||||||
|
for (let source of args) {
|
||||||
|
if (source !== undefined && source !== null) {
|
||||||
|
for (var nextKey in source) {
|
||||||
|
if (source.hasOwnProperty(nextKey)) {
|
||||||
|
output[nextKey] = source[nextKey];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return output;
|
||||||
|
};
|
@ -0,0 +1,52 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
# ref: https://help.github.com/articles/adding-an-existing-project-to-github-using-the-command-line/
|
||||||
|
#
|
||||||
|
# Usage example: /bin/sh ./git_push.sh wing328 swagger-petstore-perl "minor update"
|
||||||
|
|
||||||
|
git_user_id=$1
|
||||||
|
git_repo_id=$2
|
||||||
|
release_note=$3
|
||||||
|
|
||||||
|
if [ "$git_user_id" = "" ]; then
|
||||||
|
git_user_id="{{{gitUserId}}}"
|
||||||
|
echo "[INFO] No command line input provided. Set \$git_user_id to $git_user_id"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ "$git_repo_id" = "" ]; then
|
||||||
|
git_repo_id="{{{gitRepoId}}}"
|
||||||
|
echo "[INFO] No command line input provided. Set \$git_repo_id to $git_repo_id"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ "$release_note" = "" ]; then
|
||||||
|
release_note="{{{releaseNote}}}"
|
||||||
|
echo "[INFO] No command line input provided. Set \$release_note to $release_note"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Initialize the local directory as a Git repository
|
||||||
|
git init
|
||||||
|
|
||||||
|
# Adds the files in the local repository and stages them for commit.
|
||||||
|
git add .
|
||||||
|
|
||||||
|
# Commits the tracked changes and prepares them to be pushed to a remote repository.
|
||||||
|
git commit -m "$release_note"
|
||||||
|
|
||||||
|
# Sets the new remote
|
||||||
|
git_remote=`git remote`
|
||||||
|
if [ "$git_remote" = "" ]; then # git remote not defined
|
||||||
|
|
||||||
|
if [ "$GIT_TOKEN" = "" ]; then
|
||||||
|
echo "[INFO] \$GIT_TOKEN (environment variable) is not set. Using the git crediential in your environment."
|
||||||
|
git remote add origin https://github.com/${git_user_id}/${git_repo_id}.git
|
||||||
|
else
|
||||||
|
git remote add origin https://${git_user_id}:${GIT_TOKEN}@github.com/${git_user_id}/${git_repo_id}.git
|
||||||
|
fi
|
||||||
|
|
||||||
|
fi
|
||||||
|
|
||||||
|
git pull origin master
|
||||||
|
|
||||||
|
# Pushes (Forces) the changes in the local repository up to the remote repository
|
||||||
|
echo "Git pushing to https://github.com/${git_user_id}/${git_repo_id}.git"
|
||||||
|
git push origin master 2>&1 | grep -v 'To https'
|
||||||
|
|
@ -0,0 +1,18 @@
|
|||||||
|
{
|
||||||
|
"name": "{{#npmName}}{{{npmName}}}{{/npmName}}{{^npmName}}typescript-fetch-api{{/npmName}}",
|
||||||
|
"version": "{{#npmVersion}}{{{npmVersion}}}{{/npmVersion}}{{^npmVersion}}0.0.0{{/npmVersion}}",
|
||||||
|
"private": true,
|
||||||
|
"main": "./dist/api.js",
|
||||||
|
"browser": "./dist/api.js",
|
||||||
|
"typings": "./dist/api.d.ts",
|
||||||
|
"dependencies": {
|
||||||
|
"isomorphic-fetch": "^2.2.1"
|
||||||
|
},
|
||||||
|
"scripts" : {
|
||||||
|
"install" : "typings install && tsc"
|
||||||
|
},
|
||||||
|
"devDependencies": {
|
||||||
|
"typescript": "^1.8.10",
|
||||||
|
"typings": "^0.8.1"
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,16 @@
|
|||||||
|
{
|
||||||
|
"compilerOptions": {
|
||||||
|
"declaration": true,
|
||||||
|
"target": "{{#supportsES6}}es6{{/supportsES6}}{{^supportsES6}}es5{{/supportsES6}}",
|
||||||
|
"module": "commonjs",
|
||||||
|
"noImplicitAny": true,
|
||||||
|
"outDir": "dist"
|
||||||
|
},
|
||||||
|
"exclude": [
|
||||||
|
"dist",
|
||||||
|
"node_modules",
|
||||||
|
"typings/browser",
|
||||||
|
"typings/main",
|
||||||
|
"typings/main.d.ts"
|
||||||
|
]
|
||||||
|
}
|
@ -0,0 +1,9 @@
|
|||||||
|
{
|
||||||
|
"version": false,
|
||||||
|
"dependencies": {},
|
||||||
|
"ambientDependencies": {
|
||||||
|
{{^supportsES6}} "es6-promise": "registry:dt/es6-promise#0.0.0+20160423074304",
|
||||||
|
{{/supportsES6}} "node": "registry:dt/node#4.0.0+20160423143914",
|
||||||
|
"isomorphic-fetch": "registry:dt/isomorphic-fetch#0.0.0+20160505171433"
|
||||||
|
}
|
||||||
|
}
|
@ -39,8 +39,6 @@
|
|||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<Reference Include="System" />
|
<Reference Include="System" />
|
||||||
<Reference Include="System.Core" />
|
<Reference Include="System.Core" />
|
||||||
<Reference Include="System.Net.Http" />
|
|
||||||
<Reference Include="System.Net.Http.WebRequest" />
|
|
||||||
<Reference Include="System.Xml.Linq" />
|
<Reference Include="System.Xml.Linq" />
|
||||||
<Reference Include="System.Data.DataSetExtensions" />
|
<Reference Include="System.Data.DataSetExtensions" />
|
||||||
<Reference Include="Microsoft.CSharp" />
|
<Reference Include="Microsoft.CSharp" />
|
||||||
@ -48,18 +46,23 @@
|
|||||||
<Reference Include="System.Runtime.Serialization" />
|
<Reference Include="System.Runtime.Serialization" />
|
||||||
<Reference Include="System.Xml" />
|
<Reference Include="System.Xml" />
|
||||||
<Reference Include="Newtonsoft.Json">
|
<Reference Include="Newtonsoft.Json">
|
||||||
<SpecificVersion>False</SpecificVersion>
|
<HintPath Condition="Exists('$(SolutionDir)\packages')">$(SolutionDir)\packages\Newtonsoft.Json.8.0.2\lib\{{targetFrameworkNuget}}\Newtonsoft.Json.dll</HintPath>
|
||||||
<HintPath>{{binRelativePath}}/Newtonsoft.Json.8.0.2/lib/{{targetFrameworkNuget}}/Newtonsoft.Json.dll</HintPath>
|
<HintPath Condition="Exists('..\packages')">..\packages\Newtonsoft.Json.8.0.2\lib\{{targetFrameworkNuget}}\Newtonsoft.Json.dll</HintPath>
|
||||||
|
<HintPath Condition="Exists('..\..\packages')">..\..\packages\Newtonsoft.Json.8.0.2\lib\{{targetFrameworkNuget}}\Newtonsoft.Json.dll</HintPath>
|
||||||
|
<HintPath Condition="Exists('{{binRelativePath}}')">{{binRelativePath}}\Newtonsoft.Json.8.0.2\lib\{{targetFrameworkNuget}}\Newtonsoft.Json.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="RestSharp">
|
<Reference Include="RestSharp">
|
||||||
<HintPath>{{binRelativePath}}/RestSharp.105.2.3/lib/{{targetFrameworkNuget}}/RestSharp.dll</HintPath>
|
<HintPath Condition="Exists('$(SolutionDir)\packages')">$(SolutionDir)\packages\RestSharp.105.1.0\lib\{{targetFrameworkNuget}}\RestSharp.dll</HintPath>
|
||||||
|
<HintPath Condition="Exists('..\packages')">..\packages\RestSharp.105.1.0\lib\{{targetFrameworkNuget}}\RestSharp.dll</HintPath>
|
||||||
|
<HintPath Condition="Exists('..\..\packages')">..\..\packages\RestSharp.105.1.0\lib\{{targetFrameworkNuget}}\RestSharp.dll</HintPath>
|
||||||
|
<HintPath Condition="Exists('{{binRelativePath}}')">{{binRelativePath}}\RestSharp.105.1.0\lib\{{targetFrameworkNuget}}\RestSharp.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<Compile Include="Properties\AssemblyInfo.cs"/>
|
<Compile Include="**\*.cs"/>
|
||||||
<Compile Include="Api\*.cs"/>
|
</ItemGroup>
|
||||||
<Compile Include="Client\*.cs"/>
|
<ItemGroup>
|
||||||
<Compile Include="Model\*.cs"/>
|
<None Include="packages.config" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<Import Project="$(MsBuildToolsPath)\Microsoft.CSharp.targets" />
|
<Import Project="$(MsBuildToolsPath)\Microsoft.CSharp.targets" />
|
||||||
</Project>
|
</Project>
|
||||||
|
@ -37,8 +37,8 @@ NOTE: RestSharp versions greater than 105.1.0 have a bug which causes file uploa
|
|||||||
|
|
||||||
## Installation
|
## Installation
|
||||||
Run the following command to generate the DLL
|
Run the following command to generate the DLL
|
||||||
- [Mac/Linux] `/bin/sh compile-mono.sh`
|
- [Mac/Linux] `/bin/sh build.sh`
|
||||||
- [Windows] `compile.bat`
|
- [Windows] `build.bat`
|
||||||
|
|
||||||
Then include the DLL (under the `bin` folder) in the C# project, and use the namespaces:
|
Then include the DLL (under the `bin` folder) in the C# project, and use the namespaces:
|
||||||
```csharp
|
```csharp
|
||||||
@ -72,8 +72,8 @@ namespace Example
|
|||||||
Configuration.Default.Password = 'YOUR_PASSWORD';{{/isBasic}}{{#isApiKey}}
|
Configuration.Default.Password = 'YOUR_PASSWORD';{{/isBasic}}{{#isApiKey}}
|
||||||
// Configure API key authorization: {{{name}}}
|
// Configure API key authorization: {{{name}}}
|
||||||
Configuration.Default.ApiKey.Add('{{{keyParamName}}}', 'YOUR_API_KEY');
|
Configuration.Default.ApiKey.Add('{{{keyParamName}}}', 'YOUR_API_KEY');
|
||||||
// Uncomment below to setup prefix (e.g. BEARER) for API key, if needed
|
// Uncomment below to setup prefix (e.g. Bearer) for API key, if needed
|
||||||
// Configuration.Default.ApiKeyPrefix.Add('{{{keyParamName}}}', 'BEARER');{{/isApiKey}}{{#isOAuth}}
|
// Configuration.Default.ApiKeyPrefix.Add('{{{keyParamName}}}', 'Bearer');{{/isApiKey}}{{#isOAuth}}
|
||||||
// Configure OAuth2 access token for authorization: {{{name}}}
|
// Configure OAuth2 access token for authorization: {{{name}}}
|
||||||
Configuration.Default.AccessToken = 'YOUR_ACCESS_TOKEN';{{/isOAuth}}{{/authMethods}}
|
Configuration.Default.AccessToken = 'YOUR_ACCESS_TOKEN';{{/isOAuth}}{{/authMethods}}
|
||||||
{{/hasAuthMethods}}
|
{{/hasAuthMethods}}
|
||||||
|
@ -0,0 +1,27 @@
|
|||||||
|
Microsoft Visual Studio Solution File, Format Version 12.00
|
||||||
|
# Visual Studio 2012
|
||||||
|
VisualStudioVersion = 12.0.0.0
|
||||||
|
MinimumVisualStudioVersion = 10.0.0.1
|
||||||
|
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "{{packageName}}", "src\{{packageName}}\{{packageName}}.csproj", "{{packageGuid}}"
|
||||||
|
EndProject
|
||||||
|
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "{{testPackageName}}", "src\{{testPackageName}}\{{testPackageName}}.csproj", "{19F1DEBC-DE5E-4517-8062-F000CD499087}"
|
||||||
|
EndProject
|
||||||
|
Global
|
||||||
|
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||||
|
Debug|Any CPU = Debug|Any CPU
|
||||||
|
Release|Any CPU = Release|Any CPU
|
||||||
|
EndGlobalSection
|
||||||
|
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
||||||
|
{{packageGuid}}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||||
|
{{packageGuid}}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||||
|
{{packageGuid}}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||||
|
{{packageGuid}}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||||
|
{19F1DEBC-DE5E-4517-8062-F000CD499087}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||||
|
{19F1DEBC-DE5E-4517-8062-F000CD499087}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||||
|
{19F1DEBC-DE5E-4517-8062-F000CD499087}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||||
|
{19F1DEBC-DE5E-4517-8062-F000CD499087}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||||
|
EndGlobalSection
|
||||||
|
GlobalSection(SolutionProperties) = preSolution
|
||||||
|
HideSolutionNode = FALSE
|
||||||
|
EndGlobalSection
|
||||||
|
EndGlobal
|
@ -0,0 +1,81 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||||
|
<PropertyGroup>
|
||||||
|
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
|
||||||
|
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
|
||||||
|
<ProjectGuid>{19F1DEBC-DE5E-4517-8062-F000CD499087}</ProjectGuid>
|
||||||
|
<OutputType>Library</OutputType>
|
||||||
|
<AppDesignerFolder>Properties</AppDesignerFolder>
|
||||||
|
<RootNamespace>{{testPackageName}}</RootNamespace>
|
||||||
|
<AssemblyName>{{testPackageName}}</AssemblyName>
|
||||||
|
{{^supportsUWP}}
|
||||||
|
<TargetFrameworkVersion>{{targetFramework}}</TargetFrameworkVersion>
|
||||||
|
{{/supportsUWP}}
|
||||||
|
{{#supportsUWP}}
|
||||||
|
<TargetPlatformIdentifier>UAP</TargetPlatformIdentifier>
|
||||||
|
<TargetPlatformVersion>10.0.10240.0</TargetPlatformVersion>
|
||||||
|
<TargetPlatformMinVersion>10.0.10240.0</TargetPlatformMinVersion>
|
||||||
|
<MinimumVisualStudioVersion>14</MinimumVisualStudioVersion>
|
||||||
|
{{/supportsUWP}}
|
||||||
|
<FileAlignment>512</FileAlignment>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
|
||||||
|
<DebugSymbols>true</DebugSymbols>
|
||||||
|
<DebugType>full</DebugType>
|
||||||
|
<Optimize>false</Optimize>
|
||||||
|
<OutputPath>bin\Debug\</OutputPath>
|
||||||
|
<DefineConstants>DEBUG;TRACE</DefineConstants>
|
||||||
|
<ErrorReport>prompt</ErrorReport>
|
||||||
|
<WarningLevel>4</WarningLevel>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
|
||||||
|
<DebugType>pdbonly</DebugType>
|
||||||
|
<Optimize>true</Optimize>
|
||||||
|
<OutputPath>bin\Release\</OutputPath>
|
||||||
|
<DefineConstants>TRACE</DefineConstants>
|
||||||
|
<ErrorReport>prompt</ErrorReport>
|
||||||
|
<WarningLevel>4</WarningLevel>
|
||||||
|
</PropertyGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<Reference Include="System" />
|
||||||
|
<Reference Include="System.Core" />
|
||||||
|
<Reference Include="System.Xml.Linq" />
|
||||||
|
<Reference Include="System.Data.DataSetExtensions" />
|
||||||
|
<Reference Include="Microsoft.CSharp" />
|
||||||
|
<Reference Include="System.Data" />
|
||||||
|
<Reference Include="System.Runtime.Serialization" />
|
||||||
|
<Reference Include="System.Xml" />
|
||||||
|
<Reference Include="Newtonsoft.Json">
|
||||||
|
<HintPath Condition="Exists('$(SolutionDir)\packages')">$(SolutionDir)\packages\Newtonsoft.Json.8.0.2\lib\{{targetFrameworkNuget}}\Newtonsoft.Json.dll</HintPath>
|
||||||
|
<HintPath Condition="Exists('..\packages')">..\packages\Newtonsoft.Json.8.0.2\lib\{{targetFrameworkNuget}}\Newtonsoft.Json.dll</HintPath>
|
||||||
|
<HintPath Condition="Exists('..\..\packages')">..\..\packages\Newtonsoft.Json.8.0.2\lib\{{targetFrameworkNuget}}\Newtonsoft.Json.dll</HintPath>
|
||||||
|
<HintPath Condition="Exists('{{binRelativePath}}')">{{binRelativePath}}\Newtonsoft.Json.8.0.2\lib\{{targetFrameworkNuget}}\Newtonsoft.Json.dll</HintPath>
|
||||||
|
</Reference>
|
||||||
|
<Reference Include="RestSharp">
|
||||||
|
<HintPath Condition="Exists('$(SolutionDir)\packages')">$(SolutionDir)\packages\RestSharp.105.1.0\lib\{{targetFrameworkNuget}}\RestSharp.dll</HintPath>
|
||||||
|
<HintPath Condition="Exists('..\packages')">..\packages\RestSharp.105.1.0\lib\{{targetFrameworkNuget}}\RestSharp.dll</HintPath>
|
||||||
|
<HintPath Condition="Exists('..\..\packages')">..\..\packages\RestSharp.105.1.0\lib\{{targetFrameworkNuget}}\RestSharp.dll</HintPath>
|
||||||
|
<HintPath Condition="Exists('{{binRelativePath}}')">{{binRelativePath}}\RestSharp.105.1.0\lib\{{targetFrameworkNuget}}\RestSharp.dll</HintPath>
|
||||||
|
</Reference>
|
||||||
|
<Reference Include="nunit.framework">
|
||||||
|
<HintPath Condition="Exists('$(SolutionDir)\packages')">$(SolutionDir)\packages\NUnit.2.6.3\lib\nunit.framework.dll</HintPath>
|
||||||
|
<HintPath Condition="Exists('..\packages')">..\packages\NUnit.2.6.3\lib\nunit.framework.dll</HintPath>
|
||||||
|
<HintPath Condition="Exists('..\..\packages')">..\..\packages\NUnit.2.6.3\lib\nunit.framework.dll</HintPath>
|
||||||
|
<HintPath Condition="Exists('{{binRelativePath}}')">{{binRelativePath}}\NUnit.2.6.3\lib\nunit.framework.dll</HintPath>
|
||||||
|
</Reference>
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<Compile Include="**\*.cs"/>
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<None Include="packages.config" />
|
||||||
|
</ItemGroup>
|
||||||
|
<Import Project="$(MsBuildToolsPath)\Microsoft.CSharp.targets" />
|
||||||
|
<ItemGroup>
|
||||||
|
<ProjectReference Include="..\{{packageName}}\{{packageName}}.csproj">
|
||||||
|
<Project>{{packageGuid}}</Project>
|
||||||
|
<Name>{{packageName}}</Name>
|
||||||
|
</ProjectReference>
|
||||||
|
</ItemGroup>
|
||||||
|
</Project>
|
||||||
|
|
@ -227,7 +227,7 @@ namespace {{packageName}}.Api
|
|||||||
if ({{paramName}} != null) {{#isFile}}localVarFileParams.Add("{{baseName}}", Configuration.ApiClient.ParameterToFile("{{baseName}}", {{paramName}}));{{/isFile}}{{^isFile}}localVarFormParams.Add("{{baseName}}", Configuration.ApiClient.ParameterToString({{paramName}})); // form parameter{{/isFile}}
|
if ({{paramName}} != null) {{#isFile}}localVarFileParams.Add("{{baseName}}", Configuration.ApiClient.ParameterToFile("{{baseName}}", {{paramName}}));{{/isFile}}{{^isFile}}localVarFormParams.Add("{{baseName}}", Configuration.ApiClient.ParameterToString({{paramName}})); // form parameter{{/isFile}}
|
||||||
{{/formParams}}
|
{{/formParams}}
|
||||||
{{#bodyParam}}
|
{{#bodyParam}}
|
||||||
if ({{paramName}}.GetType() != typeof(byte[]))
|
if ({{paramName}} != null && {{paramName}}.GetType() != typeof(byte[]))
|
||||||
{
|
{
|
||||||
localVarPostBody = Configuration.ApiClient.Serialize({{paramName}}); // http body (model) parameter
|
localVarPostBody = Configuration.ApiClient.Serialize({{paramName}}); // http body (model) parameter
|
||||||
}
|
}
|
||||||
@ -360,7 +360,7 @@ namespace {{packageName}}.Api
|
|||||||
if ({{paramName}} != null) {{#isFile}}localVarFileParams.Add("{{baseName}}", Configuration.ApiClient.ParameterToFile("{{baseName}}", {{paramName}}));{{/isFile}}{{^isFile}}localVarFormParams.Add("{{baseName}}", Configuration.ApiClient.ParameterToString({{paramName}})); // form parameter{{/isFile}}
|
if ({{paramName}} != null) {{#isFile}}localVarFileParams.Add("{{baseName}}", Configuration.ApiClient.ParameterToFile("{{baseName}}", {{paramName}}));{{/isFile}}{{^isFile}}localVarFormParams.Add("{{baseName}}", Configuration.ApiClient.ParameterToString({{paramName}})); // form parameter{{/isFile}}
|
||||||
{{/formParams}}
|
{{/formParams}}
|
||||||
{{#bodyParam}}
|
{{#bodyParam}}
|
||||||
if ({{paramName}}.GetType() != typeof(byte[]))
|
if ({{paramName}} != null && {{paramName}}.GetType() != typeof(byte[]))
|
||||||
{
|
{
|
||||||
localVarPostBody = Configuration.ApiClient.Serialize({{paramName}}); // http body (model) parameter
|
localVarPostBody = Configuration.ApiClient.Serialize({{paramName}}); // http body (model) parameter
|
||||||
}
|
}
|
||||||
|
@ -37,8 +37,8 @@ namespace Example
|
|||||||
Configuration.Default.Password = 'YOUR_PASSWORD';{{/isBasic}}{{#isApiKey}}
|
Configuration.Default.Password = 'YOUR_PASSWORD';{{/isBasic}}{{#isApiKey}}
|
||||||
// Configure API key authorization: {{{name}}}
|
// Configure API key authorization: {{{name}}}
|
||||||
Configuration.Default.ApiKey.Add('{{{keyParamName}}}', 'YOUR_API_KEY');
|
Configuration.Default.ApiKey.Add('{{{keyParamName}}}', 'YOUR_API_KEY');
|
||||||
// Uncomment below to setup prefix (e.g. BEARER) for API key, if needed
|
// Uncomment below to setup prefix (e.g. Bearer) for API key, if needed
|
||||||
// Configuration.Default.ApiKeyPrefix.Add('{{{keyParamName}}}', 'BEARER');{{/isApiKey}}{{#isOAuth}}
|
// Configuration.Default.ApiKeyPrefix.Add('{{{keyParamName}}}', 'Bearer');{{/isApiKey}}{{#isOAuth}}
|
||||||
// Configure OAuth2 access token for authorization: {{{name}}}
|
// Configure OAuth2 access token for authorization: {{{name}}}
|
||||||
Configuration.Default.AccessToken = 'YOUR_ACCESS_TOKEN';{{/isOAuth}}{{/authMethods}}
|
Configuration.Default.AccessToken = 'YOUR_ACCESS_TOKEN';{{/isOAuth}}{{/authMethods}}
|
||||||
{{/hasAuthMethods}}
|
{{/hasAuthMethods}}
|
||||||
|
@ -4,17 +4,17 @@ netfx=${frameworkVersion#net}
|
|||||||
|
|
||||||
wget -nc https://nuget.org/nuget.exe;
|
wget -nc https://nuget.org/nuget.exe;
|
||||||
mozroots --import --sync
|
mozroots --import --sync
|
||||||
mono nuget.exe install vendor/packages.config -o vendor;
|
mono nuget.exe install src/{{packageName}}/packages.config -o packages;
|
||||||
mkdir -p bin;
|
mkdir -p bin;
|
||||||
|
|
||||||
cp vendor/Newtonsoft.Json.8.0.2/lib/{{targetFrameworkNuget}}/Newtonsoft.Json.dll bin/Newtonsoft.Json.dll;
|
cp packages/Newtonsoft.Json.8.0.2/lib/{{targetFrameworkNuget}}/Newtonsoft.Json.dll bin/Newtonsoft.Json.dll;
|
||||||
cp vendor/RestSharp.105.1.0/lib/{{targetFrameworkNuget}}/RestSharp.dll bin/RestSharp.dll;
|
cp packages/RestSharp.105.1.0/lib/{{targetFrameworkNuget}}/RestSharp.dll bin/RestSharp.dll;
|
||||||
|
|
||||||
mcs -sdk:${netfx} -r:bin/Newtonsoft.Json.dll,\
|
mcs -sdk:${netfx} -r:bin/Newtonsoft.Json.dll,\
|
||||||
bin/RestSharp.dll,\
|
bin/RestSharp.dll,\
|
||||||
System.Runtime.Serialization.dll \
|
System.Runtime.Serialization.dll \
|
||||||
-target:library \
|
-target:library \
|
||||||
-out:bin/{{packageName}}.dll \
|
-out:bin/{{packageName}}.dll \
|
||||||
-recurse:'src/*.cs' \
|
-recurse:'src/{{packageName}}/*.cs' \
|
||||||
-doc:bin/{{packageName}}.xml \
|
-doc:bin/{{packageName}}.xml \
|
||||||
-platform:anycpu
|
-platform:anycpu
|
||||||
|
@ -4,11 +4,11 @@
|
|||||||
{{^supportsAsync}}SET CSCPATH=%SYSTEMROOT%\Microsoft.NET\Framework\v3.5{{/supportsAsync}}
|
{{^supportsAsync}}SET CSCPATH=%SYSTEMROOT%\Microsoft.NET\Framework\v3.5{{/supportsAsync}}
|
||||||
|
|
||||||
if not exist ".\nuget.exe" powershell -Command "(new-object System.Net.WebClient).DownloadFile('https://nuget.org/nuget.exe', '.\nuget.exe')"
|
if not exist ".\nuget.exe" powershell -Command "(new-object System.Net.WebClient).DownloadFile('https://nuget.org/nuget.exe', '.\nuget.exe')"
|
||||||
.\nuget.exe install vendor/packages.config -o vendor
|
.\nuget.exe install src\{{packageName}}\packages.config -o packages
|
||||||
|
|
||||||
if not exist ".\bin" mkdir bin
|
if not exist ".\bin" mkdir bin
|
||||||
|
|
||||||
copy vendor\Newtonsoft.Json.8.0.2\lib\{{targetFrameworkNuget}}\Newtonsoft.Json.dll bin\Newtonsoft.Json.dll
|
copy packages\Newtonsoft.Json.8.0.2\lib\{{targetFrameworkNuget}}\Newtonsoft.Json.dll bin\Newtonsoft.Json.dll
|
||||||
copy vendor\RestSharp.105.1.0\lib\{{targetFrameworkNuget}}\RestSharp.dll bin\RestSharp.dll
|
copy packages\RestSharp.105.1.0\lib\{{targetFrameworkNuget}}\RestSharp.dll bin\RestSharp.dll
|
||||||
|
|
||||||
%CSCPATH%\csc /reference:bin\Newtonsoft.Json.dll;bin\RestSharp.dll /target:library /out:bin\{{packageName}}.dll /recurse:src\*.cs /doc:bin\{{packageName}}.xml
|
%CSCPATH%\csc /reference:bin\Newtonsoft.Json.dll;bin\RestSharp.dll /target:library /out:bin\{{packageName}}.dll /recurse:src\{{packageName}}\*.cs /doc:bin\{{packageName}}.xml
|
||||||
|
@ -32,7 +32,7 @@
|
|||||||
/// <param name="{{name}}">{{#description}}{{description}}{{/description}}{{^description}}{{name}}{{/description}}{{#required}} (required){{/required}}{{#defaultValue}} (default to {{defaultValue}}){{/defaultValue}}.</param>
|
/// <param name="{{name}}">{{#description}}{{description}}{{/description}}{{^description}}{{name}}{{/description}}{{#required}} (required){{/required}}{{#defaultValue}} (default to {{defaultValue}}){{/defaultValue}}.</param>
|
||||||
{{/isReadOnly}}
|
{{/isReadOnly}}
|
||||||
{{/vars}}
|
{{/vars}}
|
||||||
public {{classname}}({{#vars}}{{^isReadOnly}}{{{datatypeWithEnum}}}{{#isEnum}}?{{/isEnum}} {{name}} = null{{#hasMore}}, {{/hasMore}}{{/isReadOnly}}{{/vars}})
|
public {{classname}}({{#vars}}{{^isReadOnly}}{{{datatypeWithEnum}}}{{#isEnum}}?{{/isEnum}} {{name}} = null{{/isReadOnly}}{{#hasMoreNonReadOnly}}, {{/hasMoreNonReadOnly}}{{/vars}})
|
||||||
{
|
{
|
||||||
{{#vars}}{{^isReadOnly}}{{#required}}// to ensure "{{name}}" is required (not null)
|
{{#vars}}{{^isReadOnly}}{{#required}}// to ensure "{{name}}" is required (not null)
|
||||||
if ({{name}} == null)
|
if ({{name}} == null)
|
||||||
|
@ -0,0 +1,6 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<packages>
|
||||||
|
<package id="NUnit" version="2.6.3" targetFramework="{{targetFrameworkNuget}}" />
|
||||||
|
<package id="RestSharp" version="105.1.0" targetFramework="{{targetFrameworkNuget}}" developmentDependency="true" />
|
||||||
|
<package id="Newtonsoft.Json" version="8.0.2" targetFramework="{{targetFrameworkNuget}}" developmentDependency="true" />
|
||||||
|
</packages>
|
@ -35,9 +35,9 @@ func New{{classname}}WithBasePath(basePath string) *{{classname}} {
|
|||||||
* {{notes}}{{/notes}}
|
* {{notes}}{{/notes}}
|
||||||
*
|
*
|
||||||
{{#allParams}} * @param {{paramName}} {{description}}
|
{{#allParams}} * @param {{paramName}} {{description}}
|
||||||
{{/allParams}} * @return {{#returnType}}{{{returnType}}}{{/returnType}}{{^returnType}}void{{/returnType}}
|
{{/allParams}} * @return {{#returnType}}{{^isListContainer}}*{{/isListContainer}}{{{returnType}}}{{/returnType}}{{^returnType}}void{{/returnType}}
|
||||||
*/
|
*/
|
||||||
func (a {{classname}}) {{nickname}}({{#allParams}}{{paramName}} {{{dataType}}}{{#hasMore}}, {{/hasMore}}{{/allParams}}) ({{#returnType}}{{{returnType}}}, {{/returnType}}APIResponse, error) {
|
func (a {{classname}}) {{nickname}}({{#allParams}}{{paramName}} {{{dataType}}}{{#hasMore}}, {{/hasMore}}{{/allParams}}) ({{#returnType}}{{^isListContainer}}*{{/isListContainer}}{{{returnType}}}, {{/returnType}}*APIResponse, error) {
|
||||||
|
|
||||||
var httpMethod = "{{httpMethod}}"
|
var httpMethod = "{{httpMethod}}"
|
||||||
// create path and map variables
|
// create path and map variables
|
||||||
@ -46,7 +46,7 @@ func (a {{classname}}) {{nickname}}({{#allParams}}{{paramName}} {{{dataType}}}{{
|
|||||||
{{#allParams}}{{#required}}
|
{{#allParams}}{{#required}}
|
||||||
// verify the required parameter '{{paramName}}' is set
|
// verify the required parameter '{{paramName}}' is set
|
||||||
if &{{paramName}} == nil {
|
if &{{paramName}} == nil {
|
||||||
return {{#returnType}}*new({{{returnType}}}), {{/returnType}}*NewAPIResponseWithError("400 - Bad Request"), errors.New("Missing required parameter '{{paramName}}' when calling {{classname}}->{{operationId}}")
|
return {{#returnType}}{{#isListContainer}}*{{/isListContainer}}new({{{returnType}}}), {{/returnType}}nil, errors.New("Missing required parameter '{{paramName}}' when calling {{classname}}->{{operationId}}")
|
||||||
}{{/required}}{{/allParams}}
|
}{{/required}}{{/allParams}}
|
||||||
|
|
||||||
headerParams := make(map[string]string)
|
headerParams := make(map[string]string)
|
||||||
@ -113,10 +113,10 @@ func (a {{classname}}) {{nickname}}({{#allParams}}{{paramName}} {{{dataType}}}{{
|
|||||||
{{#returnType}} var successPayload = new({{returnType}}){{/returnType}}
|
{{#returnType}} var successPayload = new({{returnType}}){{/returnType}}
|
||||||
httpResponse, err := a.Configuration.APIClient.CallAPI(path, httpMethod, postBody, headerParams, queryParams, formParams, fileName, fileBytes)
|
httpResponse, err := a.Configuration.APIClient.CallAPI(path, httpMethod, postBody, headerParams, queryParams, formParams, fileName, fileBytes)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return {{#returnType}}*successPayload, {{/returnType}}*NewAPIResponse(httpResponse.RawResponse), err
|
return {{#returnType}}{{#isListContainer}}*{{/isListContainer}}successPayload, {{/returnType}}NewAPIResponse(httpResponse.RawResponse), err
|
||||||
}
|
}
|
||||||
{{#returnType}}
|
{{#returnType}}
|
||||||
err = json.Unmarshal(httpResponse.Body(), &successPayload){{/returnType}}
|
err = json.Unmarshal(httpResponse.Body(), &successPayload){{/returnType}}
|
||||||
return {{#returnType}}*successPayload, {{/returnType}}*NewAPIResponse(httpResponse.RawResponse), err
|
return {{#returnType}}{{#isListContainer}}*{{/isListContainer}}successPayload, {{/returnType}}NewAPIResponse(httpResponse.RawResponse), err
|
||||||
}
|
}
|
||||||
{{/operation}}{{/operations}}
|
{{/operation}}{{/operations}}
|
||||||
|
@ -127,6 +127,7 @@
|
|||||||
{{#responses}}
|
{{#responses}}
|
||||||
<h4 class="field-label">{{code}}</h4>
|
<h4 class="field-label">{{code}}</h4>
|
||||||
{{message}}
|
{{message}}
|
||||||
|
{{#simpleType}}<a href="#{{dataType}}">{{dataType}}</a>{{/simpleType}}
|
||||||
{{#examples}}
|
{{#examples}}
|
||||||
<h3 class="field-label">Example data</h3>
|
<h3 class="field-label">Example data</h3>
|
||||||
<div class="example-data-content-type">Content-Type: {{{contentType}}}</div>
|
<div class="example-data-content-type">Content-Type: {{{contentType}}}</div>
|
||||||
@ -158,7 +159,7 @@
|
|||||||
<div class="model">
|
<div class="model">
|
||||||
<h3 class="field-label"><a name="{{classname}}">{{classname}}</a> <a class="up" href="#__Models">Up</a></h3>
|
<h3 class="field-label"><a name="{{classname}}">{{classname}}</a> <a class="up" href="#__Models">Up</a></h3>
|
||||||
<div class="field-items">
|
<div class="field-items">
|
||||||
{{#vars}}<div class="param">{{name}} {{^required}}(optional){{/required}}</div><div class="param-desc"><span class="param-type">{{datatype}}</span> {{description}}</div>
|
{{#vars}}<div class="param">{{name}} {{^required}}(optional){{/required}}</div><div class="param-desc"><span class="param-type">{{^isPrimitiveType}}<a href="#{{complexType}}">{{datatype}}</a>{{/isPrimitiveType}}</span> {{description}}</div>
|
||||||
{{#isEnum}}
|
{{#isEnum}}
|
||||||
<div class="param-enum-header">Enum:</div>
|
<div class="param-enum-header">Enum:</div>
|
||||||
{{#_enum}}<div class="param-enum">{{this}}</div>{{/_enum}}
|
{{#_enum}}<div class="param-enum">{{this}}</div>{{/_enum}}
|
||||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user