From 1c61105830a3ebcbf06c10bf22dbc6e3b083e771 Mon Sep 17 00:00:00 2001 From: qct Date: Fri, 10 Nov 2017 03:01:34 +0000 Subject: [PATCH] remove generated files --- asciidoc/swagger-example.adoc | 331 -- client/go/.gitignore | 24 - client/go/.swagger-codegen-ignore | 23 - client/go/.swagger-codegen/VERSION | 1 - client/go/.travis.yml | 8 - client/go/README.md | 51 - client/go/api_client.go | 164 - client/go/api_response.go | 44 - client/go/book.go | 24 - client/go/bookapi_api.go | 229 - client/go/category.go | 18 - client/go/categoryapi_api.go | 157 - client/go/configuration.go | 67 - client/go/docs/Book.md | 13 - client/go/docs/BookapiApi.md | 92 - client/go/docs/Category.md | 11 - client/go/docs/CategoryapiApi.md | 61 - client/go/git_push.sh | 52 - client/html2/.swagger-codegen-ignore | 23 - client/html2/.swagger-codegen/VERSION | 1 - client/html2/index.html | 4242 ----------------- client/java/.gitignore | 21 - client/java/.swagger-codegen-ignore | 23 - client/java/.swagger-codegen/VERSION | 1 - client/java/.travis.yml | 17 - client/java/README.md | 130 - client/java/build.gradle | 102 - client/java/build.sbt | 19 - client/java/docs/Book.md | 13 - client/java/docs/BookApiApi.md | 170 - client/java/docs/Category.md | 11 - client/java/docs/CategoryApiApi.md | 92 - client/java/git_push.sh | 52 - client/java/gradle.properties | 2 - client/java/gradle/wrapper/gradle-wrapper.jar | Bin 53639 -> 0 bytes .../gradle/wrapper/gradle-wrapper.properties | 6 - client/java/gradlew | 160 - client/java/gradlew.bat | 90 - client/java/pom.xml | 212 - client/java/settings.gradle | 1 - client/java/src/main/AndroidManifest.xml | 3 - .../java/io/swagger/client/ApiCallback.java | 62 - .../java/io/swagger/client/ApiClient.java | 1359 ------ .../java/io/swagger/client/ApiException.java | 91 - .../java/io/swagger/client/ApiResponse.java | 59 - .../java/io/swagger/client/Configuration.java | 39 - .../client/GzipRequestInterceptor.java | 81 - .../src/main/java/io/swagger/client/JSON.java | 227 - .../src/main/java/io/swagger/client/Pair.java | 52 - .../swagger/client/ProgressRequestBody.java | 77 - .../swagger/client/ProgressResponseBody.java | 76 - .../java/io/swagger/client/StringUtil.java | 55 - .../io/swagger/client/api/BookApiApi.java | 430 -- .../io/swagger/client/api/CategoryApiApi.java | 299 -- .../io/swagger/client/auth/ApiKeyAuth.java | 75 - .../swagger/client/auth/Authentication.java | 29 - .../io/swagger/client/auth/HttpBasicAuth.java | 54 - .../java/io/swagger/client/auth/OAuth.java | 39 - .../io/swagger/client/auth/OAuthFlow.java | 18 - .../java/io/swagger/client/model/Book.java | 162 - .../io/swagger/client/model/Category.java | 116 - .../io/swagger/client/api/BookApiApiTest.java | 83 - .../client/api/CategoryApiApiTest.java | 66 - docs/swagger-example.html | 1321 ----- server/jaxrs-resteasy/.swagger-codegen-ignore | 23 - .../jaxrs-resteasy/.swagger-codegen/VERSION | 1 - server/jaxrs-resteasy/README.md | 23 - server/jaxrs-resteasy/build.gradle | 28 - server/jaxrs-resteasy/pom.xml | 167 - server/jaxrs-resteasy/settings.gradle | 1 - .../gen/java/io/swagger/api/ApiException.java | 10 - .../java/io/swagger/api/ApiOriginFilter.java | 22 - .../io/swagger/api/ApiResponseMessage.java | 69 - .../java/io/swagger/api/JacksonConfig.java | 47 - .../io/swagger/api/LocalDateProvider.java | 31 - .../io/swagger/api/NotFoundException.java | 10 - .../swagger/api/OffsetDateTimeProvider.java | 31 - .../io/swagger/api/RFC3339DateFormat.java | 19 - .../java/io/swagger/api/RestApplication.java | 9 - .../gen/java/io/swagger/api/StringUtil.java | 42 - .../src/gen/java/io/swagger/api/V1Api.java | 125 - .../gen/java/io/swagger/api/V1ApiService.java | 30 - .../src/gen/java/io/swagger/model/Book.java | 114 - .../gen/java/io/swagger/model/Category.java | 82 - .../api/factories/V1ApiServiceFactory.java | 15 - .../io/swagger/api/impl/V1ApiServiceImpl.java | 50 - .../src/main/webapp/WEB-INF/jboss-web.xml | 3 - .../src/main/webapp/WEB-INF/web.xml | 14 - server/spring/.swagger-codegen-ignore | 23 - server/spring/.swagger-codegen/VERSION | 1 - server/spring/README.md | 18 - server/spring/pom.xml | 69 - .../java/io/swagger/RFC3339DateFormat.java | 20 - .../java/io/swagger/Swagger2SpringBoot.java | 36 - .../java/io/swagger/api/ApiException.java | 11 - .../java/io/swagger/api/ApiOriginFilter.java | 28 - .../io/swagger/api/ApiResponseMessage.java | 70 - .../io/swagger/api/NotFoundException.java | 11 - .../src/main/java/io/swagger/api/V1Api.java | 122 - .../java/io/swagger/api/V1ApiController.java | 14 - .../swagger/configuration/HomeController.java | 16 - .../SwaggerDocumentationConfig.java | 41 - .../src/main/java/io/swagger/model/Book.java | 154 - .../main/java/io/swagger/model/Category.java | 104 - .../src/main/resources/application.properties | 5 - swagger-server/bin/install.sh | 2 +- .../java/com/example/server/api/BookApi.java | 2 +- .../com/example/server/api/CategoryApi.java | 2 +- .../example/server/config/SwaggerConfig.java | 4 +- .../java/com/example/server/model/Book.java | 2 +- .../com/example/server/model/Category.java | 2 +- .../example/server/service/BookService.java | 2 +- .../server/service/CategoryService.java | 2 +- swagger-server/src/main/resources/swagger.yml | 4 +- .../example/server/api/BookApiMockTest.java | 2 +- .../server/api/CategoryApiMockTest.java | 2 +- 116 files changed, 13 insertions(+), 13353 deletions(-) delete mode 100644 asciidoc/swagger-example.adoc delete mode 100644 client/go/.gitignore delete mode 100644 client/go/.swagger-codegen-ignore delete mode 100644 client/go/.swagger-codegen/VERSION delete mode 100644 client/go/.travis.yml delete mode 100644 client/go/README.md delete mode 100644 client/go/api_client.go delete mode 100644 client/go/api_response.go delete mode 100644 client/go/book.go delete mode 100644 client/go/bookapi_api.go delete mode 100644 client/go/category.go delete mode 100644 client/go/categoryapi_api.go delete mode 100644 client/go/configuration.go delete mode 100644 client/go/docs/Book.md delete mode 100644 client/go/docs/BookapiApi.md delete mode 100644 client/go/docs/Category.md delete mode 100644 client/go/docs/CategoryapiApi.md delete mode 100644 client/go/git_push.sh delete mode 100644 client/html2/.swagger-codegen-ignore delete mode 100644 client/html2/.swagger-codegen/VERSION delete mode 100644 client/html2/index.html delete mode 100644 client/java/.gitignore delete mode 100644 client/java/.swagger-codegen-ignore delete mode 100644 client/java/.swagger-codegen/VERSION delete mode 100644 client/java/.travis.yml delete mode 100644 client/java/README.md delete mode 100644 client/java/build.gradle delete mode 100644 client/java/build.sbt delete mode 100644 client/java/docs/Book.md delete mode 100644 client/java/docs/BookApiApi.md delete mode 100644 client/java/docs/Category.md delete mode 100644 client/java/docs/CategoryApiApi.md delete mode 100644 client/java/git_push.sh delete mode 100644 client/java/gradle.properties delete mode 100644 client/java/gradle/wrapper/gradle-wrapper.jar delete mode 100644 client/java/gradle/wrapper/gradle-wrapper.properties delete mode 100644 client/java/gradlew delete mode 100644 client/java/gradlew.bat delete mode 100644 client/java/pom.xml delete mode 100644 client/java/settings.gradle delete mode 100644 client/java/src/main/AndroidManifest.xml delete mode 100644 client/java/src/main/java/io/swagger/client/ApiCallback.java delete mode 100644 client/java/src/main/java/io/swagger/client/ApiClient.java delete mode 100644 client/java/src/main/java/io/swagger/client/ApiException.java delete mode 100644 client/java/src/main/java/io/swagger/client/ApiResponse.java delete mode 100644 client/java/src/main/java/io/swagger/client/Configuration.java delete mode 100644 client/java/src/main/java/io/swagger/client/GzipRequestInterceptor.java delete mode 100644 client/java/src/main/java/io/swagger/client/JSON.java delete mode 100644 client/java/src/main/java/io/swagger/client/Pair.java delete mode 100644 client/java/src/main/java/io/swagger/client/ProgressRequestBody.java delete mode 100644 client/java/src/main/java/io/swagger/client/ProgressResponseBody.java delete mode 100644 client/java/src/main/java/io/swagger/client/StringUtil.java delete mode 100644 client/java/src/main/java/io/swagger/client/api/BookApiApi.java delete mode 100644 client/java/src/main/java/io/swagger/client/api/CategoryApiApi.java delete mode 100644 client/java/src/main/java/io/swagger/client/auth/ApiKeyAuth.java delete mode 100644 client/java/src/main/java/io/swagger/client/auth/Authentication.java delete mode 100644 client/java/src/main/java/io/swagger/client/auth/HttpBasicAuth.java delete mode 100644 client/java/src/main/java/io/swagger/client/auth/OAuth.java delete mode 100644 client/java/src/main/java/io/swagger/client/auth/OAuthFlow.java delete mode 100644 client/java/src/main/java/io/swagger/client/model/Book.java delete mode 100644 client/java/src/main/java/io/swagger/client/model/Category.java delete mode 100644 client/java/src/test/java/io/swagger/client/api/BookApiApiTest.java delete mode 100644 client/java/src/test/java/io/swagger/client/api/CategoryApiApiTest.java delete mode 100644 docs/swagger-example.html delete mode 100644 server/jaxrs-resteasy/.swagger-codegen-ignore delete mode 100644 server/jaxrs-resteasy/.swagger-codegen/VERSION delete mode 100644 server/jaxrs-resteasy/README.md delete mode 100644 server/jaxrs-resteasy/build.gradle delete mode 100644 server/jaxrs-resteasy/pom.xml delete mode 100644 server/jaxrs-resteasy/settings.gradle delete mode 100644 server/jaxrs-resteasy/src/gen/java/io/swagger/api/ApiException.java delete mode 100644 server/jaxrs-resteasy/src/gen/java/io/swagger/api/ApiOriginFilter.java delete mode 100644 server/jaxrs-resteasy/src/gen/java/io/swagger/api/ApiResponseMessage.java delete mode 100644 server/jaxrs-resteasy/src/gen/java/io/swagger/api/JacksonConfig.java delete mode 100644 server/jaxrs-resteasy/src/gen/java/io/swagger/api/LocalDateProvider.java delete mode 100644 server/jaxrs-resteasy/src/gen/java/io/swagger/api/NotFoundException.java delete mode 100644 server/jaxrs-resteasy/src/gen/java/io/swagger/api/OffsetDateTimeProvider.java delete mode 100644 server/jaxrs-resteasy/src/gen/java/io/swagger/api/RFC3339DateFormat.java delete mode 100644 server/jaxrs-resteasy/src/gen/java/io/swagger/api/RestApplication.java delete mode 100644 server/jaxrs-resteasy/src/gen/java/io/swagger/api/StringUtil.java delete mode 100644 server/jaxrs-resteasy/src/gen/java/io/swagger/api/V1Api.java delete mode 100644 server/jaxrs-resteasy/src/gen/java/io/swagger/api/V1ApiService.java delete mode 100644 server/jaxrs-resteasy/src/gen/java/io/swagger/model/Book.java delete mode 100644 server/jaxrs-resteasy/src/gen/java/io/swagger/model/Category.java delete mode 100644 server/jaxrs-resteasy/src/main/java/io/swagger/api/factories/V1ApiServiceFactory.java delete mode 100644 server/jaxrs-resteasy/src/main/java/io/swagger/api/impl/V1ApiServiceImpl.java delete mode 100644 server/jaxrs-resteasy/src/main/webapp/WEB-INF/jboss-web.xml delete mode 100644 server/jaxrs-resteasy/src/main/webapp/WEB-INF/web.xml delete mode 100644 server/spring/.swagger-codegen-ignore delete mode 100644 server/spring/.swagger-codegen/VERSION delete mode 100644 server/spring/README.md delete mode 100644 server/spring/pom.xml delete mode 100644 server/spring/src/main/java/io/swagger/RFC3339DateFormat.java delete mode 100644 server/spring/src/main/java/io/swagger/Swagger2SpringBoot.java delete mode 100644 server/spring/src/main/java/io/swagger/api/ApiException.java delete mode 100644 server/spring/src/main/java/io/swagger/api/ApiOriginFilter.java delete mode 100644 server/spring/src/main/java/io/swagger/api/ApiResponseMessage.java delete mode 100644 server/spring/src/main/java/io/swagger/api/NotFoundException.java delete mode 100644 server/spring/src/main/java/io/swagger/api/V1Api.java delete mode 100644 server/spring/src/main/java/io/swagger/api/V1ApiController.java delete mode 100644 server/spring/src/main/java/io/swagger/configuration/HomeController.java delete mode 100644 server/spring/src/main/java/io/swagger/configuration/SwaggerDocumentationConfig.java delete mode 100644 server/spring/src/main/java/io/swagger/model/Book.java delete mode 100644 server/spring/src/main/java/io/swagger/model/Category.java delete mode 100644 server/spring/src/main/resources/application.properties diff --git a/asciidoc/swagger-example.adoc b/asciidoc/swagger-example.adoc deleted file mode 100644 index fdbbd95..0000000 --- a/asciidoc/swagger-example.adoc +++ /dev/null @@ -1,331 +0,0 @@ -= Swagger Demo - - -[[_overview]] -== Overview -Swagger的简单示例, 包括swagger-codegen, swagger2markup 和 asciidoctor. - - -=== Version information -[%hardbreaks] -__Version__ : v1 - - -=== Contact information -[%hardbreaks] -__Contact__ : Damon -__Contact Email__ : damon.q@iv66.net - - -=== License information -[%hardbreaks] -__License__ : Apache License -__License URL__ : http://www.apache.org/licenses/LICENSE-2.0.html -__Terms of service__ : http://www.apache.org/licenses/LICENSE-2.0.html - - -=== URI scheme -[%hardbreaks] -__Host__ : localhost:8080 -__BasePath__ : / -__Schemes__ : HTTP, HTTPS - - -=== Tags - -* book-api : Book Api -* category-api : Category Api - - - - -[[_paths]] -== Paths - -[[_getbooksbycategoryusingget]] -=== 根据分类获取书籍 -.... -GET /v1/book/getByCategoryId -.... - - -==== Parameters - -[options="header", cols=".^2,.^3,.^9,.^4"] -|=== -|Type|Name|Description|Schema -|**Query**|**id** + -__required__|id|integer (int32) -|=== - - -==== Responses - -[options="header", cols=".^2,.^14,.^4"] -|=== -|HTTP Code|Description|Schema -|**200**|OK|< <<_book,Book>> > array -|**401**|Unauthorized|No Content -|**403**|Forbidden|No Content -|**404**|Not Found|No Content -|=== - - -==== Consumes - -* `application/json` - - -==== Produces - -* `*/*` - - -==== Tags - -* book-api - - -==== Security - -[options="header", cols=".^3,.^4"] -|=== -|Type|Name -|**apiKey**|**<<_api_key,api_key>>** -|=== - - -[[_updateusingpost]] -=== 更新书籍 -.... -POST /v1/book/update -.... - - -==== Parameters - -[options="header", cols=".^2,.^3,.^9,.^4"] -|=== -|Type|Name|Description|Schema -|**Body**|**id** + -__optional__|id|integer (int32) -|=== - - -==== Responses - -[options="header", cols=".^2,.^14,.^4"] -|=== -|HTTP Code|Description|Schema -|**200**|OK|boolean -|**201**|Created|No Content -|**401**|Unauthorized|No Content -|**403**|Forbidden|No Content -|**404**|Not Found|No Content -|=== - - -==== Consumes - -* `application/json` - - -==== Produces - -* `*/*` - - -==== Tags - -* book-api - - -==== Security - -[options="header", cols=".^3,.^4"] -|=== -|Type|Name -|**apiKey**|**<<_api_key,api_key>>** -|=== - - -[[_getbookbyidusingget]] -=== 根据ID获取书籍 -.... -GET /v1/book/{id} -.... - - -==== Parameters - -[options="header", cols=".^2,.^3,.^9,.^4"] -|=== -|Type|Name|Description|Schema -|**Path**|**id** + -__required__|id|integer (int32) -|=== - - -==== Responses - -[options="header", cols=".^2,.^14,.^4"] -|=== -|HTTP Code|Description|Schema -|**200**|OK|<<_book,Book>> -|**401**|Unauthorized|No Content -|**403**|Forbidden|No Content -|**404**|Not Found|No Content -|=== - - -==== Consumes - -* `application/json` - - -==== Produces - -* `*/*` - - -==== Tags - -* book-api - - -==== Security - -[options="header", cols=".^3,.^4"] -|=== -|Type|Name -|**apiKey**|**<<_api_key,api_key>>** -|=== - - -[[_getallusingget]] -=== 获取全部分类 -.... -GET /v1/category/ -.... - - -==== Responses - -[options="header", cols=".^2,.^14,.^4"] -|=== -|HTTP Code|Description|Schema -|**200**|OK|< <<_category,Category>> > array -|**401**|Unauthorized|No Content -|**403**|Forbidden|No Content -|**404**|Not Found|No Content -|=== - - -==== Consumes - -* `application/json` - - -==== Produces - -* `*/*` - - -==== Tags - -* category-api - - -[[_getusingget]] -=== 根据ID获取分类 -.... -GET /v1/category/{id} -.... - - -==== Parameters - -[options="header", cols=".^2,.^3,.^9,.^4"] -|=== -|Type|Name|Description|Schema -|**Path**|**id** + -__required__|id|integer (int32) -|=== - - -==== Responses - -[options="header", cols=".^2,.^14,.^4"] -|=== -|HTTP Code|Description|Schema -|**200**|OK|<<_category,Category>> -|**401**|Unauthorized|No Content -|**403**|Forbidden|No Content -|**404**|Not Found|No Content -|=== - - -==== Consumes - -* `application/json` - - -==== Produces - -* `*/*` - - -==== Tags - -* category-api - - - - -[[_definitions]] -== Definitions - -[[_book]] -=== Book - -[options="header", cols=".^3,.^11,.^4"] -|=== -|Name|Description|Schema -|**author** + -__optional__|作者|string -|**categoryId** + -__optional__||integer (int32) -|**id** + -__optional__||integer (int32) -|**name** + -__optional__|书名|string -|=== - - -[[_category]] -=== Category - -[options="header", cols=".^3,.^4"] -|=== -|Name|Schema -|**id** + -__optional__|integer (int32) -|**name** + -__optional__|string -|=== - - - - -[[_securityscheme]] -== Security - -[[_api_key]] -=== api_key -[%hardbreaks] -__Type__ : apiKey -__Name__ : api_key -__In__ : HEADER - - - diff --git a/client/go/.gitignore b/client/go/.gitignore deleted file mode 100644 index daf913b..0000000 --- a/client/go/.gitignore +++ /dev/null @@ -1,24 +0,0 @@ -# Compiled Object files, Static and Dynamic libs (Shared Objects) -*.o -*.a -*.so - -# Folders -_obj -_test - -# Architecture specific extensions/prefixes -*.[568vq] -[568vq].out - -*.cgo1.go -*.cgo2.c -_cgo_defun.c -_cgo_gotypes.go -_cgo_export.* - -_testmain.go - -*.exe -*.test -*.prof diff --git a/client/go/.swagger-codegen-ignore b/client/go/.swagger-codegen-ignore deleted file mode 100644 index c5fa491..0000000 --- a/client/go/.swagger-codegen-ignore +++ /dev/null @@ -1,23 +0,0 @@ -# Swagger Codegen Ignore -# Generated by swagger-codegen https://github.com/swagger-api/swagger-codegen - -# Use this file to prevent files from being overwritten by the generator. -# The patterns follow closely to .gitignore or .dockerignore. - -# As an example, the C# client generator defines ApiClient.cs. -# You can make changes and tell Swagger Codgen to ignore just this file by uncommenting the following line: -#ApiClient.cs - -# You can match any string of characters against a directory, file or extension with a single asterisk (*): -#foo/*/qux -# The above matches foo/bar/qux and foo/baz/qux, but not foo/bar/baz/qux - -# You can recursively match patterns against a directory, file or extension with a double asterisk (**): -#foo/**/qux -# This matches foo/bar/qux, foo/baz/qux, and foo/bar/baz/qux - -# You can also negate patterns with an exclamation (!). -# For example, you can ignore all files in a docs folder with the file extension .md: -#docs/*.md -# Then explicitly reverse the ignore rule for a single file: -#!docs/README.md diff --git a/client/go/.swagger-codegen/VERSION b/client/go/.swagger-codegen/VERSION deleted file mode 100644 index 717311e..0000000 --- a/client/go/.swagger-codegen/VERSION +++ /dev/null @@ -1 +0,0 @@ -unset \ No newline at end of file diff --git a/client/go/.travis.yml b/client/go/.travis.yml deleted file mode 100644 index f5cb2ce..0000000 --- a/client/go/.travis.yml +++ /dev/null @@ -1,8 +0,0 @@ -language: go - -install: - - go get -d -v . - -script: - - go build -v ./ - diff --git a/client/go/README.md b/client/go/README.md deleted file mode 100644 index bfb0b4d..0000000 --- a/client/go/README.md +++ /dev/null @@ -1,51 +0,0 @@ -# Go API client for swagger - -Swagger的简单示例, 包括swagger-codegen, swagger2markup 和 asciidoctor. - -## Overview -This API client was generated by the [swagger-codegen](https://github.com/swagger-api/swagger-codegen) project. By using the [swagger-spec](https://github.com/swagger-api/swagger-spec) from a remote server, you can easily generate an API client. - -- API version: v1 -- Package version: 1.0.0 -- Build package: io.swagger.codegen.languages.GoClientCodegen -For more information, please visit [http://www.google.com](http://www.google.com) - -## Installation -Put the package under your project folder and add the following in import: -``` - "./swagger" -``` - -## Documentation for API Endpoints - -All URIs are relative to *http://localhost:8080* - -Class | Method | HTTP request | Description ------------- | ------------- | ------------- | ------------- -*BookapiApi* | [**GetBookByIdUsingGET**](docs/BookapiApi.md#getbookbyidusingget) | **Get** /v1/book/{id} | 根据ID获取书籍 -*BookapiApi* | [**GetBooksByCategoryUsingGET**](docs/BookapiApi.md#getbooksbycategoryusingget) | **Get** /v1/book/getByCategoryId | 根据分类获取书籍 -*BookapiApi* | [**UpdateUsingPOST**](docs/BookapiApi.md#updateusingpost) | **Post** /v1/book/update | 更新书籍 -*CategoryapiApi* | [**GetAllUsingGET**](docs/CategoryapiApi.md#getallusingget) | **Get** /v1/category/ | 获取全部分类 -*CategoryapiApi* | [**GetUsingGET**](docs/CategoryapiApi.md#getusingget) | **Get** /v1/category/{id} | 根据ID获取分类 - - -## Documentation For Models - - - [Book](docs/Book.md) - - [Category](docs/Category.md) - - -## Documentation For Authorization - - -## api_key - -- **Type**: API key -- **API key parameter name**: api_key -- **Location**: HTTP header - - -## Author - -damon.q@iv66.net - diff --git a/client/go/api_client.go b/client/go/api_client.go deleted file mode 100644 index f198bf8..0000000 --- a/client/go/api_client.go +++ /dev/null @@ -1,164 +0,0 @@ -/* - * Swagger Demo - * - * Swagger的简单示例, 包括swagger-codegen, swagger2markup 和 asciidoctor. - * - * OpenAPI spec version: v1 - * Contact: damon.q@iv66.net - * Generated by: https://github.com/swagger-api/swagger-codegen.git - */ - -package swagger - -import ( - "bytes" - "fmt" - "path/filepath" - "reflect" - "strings" - "net/url" - "io/ioutil" - "gopkg.in/go-resty/resty.v0" -) - -type APIClient struct { - config *Configuration -} - -func (c *APIClient) SelectHeaderContentType(contentTypes []string) string { - - if len(contentTypes) == 0 { - return "" - } - if contains(contentTypes, "application/json") { - return "application/json" - } - return contentTypes[0] // use the first content type specified in 'consumes' -} - -func (c *APIClient) SelectHeaderAccept(accepts []string) string { - - if len(accepts) == 0 { - return "" - } - if contains(accepts, "application/json") { - return "application/json" - } - return strings.Join(accepts, ",") -} - -func contains(haystack []string, needle string) bool { - for _, a := range haystack { - if strings.ToLower(a) == strings.ToLower(needle) { - return true - } - } - return false -} - -func (c *APIClient) CallAPI(path string, method string, - postBody interface{}, - headerParams map[string]string, - queryParams url.Values, - formParams map[string]string, - fileName string, - fileBytes []byte) (*resty.Response, error) { - - rClient := c.prepareClient() - request := c.prepareRequest(rClient, postBody, headerParams, queryParams, formParams, fileName, fileBytes) - - switch strings.ToUpper(method) { - case "GET": - response, err := request.Get(path) - return response, err - case "POST": - response, err := request.Post(path) - return response, err - case "PUT": - response, err := request.Put(path) - return response, err - case "PATCH": - response, err := request.Patch(path) - return response, err - case "DELETE": - response, err := request.Delete(path) - return response, err - } - - return nil, fmt.Errorf("invalid method %v", method) -} - -func (c *APIClient) ParameterToString(obj interface{}, collectionFormat string) string { - delimiter := "" - switch collectionFormat { - case "pipes": - delimiter = "|" - case "ssv": - delimiter = " " - case "tsv": - delimiter = "\t" - case "csv": - delimiter = "," - } - - if reflect.TypeOf(obj).Kind() == reflect.Slice { - return strings.Trim(strings.Replace(fmt.Sprint(obj), " ", delimiter, -1), "[]") - } - - return fmt.Sprintf("%v", obj) -} - -func (c *APIClient) prepareClient() *resty.Client { - - rClient := resty.New() - - rClient.SetDebug(c.config.Debug) - if c.config.Transport != nil { - rClient.SetTransport(c.config.Transport) - } - - if c.config.Timeout != nil { - rClient.SetTimeout(*c.config.Timeout) - } - rClient.SetLogger(ioutil.Discard) - return rClient -} - -func (c *APIClient) prepareRequest( - rClient *resty.Client, - postBody interface{}, - headerParams map[string]string, - queryParams url.Values, - formParams map[string]string, - fileName string, - fileBytes []byte) *resty.Request { - - - request := rClient.R() - request.SetBody(postBody) - - if c.config.UserAgent != "" { - request.SetHeader("User-Agent", c.config.UserAgent) - } - - // add header parameter, if any - if len(headerParams) > 0 { - request.SetHeaders(headerParams) - } - - // add query parameter, if any - if len(queryParams) > 0 { - request.SetMultiValueQueryParams(queryParams) - } - - // add form parameter, if any - if len(formParams) > 0 { - request.SetFormData(formParams) - } - - if len(fileBytes) > 0 && fileName != "" { - _, fileNm := filepath.Split(fileName) - request.SetFileReader("file", fileNm, bytes.NewReader(fileBytes)) - } - return request -} diff --git a/client/go/api_response.go b/client/go/api_response.go deleted file mode 100644 index d7ea559..0000000 --- a/client/go/api_response.go +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Swagger Demo - * - * Swagger的简单示例, 包括swagger-codegen, swagger2markup 和 asciidoctor. - * - * OpenAPI spec version: v1 - * Contact: damon.q@iv66.net - * Generated by: https://github.com/swagger-api/swagger-codegen.git - */ - -package swagger - -import ( - "net/http" -) - -type APIResponse struct { - *http.Response `json:"-"` - Message string `json:"message,omitempty"` - // Operation is the name of the swagger operation. - Operation string `json:"operation,omitempty"` - // RequestURL is the request URL. This value is always available, even if the - // embedded *http.Response is nil. - RequestURL string `json:"url,omitempty"` - // Method is the HTTP method used for the request. This value is always - // available, even if the embedded *http.Response is nil. - Method string `json:"method,omitempty"` - // Payload holds the contents of the response body (which may be nil or empty). - // This is provided here as the raw response.Body() reader will have already - // been drained. - Payload []byte `json:"-"` -} - -func NewAPIResponse(r *http.Response) *APIResponse { - - response := &APIResponse{Response: r} - return response -} - -func NewAPIResponseWithError(errorMessage string) *APIResponse { - - response := &APIResponse{Message: errorMessage} - return response -} diff --git a/client/go/book.go b/client/go/book.go deleted file mode 100644 index aada531..0000000 --- a/client/go/book.go +++ /dev/null @@ -1,24 +0,0 @@ -/* - * Swagger Demo - * - * Swagger的简单示例, 包括swagger-codegen, swagger2markup 和 asciidoctor. - * - * OpenAPI spec version: v1 - * Contact: damon.q@iv66.net - * Generated by: https://github.com/swagger-api/swagger-codegen.git - */ - -package swagger - -type Book struct { - - // 作者 - Author string `json:"author,omitempty"` - - CategoryId int32 `json:"categoryId,omitempty"` - - Id int32 `json:"id,omitempty"` - - // 书名 - Name string `json:"name,omitempty"` -} diff --git a/client/go/bookapi_api.go b/client/go/bookapi_api.go deleted file mode 100644 index f7049d8..0000000 --- a/client/go/bookapi_api.go +++ /dev/null @@ -1,229 +0,0 @@ -/* - * Swagger Demo - * - * Swagger的简单示例, 包括swagger-codegen, swagger2markup 和 asciidoctor. - * - * OpenAPI spec version: v1 - * Contact: damon.q@iv66.net - * Generated by: https://github.com/swagger-api/swagger-codegen.git - */ - -package swagger - -import ( - "net/url" - "strings" - "encoding/json" - "fmt" -) - -type BookapiApi struct { - Configuration *Configuration -} - -func NewBookapiApi() *BookapiApi { - configuration := NewConfiguration() - return &BookapiApi{ - Configuration: configuration, - } -} - -func NewBookapiApiWithBasePath(basePath string) *BookapiApi { - configuration := NewConfiguration() - configuration.BasePath = basePath - - return &BookapiApi{ - Configuration: configuration, - } -} - -/** - * 根据ID获取书籍 - * - * @param id id - * @return *Book - */ -func (a BookapiApi) GetBookByIdUsingGET(id int32) (*Book, *APIResponse, error) { - - var localVarHttpMethod = strings.ToUpper("Get") - // create path and map variables - localVarPath := a.Configuration.BasePath + "/v1/book/{id}" - localVarPath = strings.Replace(localVarPath, "{"+"id"+"}", fmt.Sprintf("%v", id), -1) - - localVarHeaderParams := make(map[string]string) - localVarQueryParams := url.Values{} - localVarFormParams := make(map[string]string) - var localVarPostBody interface{} - var localVarFileName string - var localVarFileBytes []byte - // authentication '(api_key)' required - // set key with prefix in header - localVarHeaderParams["api_key"] = a.Configuration.GetAPIKeyWithPrefix("api_key") - // add default headers if any - for key := range a.Configuration.DefaultHeader { - localVarHeaderParams[key] = a.Configuration.DefaultHeader[key] - } - - // to determine the Content-Type header - localVarHttpContentTypes := []string{ "application/json", } - - // set Content-Type header - localVarHttpContentType := a.Configuration.APIClient.SelectHeaderContentType(localVarHttpContentTypes) - if localVarHttpContentType != "" { - localVarHeaderParams["Content-Type"] = localVarHttpContentType - } - // to determine the Accept header - localVarHttpHeaderAccepts := []string{ - "*/*", - } - - // set Accept header - localVarHttpHeaderAccept := a.Configuration.APIClient.SelectHeaderAccept(localVarHttpHeaderAccepts) - if localVarHttpHeaderAccept != "" { - localVarHeaderParams["Accept"] = localVarHttpHeaderAccept - } - var successPayload = new(Book) - localVarHttpResponse, err := a.Configuration.APIClient.CallAPI(localVarPath, localVarHttpMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, localVarFileName, localVarFileBytes) - - var localVarURL, _ = url.Parse(localVarPath) - localVarURL.RawQuery = localVarQueryParams.Encode() - var localVarAPIResponse = &APIResponse{Operation: "GetBookByIdUsingGET", Method: localVarHttpMethod, RequestURL: localVarURL.String()} - if localVarHttpResponse != nil { - localVarAPIResponse.Response = localVarHttpResponse.RawResponse - localVarAPIResponse.Payload = localVarHttpResponse.Body() - } - - if err != nil { - return successPayload, localVarAPIResponse, err - } - err = json.Unmarshal(localVarHttpResponse.Body(), &successPayload) - return successPayload, localVarAPIResponse, err -} - -/** - * 根据分类获取书籍 - * - * @param id id - * @return []Book - */ -func (a BookapiApi) GetBooksByCategoryUsingGET(id int32) ([]Book, *APIResponse, error) { - - var localVarHttpMethod = strings.ToUpper("Get") - // create path and map variables - localVarPath := a.Configuration.BasePath + "/v1/book/getByCategoryId" - - localVarHeaderParams := make(map[string]string) - localVarQueryParams := url.Values{} - localVarFormParams := make(map[string]string) - var localVarPostBody interface{} - var localVarFileName string - var localVarFileBytes []byte - // authentication '(api_key)' required - // set key with prefix in header - localVarHeaderParams["api_key"] = a.Configuration.GetAPIKeyWithPrefix("api_key") - // add default headers if any - for key := range a.Configuration.DefaultHeader { - localVarHeaderParams[key] = a.Configuration.DefaultHeader[key] - } - localVarQueryParams.Add("id", a.Configuration.APIClient.ParameterToString(id, "")) - - // to determine the Content-Type header - localVarHttpContentTypes := []string{ "application/json", } - - // set Content-Type header - localVarHttpContentType := a.Configuration.APIClient.SelectHeaderContentType(localVarHttpContentTypes) - if localVarHttpContentType != "" { - localVarHeaderParams["Content-Type"] = localVarHttpContentType - } - // to determine the Accept header - localVarHttpHeaderAccepts := []string{ - "*/*", - } - - // set Accept header - localVarHttpHeaderAccept := a.Configuration.APIClient.SelectHeaderAccept(localVarHttpHeaderAccepts) - if localVarHttpHeaderAccept != "" { - localVarHeaderParams["Accept"] = localVarHttpHeaderAccept - } - var successPayload = new([]Book) - localVarHttpResponse, err := a.Configuration.APIClient.CallAPI(localVarPath, localVarHttpMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, localVarFileName, localVarFileBytes) - - var localVarURL, _ = url.Parse(localVarPath) - localVarURL.RawQuery = localVarQueryParams.Encode() - var localVarAPIResponse = &APIResponse{Operation: "GetBooksByCategoryUsingGET", Method: localVarHttpMethod, RequestURL: localVarURL.String()} - if localVarHttpResponse != nil { - localVarAPIResponse.Response = localVarHttpResponse.RawResponse - localVarAPIResponse.Payload = localVarHttpResponse.Body() - } - - if err != nil { - return *successPayload, localVarAPIResponse, err - } - err = json.Unmarshal(localVarHttpResponse.Body(), &successPayload) - return *successPayload, localVarAPIResponse, err -} - -/** - * 更新书籍 - * - * @param id id - * @return *bool - */ -func (a BookapiApi) UpdateUsingPOST(id int32) (*bool, *APIResponse, error) { - - var localVarHttpMethod = strings.ToUpper("Post") - // create path and map variables - localVarPath := a.Configuration.BasePath + "/v1/book/update" - - localVarHeaderParams := make(map[string]string) - localVarQueryParams := url.Values{} - localVarFormParams := make(map[string]string) - var localVarPostBody interface{} - var localVarFileName string - var localVarFileBytes []byte - // authentication '(api_key)' required - // set key with prefix in header - localVarHeaderParams["api_key"] = a.Configuration.GetAPIKeyWithPrefix("api_key") - // add default headers if any - for key := range a.Configuration.DefaultHeader { - localVarHeaderParams[key] = a.Configuration.DefaultHeader[key] - } - - // to determine the Content-Type header - localVarHttpContentTypes := []string{ "application/json", } - - // set Content-Type header - localVarHttpContentType := a.Configuration.APIClient.SelectHeaderContentType(localVarHttpContentTypes) - if localVarHttpContentType != "" { - localVarHeaderParams["Content-Type"] = localVarHttpContentType - } - // to determine the Accept header - localVarHttpHeaderAccepts := []string{ - "*/*", - } - - // set Accept header - localVarHttpHeaderAccept := a.Configuration.APIClient.SelectHeaderAccept(localVarHttpHeaderAccepts) - if localVarHttpHeaderAccept != "" { - localVarHeaderParams["Accept"] = localVarHttpHeaderAccept - } - // body params - localVarPostBody = &id - var successPayload = new(bool) - localVarHttpResponse, err := a.Configuration.APIClient.CallAPI(localVarPath, localVarHttpMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, localVarFileName, localVarFileBytes) - - var localVarURL, _ = url.Parse(localVarPath) - localVarURL.RawQuery = localVarQueryParams.Encode() - var localVarAPIResponse = &APIResponse{Operation: "UpdateUsingPOST", Method: localVarHttpMethod, RequestURL: localVarURL.String()} - if localVarHttpResponse != nil { - localVarAPIResponse.Response = localVarHttpResponse.RawResponse - localVarAPIResponse.Payload = localVarHttpResponse.Body() - } - - if err != nil { - return successPayload, localVarAPIResponse, err - } - err = json.Unmarshal(localVarHttpResponse.Body(), &successPayload) - return successPayload, localVarAPIResponse, err -} - diff --git a/client/go/category.go b/client/go/category.go deleted file mode 100644 index 189503f..0000000 --- a/client/go/category.go +++ /dev/null @@ -1,18 +0,0 @@ -/* - * Swagger Demo - * - * Swagger的简单示例, 包括swagger-codegen, swagger2markup 和 asciidoctor. - * - * OpenAPI spec version: v1 - * Contact: damon.q@iv66.net - * Generated by: https://github.com/swagger-api/swagger-codegen.git - */ - -package swagger - -type Category struct { - - Id int32 `json:"id,omitempty"` - - Name string `json:"name,omitempty"` -} diff --git a/client/go/categoryapi_api.go b/client/go/categoryapi_api.go deleted file mode 100644 index 98ae37b..0000000 --- a/client/go/categoryapi_api.go +++ /dev/null @@ -1,157 +0,0 @@ -/* - * Swagger Demo - * - * Swagger的简单示例, 包括swagger-codegen, swagger2markup 和 asciidoctor. - * - * OpenAPI spec version: v1 - * Contact: damon.q@iv66.net - * Generated by: https://github.com/swagger-api/swagger-codegen.git - */ - -package swagger - -import ( - "net/url" - "strings" - "encoding/json" - "fmt" -) - -type CategoryapiApi struct { - Configuration *Configuration -} - -func NewCategoryapiApi() *CategoryapiApi { - configuration := NewConfiguration() - return &CategoryapiApi{ - Configuration: configuration, - } -} - -func NewCategoryapiApiWithBasePath(basePath string) *CategoryapiApi { - configuration := NewConfiguration() - configuration.BasePath = basePath - - return &CategoryapiApi{ - Configuration: configuration, - } -} - -/** - * 获取全部分类 - * - * @return []Category - */ -func (a CategoryapiApi) GetAllUsingGET() ([]Category, *APIResponse, error) { - - var localVarHttpMethod = strings.ToUpper("Get") - // create path and map variables - localVarPath := a.Configuration.BasePath + "/v1/category/" - - localVarHeaderParams := make(map[string]string) - localVarQueryParams := url.Values{} - localVarFormParams := make(map[string]string) - var localVarPostBody interface{} - var localVarFileName string - var localVarFileBytes []byte - // add default headers if any - for key := range a.Configuration.DefaultHeader { - localVarHeaderParams[key] = a.Configuration.DefaultHeader[key] - } - - // to determine the Content-Type header - localVarHttpContentTypes := []string{ "application/json", } - - // set Content-Type header - localVarHttpContentType := a.Configuration.APIClient.SelectHeaderContentType(localVarHttpContentTypes) - if localVarHttpContentType != "" { - localVarHeaderParams["Content-Type"] = localVarHttpContentType - } - // to determine the Accept header - localVarHttpHeaderAccepts := []string{ - "*/*", - } - - // set Accept header - localVarHttpHeaderAccept := a.Configuration.APIClient.SelectHeaderAccept(localVarHttpHeaderAccepts) - if localVarHttpHeaderAccept != "" { - localVarHeaderParams["Accept"] = localVarHttpHeaderAccept - } - var successPayload = new([]Category) - localVarHttpResponse, err := a.Configuration.APIClient.CallAPI(localVarPath, localVarHttpMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, localVarFileName, localVarFileBytes) - - var localVarURL, _ = url.Parse(localVarPath) - localVarURL.RawQuery = localVarQueryParams.Encode() - var localVarAPIResponse = &APIResponse{Operation: "GetAllUsingGET", Method: localVarHttpMethod, RequestURL: localVarURL.String()} - if localVarHttpResponse != nil { - localVarAPIResponse.Response = localVarHttpResponse.RawResponse - localVarAPIResponse.Payload = localVarHttpResponse.Body() - } - - if err != nil { - return *successPayload, localVarAPIResponse, err - } - err = json.Unmarshal(localVarHttpResponse.Body(), &successPayload) - return *successPayload, localVarAPIResponse, err -} - -/** - * 根据ID获取分类 - * - * @param id id - * @return *Category - */ -func (a CategoryapiApi) GetUsingGET(id int32) (*Category, *APIResponse, error) { - - var localVarHttpMethod = strings.ToUpper("Get") - // create path and map variables - localVarPath := a.Configuration.BasePath + "/v1/category/{id}" - localVarPath = strings.Replace(localVarPath, "{"+"id"+"}", fmt.Sprintf("%v", id), -1) - - localVarHeaderParams := make(map[string]string) - localVarQueryParams := url.Values{} - localVarFormParams := make(map[string]string) - var localVarPostBody interface{} - var localVarFileName string - var localVarFileBytes []byte - // add default headers if any - for key := range a.Configuration.DefaultHeader { - localVarHeaderParams[key] = a.Configuration.DefaultHeader[key] - } - - // to determine the Content-Type header - localVarHttpContentTypes := []string{ "application/json", } - - // set Content-Type header - localVarHttpContentType := a.Configuration.APIClient.SelectHeaderContentType(localVarHttpContentTypes) - if localVarHttpContentType != "" { - localVarHeaderParams["Content-Type"] = localVarHttpContentType - } - // to determine the Accept header - localVarHttpHeaderAccepts := []string{ - "*/*", - } - - // set Accept header - localVarHttpHeaderAccept := a.Configuration.APIClient.SelectHeaderAccept(localVarHttpHeaderAccepts) - if localVarHttpHeaderAccept != "" { - localVarHeaderParams["Accept"] = localVarHttpHeaderAccept - } - var successPayload = new(Category) - localVarHttpResponse, err := a.Configuration.APIClient.CallAPI(localVarPath, localVarHttpMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, localVarFileName, localVarFileBytes) - - var localVarURL, _ = url.Parse(localVarPath) - localVarURL.RawQuery = localVarQueryParams.Encode() - var localVarAPIResponse = &APIResponse{Operation: "GetUsingGET", Method: localVarHttpMethod, RequestURL: localVarURL.String()} - if localVarHttpResponse != nil { - localVarAPIResponse.Response = localVarHttpResponse.RawResponse - localVarAPIResponse.Payload = localVarHttpResponse.Body() - } - - if err != nil { - return successPayload, localVarAPIResponse, err - } - err = json.Unmarshal(localVarHttpResponse.Body(), &successPayload) - return successPayload, localVarAPIResponse, err -} - diff --git a/client/go/configuration.go b/client/go/configuration.go deleted file mode 100644 index a4f6feb..0000000 --- a/client/go/configuration.go +++ /dev/null @@ -1,67 +0,0 @@ -/* - * Swagger Demo - * - * Swagger的简单示例, 包括swagger-codegen, swagger2markup 和 asciidoctor. - * - * OpenAPI spec version: v1 - * Contact: damon.q@iv66.net - * Generated by: https://github.com/swagger-api/swagger-codegen.git - */ - -package swagger - -import ( - "encoding/base64" - "net/http" - "time" -) - - -type Configuration struct { - Username string `json:"userName,omitempty"` - Password string `json:"password,omitempty"` - APIKeyPrefix map[string]string `json:"APIKeyPrefix,omitempty"` - APIKey map[string]string `json:"APIKey,omitempty"` - Debug bool `json:"debug,omitempty"` - DebugFile string `json:"debugFile,omitempty"` - OAuthToken string `json:"oAuthToken,omitempty"` - BasePath string `json:"basePath,omitempty"` - Host string `json:"host,omitempty"` - Scheme string `json:"scheme,omitempty"` - AccessToken string `json:"accessToken,omitempty"` - DefaultHeader map[string]string `json:"defaultHeader,omitempty"` - UserAgent string `json:"userAgent,omitempty"` - APIClient *APIClient - Transport *http.Transport - Timeout *time.Duration `json:"timeout,omitempty"` -} - -func NewConfiguration() *Configuration { - cfg := &Configuration{ - BasePath: "http://localhost:8080", - DefaultHeader: make(map[string]string), - APIKey: make(map[string]string), - APIKeyPrefix: make(map[string]string), - UserAgent: "Swagger-Codegen/1.0.0/go", - APIClient: &APIClient{}, - } - - cfg.APIClient.config = cfg - return cfg -} - -func (c *Configuration) GetBasicAuthEncodedString() string { - return base64.StdEncoding.EncodeToString([]byte(c.Username + ":" + c.Password)) -} - -func (c *Configuration) AddDefaultHeader(key string, value string) { - c.DefaultHeader[key] = value -} - -func (c *Configuration) GetAPIKeyWithPrefix(APIKeyIdentifier string) string { - if c.APIKeyPrefix[APIKeyIdentifier] != "" { - return c.APIKeyPrefix[APIKeyIdentifier] + " " + c.APIKey[APIKeyIdentifier] - } - - return c.APIKey[APIKeyIdentifier] -} diff --git a/client/go/docs/Book.md b/client/go/docs/Book.md deleted file mode 100644 index d4e63f2..0000000 --- a/client/go/docs/Book.md +++ /dev/null @@ -1,13 +0,0 @@ -# Book - -## Properties -Name | Type | Description | Notes ------------- | ------------- | ------------- | ------------- -**Author** | **string** | 作者 | [optional] [default to null] -**CategoryId** | **int32** | | [optional] [default to null] -**Id** | **int32** | | [optional] [default to null] -**Name** | **string** | 书名 | [optional] [default to null] - -[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) - - diff --git a/client/go/docs/BookapiApi.md b/client/go/docs/BookapiApi.md deleted file mode 100644 index 49e1446..0000000 --- a/client/go/docs/BookapiApi.md +++ /dev/null @@ -1,92 +0,0 @@ -# \BookapiApi - -All URIs are relative to *http://localhost:8080* - -Method | HTTP request | Description -------------- | ------------- | ------------- -[**GetBookByIdUsingGET**](BookapiApi.md#GetBookByIdUsingGET) | **Get** /v1/book/{id} | 根据ID获取书籍 -[**GetBooksByCategoryUsingGET**](BookapiApi.md#GetBooksByCategoryUsingGET) | **Get** /v1/book/getByCategoryId | 根据分类获取书籍 -[**UpdateUsingPOST**](BookapiApi.md#UpdateUsingPOST) | **Post** /v1/book/update | 更新书籍 - - -# **GetBookByIdUsingGET** -> Book GetBookByIdUsingGET($id) - -根据ID获取书籍 - - -### Parameters - -Name | Type | Description | Notes -------------- | ------------- | ------------- | ------------- - **id** | **int32**| id | - -### Return type - -[**Book**](Book.md) - -### Authorization - -[api_key](../README.md#api_key) - -### HTTP request headers - - - **Content-Type**: application/json - - **Accept**: */* - -[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) - -# **GetBooksByCategoryUsingGET** -> []Book GetBooksByCategoryUsingGET($id) - -根据分类获取书籍 - - -### Parameters - -Name | Type | Description | Notes -------------- | ------------- | ------------- | ------------- - **id** | **int32**| id | - -### Return type - -[**[]Book**](Book.md) - -### Authorization - -[api_key](../README.md#api_key) - -### HTTP request headers - - - **Content-Type**: application/json - - **Accept**: */* - -[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) - -# **UpdateUsingPOST** -> bool UpdateUsingPOST($id) - -更新书籍 - - -### Parameters - -Name | Type | Description | Notes -------------- | ------------- | ------------- | ------------- - **id** | **int32**| id | [optional] - -### Return type - -**bool** - -### Authorization - -[api_key](../README.md#api_key) - -### HTTP request headers - - - **Content-Type**: application/json - - **Accept**: */* - -[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) - diff --git a/client/go/docs/Category.md b/client/go/docs/Category.md deleted file mode 100644 index 355d5ea..0000000 --- a/client/go/docs/Category.md +++ /dev/null @@ -1,11 +0,0 @@ -# Category - -## Properties -Name | Type | Description | Notes ------------- | ------------- | ------------- | ------------- -**Id** | **int32** | | [optional] [default to null] -**Name** | **string** | | [optional] [default to null] - -[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) - - diff --git a/client/go/docs/CategoryapiApi.md b/client/go/docs/CategoryapiApi.md deleted file mode 100644 index 0672f03..0000000 --- a/client/go/docs/CategoryapiApi.md +++ /dev/null @@ -1,61 +0,0 @@ -# \CategoryapiApi - -All URIs are relative to *http://localhost:8080* - -Method | HTTP request | Description -------------- | ------------- | ------------- -[**GetAllUsingGET**](CategoryapiApi.md#GetAllUsingGET) | **Get** /v1/category/ | 获取全部分类 -[**GetUsingGET**](CategoryapiApi.md#GetUsingGET) | **Get** /v1/category/{id} | 根据ID获取分类 - - -# **GetAllUsingGET** -> []Category GetAllUsingGET() - -获取全部分类 - - -### Parameters -This endpoint does not need any parameter. - -### Return type - -[**[]Category**](Category.md) - -### Authorization - -No authorization required - -### HTTP request headers - - - **Content-Type**: application/json - - **Accept**: */* - -[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) - -# **GetUsingGET** -> Category GetUsingGET($id) - -根据ID获取分类 - - -### Parameters - -Name | Type | Description | Notes -------------- | ------------- | ------------- | ------------- - **id** | **int32**| id | - -### Return type - -[**Category**](Category.md) - -### Authorization - -No authorization required - -### HTTP request headers - - - **Content-Type**: application/json - - **Accept**: */* - -[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) - diff --git a/client/go/git_push.sh b/client/go/git_push.sh deleted file mode 100644 index ed37461..0000000 --- a/client/go/git_push.sh +++ /dev/null @@ -1,52 +0,0 @@ -#!/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="GIT_USER_ID" - echo "[INFO] No command line input provided. Set \$git_user_id to $git_user_id" -fi - -if [ "$git_repo_id" = "" ]; then - git_repo_id="GIT_REPO_ID" - echo "[INFO] No command line input provided. Set \$git_repo_id to $git_repo_id" -fi - -if [ "$release_note" = "" ]; then - release_note="Minor update" - 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' - diff --git a/client/html2/.swagger-codegen-ignore b/client/html2/.swagger-codegen-ignore deleted file mode 100644 index c5fa491..0000000 --- a/client/html2/.swagger-codegen-ignore +++ /dev/null @@ -1,23 +0,0 @@ -# Swagger Codegen Ignore -# Generated by swagger-codegen https://github.com/swagger-api/swagger-codegen - -# Use this file to prevent files from being overwritten by the generator. -# The patterns follow closely to .gitignore or .dockerignore. - -# As an example, the C# client generator defines ApiClient.cs. -# You can make changes and tell Swagger Codgen to ignore just this file by uncommenting the following line: -#ApiClient.cs - -# You can match any string of characters against a directory, file or extension with a single asterisk (*): -#foo/*/qux -# The above matches foo/bar/qux and foo/baz/qux, but not foo/bar/baz/qux - -# You can recursively match patterns against a directory, file or extension with a double asterisk (**): -#foo/**/qux -# This matches foo/bar/qux, foo/baz/qux, and foo/bar/baz/qux - -# You can also negate patterns with an exclamation (!). -# For example, you can ignore all files in a docs folder with the file extension .md: -#docs/*.md -# Then explicitly reverse the ignore rule for a single file: -#!docs/README.md diff --git a/client/html2/.swagger-codegen/VERSION b/client/html2/.swagger-codegen/VERSION deleted file mode 100644 index 717311e..0000000 --- a/client/html2/.swagger-codegen/VERSION +++ /dev/null @@ -1 +0,0 @@ -unset \ No newline at end of file diff --git a/client/html2/index.html b/client/html2/index.html deleted file mode 100644 index 0dea4ab..0000000 --- a/client/html2/index.html +++ /dev/null @@ -1,4242 +0,0 @@ - - - - - Swagger Demo - - - - - - - - - - - - - - - - -
-
- -
-
-
-

Swagger Demo

-
-
-
- -
-
-

Bookapi

-
-
-
-

getBookByIdUsingGET

-

根据ID获取书籍

-
-
-
-

-

-

-
-
/v1/book/{id}
-

-

Usage and SDK Samples

-

- - -
-
-
curl -X GET -H "api_key: [[apiKey]]" "http://localhost:8080/v1/book/{id}"
-
-
-
import io.swagger.client.*;
-import io.swagger.client.auth.*;
-import io.swagger.client.model.*;
-import io.swagger.client.api.BookapiApi;
-
-import java.io.File;
-import java.util.*;
-
-public class BookapiApiExample {
-
-    public static void main(String[] args) {
-        ApiClient defaultClient = Configuration.getDefaultApiClient();
-        
-        // Configure API key authorization: api_key
-        ApiKeyAuth api_key = (ApiKeyAuth) defaultClient.getAuthentication("api_key");
-        api_key.setApiKey("YOUR API KEY");
-        // Uncomment the following line to set a prefix for the API key, e.g. "Token" (defaults to null)
-        //api_key.setApiKeyPrefix("Token");
-
-        BookapiApi apiInstance = new BookapiApi();
-        Integer id = 56; // Integer | id
-        try {
-            Book result = apiInstance.getBookByIdUsingGET(id);
-            System.out.println(result);
-        } catch (ApiException e) {
-            System.err.println("Exception when calling BookapiApi#getBookByIdUsingGET");
-            e.printStackTrace();
-        }
-    }
-}
-
- -
-
import io.swagger.client.api.BookapiApi;
-
-public class BookapiApiExample {
-
-    public static void main(String[] args) {
-        BookapiApi apiInstance = new BookapiApi();
-        Integer id = 56; // Integer | id
-        try {
-            Book result = apiInstance.getBookByIdUsingGET(id);
-            System.out.println(result);
-        } catch (ApiException e) {
-            System.err.println("Exception when calling BookapiApi#getBookByIdUsingGET");
-            e.printStackTrace();
-        }
-    }
-}
-
- -
-
Configuration *apiConfig = [Configuration sharedConfig];
-
-// Configure API key authorization: (authentication scheme: api_key)
-[apiConfig setApiKey:@"YOUR_API_KEY" forApiKeyIdentifier:@"api_key"];
-// Uncomment below to setup prefix (e.g. Bearer) for API key, if needed
-//[apiConfig setApiKeyPrefix:@"Bearer" forApiKeyIdentifier:@"api_key"];
-
-Integer *id = 56; // id
-
-BookapiApi *apiInstance = [[BookapiApi alloc] init];
-
-// 根据ID获取书籍
-[apiInstance getBookByIdUsingGETWith:id
-              completionHandler: ^(Book output, NSError* error) {
-                            if (output) {
-                                NSLog(@"%@", output);
-                            }
-                            if (error) {
-                                NSLog(@"Error: %@", error);
-                            }
-                        }];
-
-
- -
-
var SwaggerDemo = require('swagger_demo');
-var defaultClient = SwaggerDemo.ApiClient.instance;
-
-// Configure API key authorization: api_key
-var api_key = defaultClient.authentications['api_key'];
-api_key.apiKey = "YOUR API KEY"
-// Uncomment the following line to set a prefix for the API key, e.g. "Token" (defaults to null)
-//api_key.apiKeyPrefix['api_key'] = "Token"
-
-var api = new SwaggerDemo.BookapiApi()
-
-var id = 56; // {Integer} id
-
-
-var callback = function(error, data, response) {
-  if (error) {
-    console.error(error);
-  } else {
-    console.log('API called successfully. Returned data: ' + data);
-  }
-};
-api.getBookByIdUsingGET(id, callback);
-
-
- - -
-
using System;
-using System.Diagnostics;
-using IO.Swagger.Api;
-using IO.Swagger.Client;
-using IO.Swagger.Model;
-
-namespace Example
-{
-    public class getBookByIdUsingGETExample
-    {
-        public void main()
-        {
-            
-            // Configure API key authorization: api_key
-            Configuration.Default.ApiKey.Add("api_key", "YOUR_API_KEY");
-            // Uncomment below to setup prefix (e.g. Bearer) for API key, if needed
-            // Configuration.Default.ApiKeyPrefix.Add("api_key", "Bearer");
-
-            var apiInstance = new BookapiApi();
-            var id = 56;  // Integer | id
-
-            try
-            {
-                // 根据ID获取书籍
-                Book result = apiInstance.getBookByIdUsingGET(id);
-                Debug.WriteLine(result);
-            }
-            catch (Exception e)
-            {
-                Debug.Print("Exception when calling BookapiApi.getBookByIdUsingGET: " + e.Message );
-            }
-        }
-    }
-}
-
-
- -
-
<?php
-require_once(__DIR__ . '/vendor/autoload.php');
-
-// Configure API key authorization: api_key
-Swagger\Client\Configuration::getDefaultConfiguration()->setApiKey('api_key', 'YOUR_API_KEY');
-// Uncomment below to setup prefix (e.g. Bearer) for API key, if needed
-// Swagger\Client\Configuration::getDefaultConfiguration()->setApiKeyPrefix('api_key', 'Bearer');
-
-$api_instance = new Swagger\Client\Api\BookapiApi();
-$id = 56; // Integer | id
-
-try {
-    $result = $api_instance->getBookByIdUsingGET($id);
-    print_r($result);
-} catch (Exception $e) {
-    echo 'Exception when calling BookapiApi->getBookByIdUsingGET: ', $e->getMessage(), PHP_EOL;
-}
-?>
-
- -
-
use Data::Dumper;
-use WWW::SwaggerClient::Configuration;
-use WWW::SwaggerClient::BookapiApi;
-
-# Configure API key authorization: api_key
-$WWW::SwaggerClient::Configuration::api_key->{'api_key'} = 'YOUR_API_KEY';
-# uncomment below to setup prefix (e.g. Bearer) for API key, if needed
-#$WWW::SwaggerClient::Configuration::api_key_prefix->{'api_key'} = "Bearer";
-
-my $api_instance = WWW::SwaggerClient::BookapiApi->new();
-my $id = 56; # Integer | id
-
-eval { 
-    my $result = $api_instance->getBookByIdUsingGET(id => $id);
-    print Dumper($result);
-};
-if ($@) {
-    warn "Exception when calling BookapiApi->getBookByIdUsingGET: $@\n";
-}
-
- -
-
from __future__ import print_statement
-import time
-import swagger_client
-from swagger_client.rest import ApiException
-from pprint import pprint
-
-# Configure API key authorization: api_key
-swagger_client.configuration.api_key['api_key'] = 'YOUR_API_KEY'
-# Uncomment below to setup prefix (e.g. Bearer) for API key, if needed
-# swagger_client.configuration.api_key_prefix['api_key'] = 'Bearer'
-
-# create an instance of the API class
-api_instance = swagger_client.BookapiApi()
-id = 56 # Integer | id
-
-try: 
-    # 根据ID获取书籍
-    api_response = api_instance.get_book_by_id_using_get(id)
-    pprint(api_response)
-except ApiException as e:
-    print("Exception when calling BookapiApi->getBookByIdUsingGET: %s\n" % e)
-
-
- -

Parameters

- -
Path parameters
- - - - - - - - - -
NameDescription
id* - - -
-
-
- - Integer - - - (int32) - - -
- id -
-
-
- Required -
-
-
-
- - - - - -

Responses

-

Status: 200 - OK

- - - -
-
-
- -
- -
-
- -

Status: 401 - Unauthorized

- - - -
-
- -

Status: 403 - Forbidden

- - - -
-
- -

Status: 404 - Not Found

- - - -
-
- -
-
-
-
-
-
-

getBooksByCategoryUsingGET

-

根据分类获取书籍

-
-
-
-

-

-

-
-
/v1/book/getByCategoryId
-

-

Usage and SDK Samples

-

- - -
-
-
curl -X GET -H "api_key: [[apiKey]]" "http://localhost:8080/v1/book/getByCategoryId?id="
-
-
-
import io.swagger.client.*;
-import io.swagger.client.auth.*;
-import io.swagger.client.model.*;
-import io.swagger.client.api.BookapiApi;
-
-import java.io.File;
-import java.util.*;
-
-public class BookapiApiExample {
-
-    public static void main(String[] args) {
-        ApiClient defaultClient = Configuration.getDefaultApiClient();
-        
-        // Configure API key authorization: api_key
-        ApiKeyAuth api_key = (ApiKeyAuth) defaultClient.getAuthentication("api_key");
-        api_key.setApiKey("YOUR API KEY");
-        // Uncomment the following line to set a prefix for the API key, e.g. "Token" (defaults to null)
-        //api_key.setApiKeyPrefix("Token");
-
-        BookapiApi apiInstance = new BookapiApi();
-        Integer id = 56; // Integer | id
-        try {
-            array[Book] result = apiInstance.getBooksByCategoryUsingGET(id);
-            System.out.println(result);
-        } catch (ApiException e) {
-            System.err.println("Exception when calling BookapiApi#getBooksByCategoryUsingGET");
-            e.printStackTrace();
-        }
-    }
-}
-
- -
-
import io.swagger.client.api.BookapiApi;
-
-public class BookapiApiExample {
-
-    public static void main(String[] args) {
-        BookapiApi apiInstance = new BookapiApi();
-        Integer id = 56; // Integer | id
-        try {
-            array[Book] result = apiInstance.getBooksByCategoryUsingGET(id);
-            System.out.println(result);
-        } catch (ApiException e) {
-            System.err.println("Exception when calling BookapiApi#getBooksByCategoryUsingGET");
-            e.printStackTrace();
-        }
-    }
-}
-
- -
-
Configuration *apiConfig = [Configuration sharedConfig];
-
-// Configure API key authorization: (authentication scheme: api_key)
-[apiConfig setApiKey:@"YOUR_API_KEY" forApiKeyIdentifier:@"api_key"];
-// Uncomment below to setup prefix (e.g. Bearer) for API key, if needed
-//[apiConfig setApiKeyPrefix:@"Bearer" forApiKeyIdentifier:@"api_key"];
-
-Integer *id = 56; // id
-
-BookapiApi *apiInstance = [[BookapiApi alloc] init];
-
-// 根据分类获取书籍
-[apiInstance getBooksByCategoryUsingGETWith:id
-              completionHandler: ^(array[Book] output, NSError* error) {
-                            if (output) {
-                                NSLog(@"%@", output);
-                            }
-                            if (error) {
-                                NSLog(@"Error: %@", error);
-                            }
-                        }];
-
-
- -
-
var SwaggerDemo = require('swagger_demo');
-var defaultClient = SwaggerDemo.ApiClient.instance;
-
-// Configure API key authorization: api_key
-var api_key = defaultClient.authentications['api_key'];
-api_key.apiKey = "YOUR API KEY"
-// Uncomment the following line to set a prefix for the API key, e.g. "Token" (defaults to null)
-//api_key.apiKeyPrefix['api_key'] = "Token"
-
-var api = new SwaggerDemo.BookapiApi()
-
-var id = 56; // {Integer} id
-
-
-var callback = function(error, data, response) {
-  if (error) {
-    console.error(error);
-  } else {
-    console.log('API called successfully. Returned data: ' + data);
-  }
-};
-api.getBooksByCategoryUsingGET(id, callback);
-
-
- - -
-
using System;
-using System.Diagnostics;
-using IO.Swagger.Api;
-using IO.Swagger.Client;
-using IO.Swagger.Model;
-
-namespace Example
-{
-    public class getBooksByCategoryUsingGETExample
-    {
-        public void main()
-        {
-            
-            // Configure API key authorization: api_key
-            Configuration.Default.ApiKey.Add("api_key", "YOUR_API_KEY");
-            // Uncomment below to setup prefix (e.g. Bearer) for API key, if needed
-            // Configuration.Default.ApiKeyPrefix.Add("api_key", "Bearer");
-
-            var apiInstance = new BookapiApi();
-            var id = 56;  // Integer | id
-
-            try
-            {
-                // 根据分类获取书籍
-                array[Book] result = apiInstance.getBooksByCategoryUsingGET(id);
-                Debug.WriteLine(result);
-            }
-            catch (Exception e)
-            {
-                Debug.Print("Exception when calling BookapiApi.getBooksByCategoryUsingGET: " + e.Message );
-            }
-        }
-    }
-}
-
-
- -
-
<?php
-require_once(__DIR__ . '/vendor/autoload.php');
-
-// Configure API key authorization: api_key
-Swagger\Client\Configuration::getDefaultConfiguration()->setApiKey('api_key', 'YOUR_API_KEY');
-// Uncomment below to setup prefix (e.g. Bearer) for API key, if needed
-// Swagger\Client\Configuration::getDefaultConfiguration()->setApiKeyPrefix('api_key', 'Bearer');
-
-$api_instance = new Swagger\Client\Api\BookapiApi();
-$id = 56; // Integer | id
-
-try {
-    $result = $api_instance->getBooksByCategoryUsingGET($id);
-    print_r($result);
-} catch (Exception $e) {
-    echo 'Exception when calling BookapiApi->getBooksByCategoryUsingGET: ', $e->getMessage(), PHP_EOL;
-}
-?>
-
- -
-
use Data::Dumper;
-use WWW::SwaggerClient::Configuration;
-use WWW::SwaggerClient::BookapiApi;
-
-# Configure API key authorization: api_key
-$WWW::SwaggerClient::Configuration::api_key->{'api_key'} = 'YOUR_API_KEY';
-# uncomment below to setup prefix (e.g. Bearer) for API key, if needed
-#$WWW::SwaggerClient::Configuration::api_key_prefix->{'api_key'} = "Bearer";
-
-my $api_instance = WWW::SwaggerClient::BookapiApi->new();
-my $id = 56; # Integer | id
-
-eval { 
-    my $result = $api_instance->getBooksByCategoryUsingGET(id => $id);
-    print Dumper($result);
-};
-if ($@) {
-    warn "Exception when calling BookapiApi->getBooksByCategoryUsingGET: $@\n";
-}
-
- -
-
from __future__ import print_statement
-import time
-import swagger_client
-from swagger_client.rest import ApiException
-from pprint import pprint
-
-# Configure API key authorization: api_key
-swagger_client.configuration.api_key['api_key'] = 'YOUR_API_KEY'
-# Uncomment below to setup prefix (e.g. Bearer) for API key, if needed
-# swagger_client.configuration.api_key_prefix['api_key'] = 'Bearer'
-
-# create an instance of the API class
-api_instance = swagger_client.BookapiApi()
-id = 56 # Integer | id
-
-try: 
-    # 根据分类获取书籍
-    api_response = api_instance.get_books_by_category_using_get(id)
-    pprint(api_response)
-except ApiException as e:
-    print("Exception when calling BookapiApi->getBooksByCategoryUsingGET: %s\n" % e)
-
-
- -

Parameters

- - - - - -
Query parameters
- - - - - - - - - -
NameDescription
id* - - -
-
-
- - Integer - - - (int32) - - -
- id -
-
-
- Required -
-
-
-
- -

Responses

-

Status: 200 - OK

- - - -
-
-
- -
- -
-
- -

Status: 401 - Unauthorized

- - - -
-
- -

Status: 403 - Forbidden

- - - -
-
- -

Status: 404 - Not Found

- - - -
-
- -
-
-
-
-
-
-

updateUsingPOST

-

更新书籍

-
-
-
-

-

-

-
-
/v1/book/update
-

-

Usage and SDK Samples

-

- - -
-
-
curl -X POST -H "api_key: [[apiKey]]" "http://localhost:8080/v1/book/update"
-
-
-
import io.swagger.client.*;
-import io.swagger.client.auth.*;
-import io.swagger.client.model.*;
-import io.swagger.client.api.BookapiApi;
-
-import java.io.File;
-import java.util.*;
-
-public class BookapiApiExample {
-
-    public static void main(String[] args) {
-        ApiClient defaultClient = Configuration.getDefaultApiClient();
-        
-        // Configure API key authorization: api_key
-        ApiKeyAuth api_key = (ApiKeyAuth) defaultClient.getAuthentication("api_key");
-        api_key.setApiKey("YOUR API KEY");
-        // Uncomment the following line to set a prefix for the API key, e.g. "Token" (defaults to null)
-        //api_key.setApiKeyPrefix("Token");
-
-        BookapiApi apiInstance = new BookapiApi();
-        Integer id = 56; // Integer | id
-        try {
-            'Boolean' result = apiInstance.updateUsingPOST(id);
-            System.out.println(result);
-        } catch (ApiException e) {
-            System.err.println("Exception when calling BookapiApi#updateUsingPOST");
-            e.printStackTrace();
-        }
-    }
-}
-
- -
-
import io.swagger.client.api.BookapiApi;
-
-public class BookapiApiExample {
-
-    public static void main(String[] args) {
-        BookapiApi apiInstance = new BookapiApi();
-        Integer id = 56; // Integer | id
-        try {
-            'Boolean' result = apiInstance.updateUsingPOST(id);
-            System.out.println(result);
-        } catch (ApiException e) {
-            System.err.println("Exception when calling BookapiApi#updateUsingPOST");
-            e.printStackTrace();
-        }
-    }
-}
-
- -
-
Configuration *apiConfig = [Configuration sharedConfig];
-
-// Configure API key authorization: (authentication scheme: api_key)
-[apiConfig setApiKey:@"YOUR_API_KEY" forApiKeyIdentifier:@"api_key"];
-// Uncomment below to setup prefix (e.g. Bearer) for API key, if needed
-//[apiConfig setApiKeyPrefix:@"Bearer" forApiKeyIdentifier:@"api_key"];
-
-Integer *id = 56; // id (optional)
-
-BookapiApi *apiInstance = [[BookapiApi alloc] init];
-
-// 更新书籍
-[apiInstance updateUsingPOSTWith:id
-              completionHandler: ^('Boolean' output, NSError* error) {
-                            if (output) {
-                                NSLog(@"%@", output);
-                            }
-                            if (error) {
-                                NSLog(@"Error: %@", error);
-                            }
-                        }];
-
-
- -
-
var SwaggerDemo = require('swagger_demo');
-var defaultClient = SwaggerDemo.ApiClient.instance;
-
-// Configure API key authorization: api_key
-var api_key = defaultClient.authentications['api_key'];
-api_key.apiKey = "YOUR API KEY"
-// Uncomment the following line to set a prefix for the API key, e.g. "Token" (defaults to null)
-//api_key.apiKeyPrefix['api_key'] = "Token"
-
-var api = new SwaggerDemo.BookapiApi()
-
-var opts = { 
-  'id': 56 // {Integer} id
-};
-
-var callback = function(error, data, response) {
-  if (error) {
-    console.error(error);
-  } else {
-    console.log('API called successfully. Returned data: ' + data);
-  }
-};
-api.updateUsingPOST(opts, callback);
-
-
- - -
-
using System;
-using System.Diagnostics;
-using IO.Swagger.Api;
-using IO.Swagger.Client;
-using IO.Swagger.Model;
-
-namespace Example
-{
-    public class updateUsingPOSTExample
-    {
-        public void main()
-        {
-            
-            // Configure API key authorization: api_key
-            Configuration.Default.ApiKey.Add("api_key", "YOUR_API_KEY");
-            // Uncomment below to setup prefix (e.g. Bearer) for API key, if needed
-            // Configuration.Default.ApiKeyPrefix.Add("api_key", "Bearer");
-
-            var apiInstance = new BookapiApi();
-            var id = 56;  // Integer | id (optional) 
-
-            try
-            {
-                // 更新书籍
-                'Boolean' result = apiInstance.updateUsingPOST(id);
-                Debug.WriteLine(result);
-            }
-            catch (Exception e)
-            {
-                Debug.Print("Exception when calling BookapiApi.updateUsingPOST: " + e.Message );
-            }
-        }
-    }
-}
-
-
- -
-
<?php
-require_once(__DIR__ . '/vendor/autoload.php');
-
-// Configure API key authorization: api_key
-Swagger\Client\Configuration::getDefaultConfiguration()->setApiKey('api_key', 'YOUR_API_KEY');
-// Uncomment below to setup prefix (e.g. Bearer) for API key, if needed
-// Swagger\Client\Configuration::getDefaultConfiguration()->setApiKeyPrefix('api_key', 'Bearer');
-
-$api_instance = new Swagger\Client\Api\BookapiApi();
-$id = 56; // Integer | id
-
-try {
-    $result = $api_instance->updateUsingPOST($id);
-    print_r($result);
-} catch (Exception $e) {
-    echo 'Exception when calling BookapiApi->updateUsingPOST: ', $e->getMessage(), PHP_EOL;
-}
-?>
-
- -
-
use Data::Dumper;
-use WWW::SwaggerClient::Configuration;
-use WWW::SwaggerClient::BookapiApi;
-
-# Configure API key authorization: api_key
-$WWW::SwaggerClient::Configuration::api_key->{'api_key'} = 'YOUR_API_KEY';
-# uncomment below to setup prefix (e.g. Bearer) for API key, if needed
-#$WWW::SwaggerClient::Configuration::api_key_prefix->{'api_key'} = "Bearer";
-
-my $api_instance = WWW::SwaggerClient::BookapiApi->new();
-my $id = WWW::SwaggerClient::Object::Integer->new(); # Integer | id
-
-eval { 
-    my $result = $api_instance->updateUsingPOST(id => $id);
-    print Dumper($result);
-};
-if ($@) {
-    warn "Exception when calling BookapiApi->updateUsingPOST: $@\n";
-}
-
- -
-
from __future__ import print_statement
-import time
-import swagger_client
-from swagger_client.rest import ApiException
-from pprint import pprint
-
-# Configure API key authorization: api_key
-swagger_client.configuration.api_key['api_key'] = 'YOUR_API_KEY'
-# Uncomment below to setup prefix (e.g. Bearer) for API key, if needed
-# swagger_client.configuration.api_key_prefix['api_key'] = 'Bearer'
-
-# create an instance of the API class
-api_instance = swagger_client.BookapiApi()
-id = 56 # Integer | id (optional)
-
-try: 
-    # 更新书籍
-    api_response = api_instance.update_using_post(id=id)
-    pprint(api_response)
-except ApiException as e:
-    print("Exception when calling BookapiApi->updateUsingPOST: %s\n" % e)
-
-
- -

Parameters

- - - -
Body parameters
- - - - - - - - - -
NameDescription
id - - - -
-
- - - -

Responses

-

Status: 200 - OK

- - - -
-
-
- -
- -
-
- -

Status: 201 - Created

- - - -
-
- -

Status: 401 - Unauthorized

- - - -
-
- -

Status: 403 - Forbidden

- - - -
-
- -

Status: 404 - Not Found

- - - -
-
- -
-
-
-
-
-

Categoryapi

-
-
-
-

getAllUsingGET

-

获取全部分类

-
-
-
-

-

-

-
-
/v1/category/
-

-

Usage and SDK Samples

-

- - -
-
-
curl -X GET "http://localhost:8080/v1/category/"
-
-
-
import io.swagger.client.*;
-import io.swagger.client.auth.*;
-import io.swagger.client.model.*;
-import io.swagger.client.api.CategoryapiApi;
-
-import java.io.File;
-import java.util.*;
-
-public class CategoryapiApiExample {
-
-    public static void main(String[] args) {
-        
-        CategoryapiApi apiInstance = new CategoryapiApi();
-        try {
-            array[Category] result = apiInstance.getAllUsingGET();
-            System.out.println(result);
-        } catch (ApiException e) {
-            System.err.println("Exception when calling CategoryapiApi#getAllUsingGET");
-            e.printStackTrace();
-        }
-    }
-}
-
- -
-
import io.swagger.client.api.CategoryapiApi;
-
-public class CategoryapiApiExample {
-
-    public static void main(String[] args) {
-        CategoryapiApi apiInstance = new CategoryapiApi();
-        try {
-            array[Category] result = apiInstance.getAllUsingGET();
-            System.out.println(result);
-        } catch (ApiException e) {
-            System.err.println("Exception when calling CategoryapiApi#getAllUsingGET");
-            e.printStackTrace();
-        }
-    }
-}
-
- -
-

-CategoryapiApi *apiInstance = [[CategoryapiApi alloc] init];
-
-// 获取全部分类
-[apiInstance getAllUsingGETWithCompletionHandler: 
-              ^(array[Category] output, NSError* error) {
-                            if (output) {
-                                NSLog(@"%@", output);
-                            }
-                            if (error) {
-                                NSLog(@"Error: %@", error);
-                            }
-                        }];
-
-
- -
-
var SwaggerDemo = require('swagger_demo');
-
-var api = new SwaggerDemo.CategoryapiApi()
-
-var callback = function(error, data, response) {
-  if (error) {
-    console.error(error);
-  } else {
-    console.log('API called successfully. Returned data: ' + data);
-  }
-};
-api.getAllUsingGET(callback);
-
-
- - -
-
using System;
-using System.Diagnostics;
-using IO.Swagger.Api;
-using IO.Swagger.Client;
-using IO.Swagger.Model;
-
-namespace Example
-{
-    public class getAllUsingGETExample
-    {
-        public void main()
-        {
-            
-            var apiInstance = new CategoryapiApi();
-
-            try
-            {
-                // 获取全部分类
-                array[Category] result = apiInstance.getAllUsingGET();
-                Debug.WriteLine(result);
-            }
-            catch (Exception e)
-            {
-                Debug.Print("Exception when calling CategoryapiApi.getAllUsingGET: " + e.Message );
-            }
-        }
-    }
-}
-
-
- -
-
<?php
-require_once(__DIR__ . '/vendor/autoload.php');
-
-$api_instance = new Swagger\Client\Api\CategoryapiApi();
-
-try {
-    $result = $api_instance->getAllUsingGET();
-    print_r($result);
-} catch (Exception $e) {
-    echo 'Exception when calling CategoryapiApi->getAllUsingGET: ', $e->getMessage(), PHP_EOL;
-}
-?>
-
- -
-
use Data::Dumper;
-use WWW::SwaggerClient::Configuration;
-use WWW::SwaggerClient::CategoryapiApi;
-
-my $api_instance = WWW::SwaggerClient::CategoryapiApi->new();
-
-eval { 
-    my $result = $api_instance->getAllUsingGET();
-    print Dumper($result);
-};
-if ($@) {
-    warn "Exception when calling CategoryapiApi->getAllUsingGET: $@\n";
-}
-
- -
-
from __future__ import print_statement
-import time
-import swagger_client
-from swagger_client.rest import ApiException
-from pprint import pprint
-
-# create an instance of the API class
-api_instance = swagger_client.CategoryapiApi()
-
-try: 
-    # 获取全部分类
-    api_response = api_instance.get_all_using_get()
-    pprint(api_response)
-except ApiException as e:
-    print("Exception when calling CategoryapiApi->getAllUsingGET: %s\n" % e)
-
-
- -

Parameters

- - - - - - -

Responses

-

Status: 200 - OK

- - - -
-
-
- -
- -
-
- -

Status: 401 - Unauthorized

- - - -
-
- -

Status: 403 - Forbidden

- - - -
-
- -

Status: 404 - Not Found

- - - -
-
- -
-
-
-
-
-
-

getUsingGET

-

根据ID获取分类

-
-
-
-

-

-

-
-
/v1/category/{id}
-

-

Usage and SDK Samples

-

- - -
-
-
curl -X GET "http://localhost:8080/v1/category/{id}"
-
-
-
import io.swagger.client.*;
-import io.swagger.client.auth.*;
-import io.swagger.client.model.*;
-import io.swagger.client.api.CategoryapiApi;
-
-import java.io.File;
-import java.util.*;
-
-public class CategoryapiApiExample {
-
-    public static void main(String[] args) {
-        
-        CategoryapiApi apiInstance = new CategoryapiApi();
-        Integer id = 56; // Integer | id
-        try {
-            Category result = apiInstance.getUsingGET(id);
-            System.out.println(result);
-        } catch (ApiException e) {
-            System.err.println("Exception when calling CategoryapiApi#getUsingGET");
-            e.printStackTrace();
-        }
-    }
-}
-
- -
-
import io.swagger.client.api.CategoryapiApi;
-
-public class CategoryapiApiExample {
-
-    public static void main(String[] args) {
-        CategoryapiApi apiInstance = new CategoryapiApi();
-        Integer id = 56; // Integer | id
-        try {
-            Category result = apiInstance.getUsingGET(id);
-            System.out.println(result);
-        } catch (ApiException e) {
-            System.err.println("Exception when calling CategoryapiApi#getUsingGET");
-            e.printStackTrace();
-        }
-    }
-}
-
- -
-
Integer *id = 56; // id
-
-CategoryapiApi *apiInstance = [[CategoryapiApi alloc] init];
-
-// 根据ID获取分类
-[apiInstance getUsingGETWith:id
-              completionHandler: ^(Category output, NSError* error) {
-                            if (output) {
-                                NSLog(@"%@", output);
-                            }
-                            if (error) {
-                                NSLog(@"Error: %@", error);
-                            }
-                        }];
-
-
- -
-
var SwaggerDemo = require('swagger_demo');
-
-var api = new SwaggerDemo.CategoryapiApi()
-
-var id = 56; // {Integer} id
-
-
-var callback = function(error, data, response) {
-  if (error) {
-    console.error(error);
-  } else {
-    console.log('API called successfully. Returned data: ' + data);
-  }
-};
-api.getUsingGET(id, callback);
-
-
- - -
-
using System;
-using System.Diagnostics;
-using IO.Swagger.Api;
-using IO.Swagger.Client;
-using IO.Swagger.Model;
-
-namespace Example
-{
-    public class getUsingGETExample
-    {
-        public void main()
-        {
-            
-            var apiInstance = new CategoryapiApi();
-            var id = 56;  // Integer | id
-
-            try
-            {
-                // 根据ID获取分类
-                Category result = apiInstance.getUsingGET(id);
-                Debug.WriteLine(result);
-            }
-            catch (Exception e)
-            {
-                Debug.Print("Exception when calling CategoryapiApi.getUsingGET: " + e.Message );
-            }
-        }
-    }
-}
-
-
- -
-
<?php
-require_once(__DIR__ . '/vendor/autoload.php');
-
-$api_instance = new Swagger\Client\Api\CategoryapiApi();
-$id = 56; // Integer | id
-
-try {
-    $result = $api_instance->getUsingGET($id);
-    print_r($result);
-} catch (Exception $e) {
-    echo 'Exception when calling CategoryapiApi->getUsingGET: ', $e->getMessage(), PHP_EOL;
-}
-?>
-
- -
-
use Data::Dumper;
-use WWW::SwaggerClient::Configuration;
-use WWW::SwaggerClient::CategoryapiApi;
-
-my $api_instance = WWW::SwaggerClient::CategoryapiApi->new();
-my $id = 56; # Integer | id
-
-eval { 
-    my $result = $api_instance->getUsingGET(id => $id);
-    print Dumper($result);
-};
-if ($@) {
-    warn "Exception when calling CategoryapiApi->getUsingGET: $@\n";
-}
-
- -
-
from __future__ import print_statement
-import time
-import swagger_client
-from swagger_client.rest import ApiException
-from pprint import pprint
-
-# create an instance of the API class
-api_instance = swagger_client.CategoryapiApi()
-id = 56 # Integer | id
-
-try: 
-    # 根据ID获取分类
-    api_response = api_instance.get_using_get(id)
-    pprint(api_response)
-except ApiException as e:
-    print("Exception when calling CategoryapiApi->getUsingGET: %s\n" % e)
-
-
- -

Parameters

- -
Path parameters
- - - - - - - - - -
NameDescription
id* - - -
-
-
- - Integer - - - (int32) - - -
- id -
-
-
- Required -
-
-
-
- - - - - -

Responses

-

Status: 200 - OK

- - - -
-
-
- -
- -
-
- -

Status: 401 - Unauthorized

- - - -
-
- -

Status: 403 - Forbidden

- - - -
-
- -

Status: 404 - Not Found

- - - -
-
- -
-
-
-
-
- -
-
- Generated 2017-11-09T10:58:40.435+08:00 -
-
-
-
-
- - - - - - - - - - - - - diff --git a/client/java/.gitignore b/client/java/.gitignore deleted file mode 100644 index a530464..0000000 --- a/client/java/.gitignore +++ /dev/null @@ -1,21 +0,0 @@ -*.class - -# Mobile Tools for Java (J2ME) -.mtj.tmp/ - -# Package Files # -*.jar -*.war -*.ear - -# exclude jar for gradle wrapper -!gradle/wrapper/*.jar - -# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml -hs_err_pid* - -# build files -**/target -target -.gradle -build diff --git a/client/java/.swagger-codegen-ignore b/client/java/.swagger-codegen-ignore deleted file mode 100644 index c5fa491..0000000 --- a/client/java/.swagger-codegen-ignore +++ /dev/null @@ -1,23 +0,0 @@ -# Swagger Codegen Ignore -# Generated by swagger-codegen https://github.com/swagger-api/swagger-codegen - -# Use this file to prevent files from being overwritten by the generator. -# The patterns follow closely to .gitignore or .dockerignore. - -# As an example, the C# client generator defines ApiClient.cs. -# You can make changes and tell Swagger Codgen to ignore just this file by uncommenting the following line: -#ApiClient.cs - -# You can match any string of characters against a directory, file or extension with a single asterisk (*): -#foo/*/qux -# The above matches foo/bar/qux and foo/baz/qux, but not foo/bar/baz/qux - -# You can recursively match patterns against a directory, file or extension with a double asterisk (**): -#foo/**/qux -# This matches foo/bar/qux, foo/baz/qux, and foo/bar/baz/qux - -# You can also negate patterns with an exclamation (!). -# For example, you can ignore all files in a docs folder with the file extension .md: -#docs/*.md -# Then explicitly reverse the ignore rule for a single file: -#!docs/README.md diff --git a/client/java/.swagger-codegen/VERSION b/client/java/.swagger-codegen/VERSION deleted file mode 100644 index 717311e..0000000 --- a/client/java/.swagger-codegen/VERSION +++ /dev/null @@ -1 +0,0 @@ -unset \ No newline at end of file diff --git a/client/java/.travis.yml b/client/java/.travis.yml deleted file mode 100644 index 70cb81a..0000000 --- a/client/java/.travis.yml +++ /dev/null @@ -1,17 +0,0 @@ -# -# Generated by: https://github.com/swagger-api/swagger-codegen.git -# -language: java -jdk: - - oraclejdk8 - - oraclejdk7 -before_install: - # ensure gradlew has proper permission - - chmod a+x ./gradlew -script: - # test using maven - - mvn test - # uncomment below to test using gradle - # - gradle test - # uncomment below to test using sbt - # - sbt test diff --git a/client/java/README.md b/client/java/README.md deleted file mode 100644 index 135475f..0000000 --- a/client/java/README.md +++ /dev/null @@ -1,130 +0,0 @@ -# swagger-client-java - -## Requirements - -Building the API client library requires [Maven](https://maven.apache.org/) to be installed. - -## Installation - -To install the API client library to your local Maven repository, simply execute: - -```shell -mvn install -``` - -To deploy it to a remote Maven repository instead, configure the settings of the repository and execute: - -```shell -mvn deploy -``` - -Refer to the [official documentation](https://maven.apache.org/plugins/maven-deploy-plugin/usage.html) for more information. - -### Maven users - -Add this dependency to your project's POM: - -```xml - - com.example - swagger-client-java - 1.0.0 - compile - -``` - -### Gradle users - -Add this dependency to your project's build file: - -```groovy -compile "com.example:swagger-client-java:1.0.0" -``` - -### Others - -At first generate the JAR by executing: - - mvn package - -Then manually install the following JARs: - -* target/swagger-client-java-1.0.0.jar -* target/lib/*.jar - -## Getting Started - -Please follow the [installation](#installation) instruction and execute the following Java code: - -```java - -import io.swagger.client.*; -import io.swagger.client.auth.*; -import io.swagger.client.model.*; -import io.swagger.client.api.BookApiApi; - -import java.io.File; -import java.util.*; - -public class BookApiApiExample { - - public static void main(String[] args) { - ApiClient defaultClient = Configuration.getDefaultApiClient(); - - // Configure API key authorization: api_key - ApiKeyAuth api_key = (ApiKeyAuth) defaultClient.getAuthentication("api_key"); - api_key.setApiKey("YOUR API KEY"); - // Uncomment the following line to set a prefix for the API key, e.g. "Token" (defaults to null) - //api_key.setApiKeyPrefix("Token"); - - BookApiApi apiInstance = new BookApiApi(); - Integer id = 56; // Integer | id - try { - Book result = apiInstance.getBookByIdUsingGET(id); - System.out.println(result); - } catch (ApiException e) { - System.err.println("Exception when calling BookApiApi#getBookByIdUsingGET"); - e.printStackTrace(); - } - } -} - -``` - -## Documentation for API Endpoints - -All URIs are relative to *http://localhost:8080* - -Class | Method | HTTP request | Description ------------- | ------------- | ------------- | ------------- -*BookApiApi* | [**getBookByIdUsingGET**](docs/BookApiApi.md#getBookByIdUsingGET) | **GET** /v1/book/{id} | 根据ID获取书籍 -*BookApiApi* | [**getBooksByCategoryUsingGET**](docs/BookApiApi.md#getBooksByCategoryUsingGET) | **GET** /v1/book/getByCategoryId | 根据分类获取书籍 -*BookApiApi* | [**updateUsingPOST**](docs/BookApiApi.md#updateUsingPOST) | **POST** /v1/book/update | 更新书籍 -*CategoryApiApi* | [**getAllUsingGET**](docs/CategoryApiApi.md#getAllUsingGET) | **GET** /v1/category/ | 获取全部分类 -*CategoryApiApi* | [**getUsingGET**](docs/CategoryApiApi.md#getUsingGET) | **GET** /v1/category/{id} | 根据ID获取分类 - - -## Documentation for Models - - - [Book](docs/Book.md) - - [Category](docs/Category.md) - - -## Documentation for Authorization - -Authentication schemes defined for the API: -### api_key - -- **Type**: API key -- **API key parameter name**: api_key -- **Location**: HTTP header - - -## Recommendation - -It's recommended to create an instance of `ApiClient` per thread in a multithreaded environment to avoid any potential issues. - -## Author - -damon.q@iv66.net - diff --git a/client/java/build.gradle b/client/java/build.gradle deleted file mode 100644 index b74b036..0000000 --- a/client/java/build.gradle +++ /dev/null @@ -1,102 +0,0 @@ -apply plugin: 'idea' -apply plugin: 'eclipse' - -group = 'com.example' -version = '1.0.0' - -buildscript { - repositories { - jcenter() - } - dependencies { - classpath 'com.android.tools.build:gradle:2.3.+' - classpath 'com.github.dcendents:android-maven-gradle-plugin:1.5' - } -} - -repositories { - jcenter() -} - - -if(hasProperty('target') && target == 'android') { - - apply plugin: 'com.android.library' - apply plugin: 'com.github.dcendents.android-maven' - - android { - compileSdkVersion 25 - buildToolsVersion '25.0.2' - defaultConfig { - minSdkVersion 14 - targetSdkVersion 25 - } - compileOptions { - sourceCompatibility JavaVersion.VERSION_1_8 - targetCompatibility JavaVersion.VERSION_1_8 - } - - // Rename the aar correctly - libraryVariants.all { variant -> - variant.outputs.each { output -> - def outputFile = output.outputFile - if (outputFile != null && outputFile.name.endsWith('.aar')) { - def fileName = "${project.name}-${variant.baseName}-${version}.aar" - output.outputFile = new File(outputFile.parent, fileName) - } - } - } - - dependencies { - provided 'javax.annotation:jsr250-api:1.0' - } - } - - afterEvaluate { - android.libraryVariants.all { variant -> - def task = project.tasks.create "jar${variant.name.capitalize()}", Jar - task.description = "Create jar artifact for ${variant.name}" - task.dependsOn variant.javaCompile - task.from variant.javaCompile.destinationDir - task.destinationDir = project.file("${project.buildDir}/outputs/jar") - task.archiveName = "${project.name}-${variant.baseName}-${version}.jar" - artifacts.add('archives', task); - } - } - - task sourcesJar(type: Jar) { - from android.sourceSets.main.java.srcDirs - classifier = 'sources' - } - - artifacts { - archives sourcesJar - } - -} else { - - apply plugin: 'java' - apply plugin: 'maven' - - sourceCompatibility = JavaVersion.VERSION_1_8 - targetCompatibility = JavaVersion.VERSION_1_8 - - install { - repositories.mavenInstaller { - pom.artifactId = 'swagger-client-java' - } - } - - task execute(type:JavaExec) { - main = System.getProperty('mainClass') - classpath = sourceSets.main.runtimeClasspath - } -} - -dependencies { - compile 'io.swagger:swagger-annotations:1.5.15' - compile 'com.squareup.okhttp:okhttp:2.7.5' - compile 'com.squareup.okhttp:logging-interceptor:2.7.5' - compile 'com.google.code.gson:gson:2.8.1' - testCompile 'junit:junit:4.12' -} diff --git a/client/java/build.sbt b/client/java/build.sbt deleted file mode 100644 index 1a063fa..0000000 --- a/client/java/build.sbt +++ /dev/null @@ -1,19 +0,0 @@ -lazy val root = (project in file(".")). - settings( - organization := "com.example", - name := "swagger-client-java", - version := "1.0.0", - scalaVersion := "2.11.4", - scalacOptions ++= Seq("-feature"), - javacOptions in compile ++= Seq("-Xlint:deprecation"), - publishArtifact in (Compile, packageDoc) := false, - resolvers += Resolver.mavenLocal, - libraryDependencies ++= Seq( - "io.swagger" % "swagger-annotations" % "1.5.15", - "com.squareup.okhttp" % "okhttp" % "2.7.5", - "com.squareup.okhttp" % "logging-interceptor" % "2.7.5", - "com.google.code.gson" % "gson" % "2.8.1", - "junit" % "junit" % "4.12" % "test", - "com.novocode" % "junit-interface" % "0.10" % "test" - ) - ) diff --git a/client/java/docs/Book.md b/client/java/docs/Book.md deleted file mode 100644 index be610d9..0000000 --- a/client/java/docs/Book.md +++ /dev/null @@ -1,13 +0,0 @@ - -# Book - -## Properties -Name | Type | Description | Notes ------------- | ------------- | ------------- | ------------- -**author** | **String** | 作者 | [optional] -**categoryId** | **Integer** | | [optional] -**id** | **Integer** | | [optional] -**name** | **String** | 书名 | [optional] - - - diff --git a/client/java/docs/BookApiApi.md b/client/java/docs/BookApiApi.md deleted file mode 100644 index 60d97c7..0000000 --- a/client/java/docs/BookApiApi.md +++ /dev/null @@ -1,170 +0,0 @@ -# BookApiApi - -All URIs are relative to *http://localhost:8080* - -Method | HTTP request | Description -------------- | ------------- | ------------- -[**getBookByIdUsingGET**](BookApiApi.md#getBookByIdUsingGET) | **GET** /v1/book/{id} | 根据ID获取书籍 -[**getBooksByCategoryUsingGET**](BookApiApi.md#getBooksByCategoryUsingGET) | **GET** /v1/book/getByCategoryId | 根据分类获取书籍 -[**updateUsingPOST**](BookApiApi.md#updateUsingPOST) | **POST** /v1/book/update | 更新书籍 - - - -# **getBookByIdUsingGET** -> Book getBookByIdUsingGET(id) - -根据ID获取书籍 - -### Example -```java -// Import classes: -//import io.swagger.client.ApiClient; -//import io.swagger.client.ApiException; -//import io.swagger.client.Configuration; -//import io.swagger.client.auth.*; -//import io.swagger.client.api.BookApiApi; - -ApiClient defaultClient = Configuration.getDefaultApiClient(); - -// Configure API key authorization: api_key -ApiKeyAuth api_key = (ApiKeyAuth) defaultClient.getAuthentication("api_key"); -api_key.setApiKey("YOUR API KEY"); -// Uncomment the following line to set a prefix for the API key, e.g. "Token" (defaults to null) -//api_key.setApiKeyPrefix("Token"); - -BookApiApi apiInstance = new BookApiApi(); -Integer id = 56; // Integer | id -try { - Book result = apiInstance.getBookByIdUsingGET(id); - System.out.println(result); -} catch (ApiException e) { - System.err.println("Exception when calling BookApiApi#getBookByIdUsingGET"); - e.printStackTrace(); -} -``` - -### Parameters - -Name | Type | Description | Notes -------------- | ------------- | ------------- | ------------- - **id** | **Integer**| id | - -### Return type - -[**Book**](Book.md) - -### Authorization - -[api_key](../README.md#api_key) - -### HTTP request headers - - - **Content-Type**: application/json - - **Accept**: */* - - -# **getBooksByCategoryUsingGET** -> List<Book> getBooksByCategoryUsingGET(id) - -根据分类获取书籍 - -### Example -```java -// Import classes: -//import io.swagger.client.ApiClient; -//import io.swagger.client.ApiException; -//import io.swagger.client.Configuration; -//import io.swagger.client.auth.*; -//import io.swagger.client.api.BookApiApi; - -ApiClient defaultClient = Configuration.getDefaultApiClient(); - -// Configure API key authorization: api_key -ApiKeyAuth api_key = (ApiKeyAuth) defaultClient.getAuthentication("api_key"); -api_key.setApiKey("YOUR API KEY"); -// Uncomment the following line to set a prefix for the API key, e.g. "Token" (defaults to null) -//api_key.setApiKeyPrefix("Token"); - -BookApiApi apiInstance = new BookApiApi(); -Integer id = 56; // Integer | id -try { - List result = apiInstance.getBooksByCategoryUsingGET(id); - System.out.println(result); -} catch (ApiException e) { - System.err.println("Exception when calling BookApiApi#getBooksByCategoryUsingGET"); - e.printStackTrace(); -} -``` - -### Parameters - -Name | Type | Description | Notes -------------- | ------------- | ------------- | ------------- - **id** | **Integer**| id | - -### Return type - -[**List<Book>**](Book.md) - -### Authorization - -[api_key](../README.md#api_key) - -### HTTP request headers - - - **Content-Type**: application/json - - **Accept**: */* - - -# **updateUsingPOST** -> Boolean updateUsingPOST(id) - -更新书籍 - -### Example -```java -// Import classes: -//import io.swagger.client.ApiClient; -//import io.swagger.client.ApiException; -//import io.swagger.client.Configuration; -//import io.swagger.client.auth.*; -//import io.swagger.client.api.BookApiApi; - -ApiClient defaultClient = Configuration.getDefaultApiClient(); - -// Configure API key authorization: api_key -ApiKeyAuth api_key = (ApiKeyAuth) defaultClient.getAuthentication("api_key"); -api_key.setApiKey("YOUR API KEY"); -// Uncomment the following line to set a prefix for the API key, e.g. "Token" (defaults to null) -//api_key.setApiKeyPrefix("Token"); - -BookApiApi apiInstance = new BookApiApi(); -Integer id = 56; // Integer | id -try { - Boolean result = apiInstance.updateUsingPOST(id); - System.out.println(result); -} catch (ApiException e) { - System.err.println("Exception when calling BookApiApi#updateUsingPOST"); - e.printStackTrace(); -} -``` - -### Parameters - -Name | Type | Description | Notes -------------- | ------------- | ------------- | ------------- - **id** | **Integer**| id | [optional] - -### Return type - -**Boolean** - -### Authorization - -[api_key](../README.md#api_key) - -### HTTP request headers - - - **Content-Type**: application/json - - **Accept**: */* - diff --git a/client/java/docs/Category.md b/client/java/docs/Category.md deleted file mode 100644 index be682f1..0000000 --- a/client/java/docs/Category.md +++ /dev/null @@ -1,11 +0,0 @@ - -# Category - -## Properties -Name | Type | Description | Notes ------------- | ------------- | ------------- | ------------- -**id** | **Integer** | | [optional] -**name** | **String** | | [optional] - - - diff --git a/client/java/docs/CategoryApiApi.md b/client/java/docs/CategoryApiApi.md deleted file mode 100644 index 7bb7dbc..0000000 --- a/client/java/docs/CategoryApiApi.md +++ /dev/null @@ -1,92 +0,0 @@ -# CategoryApiApi - -All URIs are relative to *http://localhost:8080* - -Method | HTTP request | Description -------------- | ------------- | ------------- -[**getAllUsingGET**](CategoryApiApi.md#getAllUsingGET) | **GET** /v1/category/ | 获取全部分类 -[**getUsingGET**](CategoryApiApi.md#getUsingGET) | **GET** /v1/category/{id} | 根据ID获取分类 - - - -# **getAllUsingGET** -> List<Category> getAllUsingGET() - -获取全部分类 - -### Example -```java -// Import classes: -//import io.swagger.client.ApiException; -//import io.swagger.client.api.CategoryApiApi; - - -CategoryApiApi apiInstance = new CategoryApiApi(); -try { - List result = apiInstance.getAllUsingGET(); - System.out.println(result); -} catch (ApiException e) { - System.err.println("Exception when calling CategoryApiApi#getAllUsingGET"); - e.printStackTrace(); -} -``` - -### Parameters -This endpoint does not need any parameter. - -### Return type - -[**List<Category>**](Category.md) - -### Authorization - -No authorization required - -### HTTP request headers - - - **Content-Type**: application/json - - **Accept**: */* - - -# **getUsingGET** -> Category getUsingGET(id) - -根据ID获取分类 - -### Example -```java -// Import classes: -//import io.swagger.client.ApiException; -//import io.swagger.client.api.CategoryApiApi; - - -CategoryApiApi apiInstance = new CategoryApiApi(); -Integer id = 56; // Integer | id -try { - Category result = apiInstance.getUsingGET(id); - System.out.println(result); -} catch (ApiException e) { - System.err.println("Exception when calling CategoryApiApi#getUsingGET"); - e.printStackTrace(); -} -``` - -### Parameters - -Name | Type | Description | Notes -------------- | ------------- | ------------- | ------------- - **id** | **Integer**| id | - -### Return type - -[**Category**](Category.md) - -### Authorization - -No authorization required - -### HTTP request headers - - - **Content-Type**: application/json - - **Accept**: */* - diff --git a/client/java/git_push.sh b/client/java/git_push.sh deleted file mode 100644 index ed37461..0000000 --- a/client/java/git_push.sh +++ /dev/null @@ -1,52 +0,0 @@ -#!/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="GIT_USER_ID" - echo "[INFO] No command line input provided. Set \$git_user_id to $git_user_id" -fi - -if [ "$git_repo_id" = "" ]; then - git_repo_id="GIT_REPO_ID" - echo "[INFO] No command line input provided. Set \$git_repo_id to $git_repo_id" -fi - -if [ "$release_note" = "" ]; then - release_note="Minor update" - 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' - diff --git a/client/java/gradle.properties b/client/java/gradle.properties deleted file mode 100644 index 05644f0..0000000 --- a/client/java/gradle.properties +++ /dev/null @@ -1,2 +0,0 @@ -# Uncomment to build for Android -#target = android \ No newline at end of file diff --git a/client/java/gradle/wrapper/gradle-wrapper.jar b/client/java/gradle/wrapper/gradle-wrapper.jar deleted file mode 100644 index 2c6137b87896c8f70315ae454e00a969ef5f6019..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 53639 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 F{{tUq7iIte diff --git a/client/java/gradle/wrapper/gradle-wrapper.properties b/client/java/gradle/wrapper/gradle-wrapper.properties deleted file mode 100644 index b7a3647..0000000 --- a/client/java/gradle/wrapper/gradle-wrapper.properties +++ /dev/null @@ -1,6 +0,0 @@ -#Tue May 17 23:08:05 CST 2016 -distributionBase=GRADLE_USER_HOME -distributionPath=wrapper/dists -zipStoreBase=GRADLE_USER_HOME -zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-2.6-bin.zip diff --git a/client/java/gradlew b/client/java/gradlew deleted file mode 100644 index 9d82f78..0000000 --- a/client/java/gradlew +++ /dev/null @@ -1,160 +0,0 @@ -#!/usr/bin/env bash - -############################################################################## -## -## Gradle start up script for UN*X -## -############################################################################## - -# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. -DEFAULT_JVM_OPTS="" - -APP_NAME="Gradle" -APP_BASE_NAME=`basename "$0"` - -# Use the maximum available, or set MAX_FD != -1 to use that value. -MAX_FD="maximum" - -warn ( ) { - echo "$*" -} - -die ( ) { - echo - echo "$*" - echo - exit 1 -} - -# OS specific support (must be 'true' or 'false'). -cygwin=false -msys=false -darwin=false -case "`uname`" in - CYGWIN* ) - cygwin=true - ;; - Darwin* ) - darwin=true - ;; - MINGW* ) - msys=true - ;; -esac - -# Attempt to set APP_HOME -# Resolve links: $0 may be a link -PRG="$0" -# Need this for relative symlinks. -while [ -h "$PRG" ] ; do - ls=`ls -ld "$PRG"` - link=`expr "$ls" : '.*-> \(.*\)$'` - if expr "$link" : '/.*' > /dev/null; then - PRG="$link" - else - PRG=`dirname "$PRG"`"/$link" - fi -done -SAVED="`pwd`" -cd "`dirname \"$PRG\"`/" >/dev/null -APP_HOME="`pwd -P`" -cd "$SAVED" >/dev/null - -CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar - -# Determine the Java command to use to start the JVM. -if [ -n "$JAVA_HOME" ] ; then - if [ -x "$JAVA_HOME/jre/sh/java" ] ; then - # IBM's JDK on AIX uses strange locations for the executables - JAVACMD="$JAVA_HOME/jre/sh/java" - else - JAVACMD="$JAVA_HOME/bin/java" - fi - if [ ! -x "$JAVACMD" ] ; then - die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME - -Please set the JAVA_HOME variable in your environment to match the -location of your Java installation." - fi -else - JAVACMD="java" - which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. - -Please set the JAVA_HOME variable in your environment to match the -location of your Java installation." -fi - -# Increase the maximum file descriptors if we can. -if [ "$cygwin" = "false" -a "$darwin" = "false" ] ; then - MAX_FD_LIMIT=`ulimit -H -n` - if [ $? -eq 0 ] ; then - if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then - MAX_FD="$MAX_FD_LIMIT" - fi - ulimit -n $MAX_FD - if [ $? -ne 0 ] ; then - warn "Could not set maximum file descriptor limit: $MAX_FD" - fi - else - warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT" - fi -fi - -# For Darwin, add options to specify how the application appears in the dock -if $darwin; then - GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" -fi - -# For Cygwin, switch paths to Windows format before running java -if $cygwin ; then - APP_HOME=`cygpath --path --mixed "$APP_HOME"` - CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` - JAVACMD=`cygpath --unix "$JAVACMD"` - - # We build the pattern for arguments to be converted via cygpath - ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null` - SEP="" - for dir in $ROOTDIRSRAW ; do - ROOTDIRS="$ROOTDIRS$SEP$dir" - SEP="|" - done - OURCYGPATTERN="(^($ROOTDIRS))" - # Add a user-defined pattern to the cygpath arguments - if [ "$GRADLE_CYGPATTERN" != "" ] ; then - OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)" - fi - # Now convert the arguments - kludge to limit ourselves to /bin/sh - i=0 - for arg in "$@" ; do - CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -` - CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option - - if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition - eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"` - else - eval `echo args$i`="\"$arg\"" - fi - i=$((i+1)) - done - case $i in - (0) set -- ;; - (1) set -- "$args0" ;; - (2) set -- "$args0" "$args1" ;; - (3) set -- "$args0" "$args1" "$args2" ;; - (4) set -- "$args0" "$args1" "$args2" "$args3" ;; - (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; - (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; - (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; - (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; - (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; - esac -fi - -# Split up the JVM_OPTS And GRADLE_OPTS values into an array, following the shell quoting and substitution rules -function splitJvmOpts() { - JVM_OPTS=("$@") -} -eval splitJvmOpts $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS -JVM_OPTS[${#JVM_OPTS[*]}]="-Dorg.gradle.appname=$APP_BASE_NAME" - -exec "$JAVACMD" "${JVM_OPTS[@]}" -classpath "$CLASSPATH" org.gradle.wrapper.GradleWrapperMain "$@" diff --git a/client/java/gradlew.bat b/client/java/gradlew.bat deleted file mode 100644 index 5f19212..0000000 --- a/client/java/gradlew.bat +++ /dev/null @@ -1,90 +0,0 @@ -@if "%DEBUG%" == "" @echo off -@rem ########################################################################## -@rem -@rem Gradle startup script for Windows -@rem -@rem ########################################################################## - -@rem Set local scope for the variables with windows NT shell -if "%OS%"=="Windows_NT" setlocal - -@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. -set DEFAULT_JVM_OPTS= - -set DIRNAME=%~dp0 -if "%DIRNAME%" == "" set DIRNAME=. -set APP_BASE_NAME=%~n0 -set APP_HOME=%DIRNAME% - -@rem Find java.exe -if defined JAVA_HOME goto findJavaFromJavaHome - -set JAVA_EXE=java.exe -%JAVA_EXE% -version >NUL 2>&1 -if "%ERRORLEVEL%" == "0" goto init - -echo. -echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. -echo. -echo Please set the JAVA_HOME variable in your environment to match the -echo location of your Java installation. - -goto fail - -:findJavaFromJavaHome -set JAVA_HOME=%JAVA_HOME:"=% -set JAVA_EXE=%JAVA_HOME%/bin/java.exe - -if exist "%JAVA_EXE%" goto init - -echo. -echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% -echo. -echo Please set the JAVA_HOME variable in your environment to match the -echo location of your Java installation. - -goto fail - -:init -@rem Get command-line arguments, handling Windows variants - -if not "%OS%" == "Windows_NT" goto win9xME_args -if "%@eval[2+2]" == "4" goto 4NT_args - -:win9xME_args -@rem Slurp the command line arguments. -set CMD_LINE_ARGS= -set _SKIP=2 - -:win9xME_args_slurp -if "x%~1" == "x" goto execute - -set CMD_LINE_ARGS=%* -goto execute - -:4NT_args -@rem Get arguments from the 4NT Shell from JP Software -set CMD_LINE_ARGS=%$ - -:execute -@rem Setup the command line - -set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar - -@rem Execute Gradle -"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS% - -:end -@rem End local scope for the variables with windows NT shell -if "%ERRORLEVEL%"=="0" goto mainEnd - -:fail -rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of -rem the _cmd.exe /c_ return code! -if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 -exit /b 1 - -:mainEnd -if "%OS%"=="Windows_NT" endlocal - -:omega diff --git a/client/java/pom.xml b/client/java/pom.xml deleted file mode 100644 index 29b3cfa..0000000 --- a/client/java/pom.xml +++ /dev/null @@ -1,212 +0,0 @@ - - 4.0.0 - com.example - swagger-client-java - jar - swagger-client-java - 1.0.0 - https://github.com/swagger-api/swagger-codegen - Swagger Java - - scm:git:git@github.com:swagger-api/swagger-codegen.git - scm:git:git@github.com:swagger-api/swagger-codegen.git - https://github.com/swagger-api/swagger-codegen - - - 2.2.0 - - - - - Unlicense - http://www.apache.org/licenses/LICENSE-2.0.html - repo - - - - - - Swagger - apiteam@swagger.io - Swagger - http://swagger.io - - - - - - - org.apache.maven.plugins - maven-surefire-plugin - 2.12 - - - - loggerPath - conf/log4j.properties - - - -Xms512m -Xmx1500m - methods - pertest - - - - maven-dependency-plugin - - - package - - copy-dependencies - - - ${project.build.directory}/lib - - - - - - - - org.apache.maven.plugins - maven-jar-plugin - 2.2 - - - - jar - test-jar - - - - - - - - - org.codehaus.mojo - build-helper-maven-plugin - 1.10 - - - add_sources - generate-sources - - add-source - - - - src/main/java - - - - - add_test_sources - generate-test-sources - - add-test-source - - - - src/test/java - - - - - - - org.apache.maven.plugins - maven-javadoc-plugin - 2.10.4 - - - attach-javadocs - - jar - - - - - - org.apache.maven.plugins - maven-source-plugin - 2.2.1 - - - attach-sources - - jar-no-fork - - - - - - - - - - sign-artifacts - - - - org.apache.maven.plugins - maven-gpg-plugin - 1.5 - - - sign-artifacts - verify - - sign - - - - - - - - - - - - io.swagger - swagger-annotations - ${swagger-core-version} - - - com.squareup.okhttp - okhttp - ${okhttp-version} - - - com.squareup.okhttp - logging-interceptor - ${okhttp-version} - - - com.google.code.gson - gson - ${gson-version} - - - - junit - junit - ${junit-version} - test - - - - 1.8 - ${java.version} - ${java.version} - 1.5.15 - 2.7.5 - 2.8.1 - 2.9.9 - 1.0.0 - 4.12 - UTF-8 - - diff --git a/client/java/settings.gradle b/client/java/settings.gradle deleted file mode 100644 index 8f30e98..0000000 --- a/client/java/settings.gradle +++ /dev/null @@ -1 +0,0 @@ -rootProject.name = "swagger-client-java" \ No newline at end of file diff --git a/client/java/src/main/AndroidManifest.xml b/client/java/src/main/AndroidManifest.xml deleted file mode 100644 index 465dcb5..0000000 --- a/client/java/src/main/AndroidManifest.xml +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/client/java/src/main/java/io/swagger/client/ApiCallback.java b/client/java/src/main/java/io/swagger/client/ApiCallback.java deleted file mode 100644 index 5f685e9..0000000 --- a/client/java/src/main/java/io/swagger/client/ApiCallback.java +++ /dev/null @@ -1,62 +0,0 @@ -/* - * Swagger Demo - * Swagger的简单示例, 包括swagger-codegen, swagger2markup 和 asciidoctor. - * - * OpenAPI spec version: v1 - * Contact: damon.q@iv66.net - * - * NOTE: This class is auto generated by the swagger code generator program. - * https://github.com/swagger-api/swagger-codegen.git - * Do not edit the class manually. - */ - - -package io.swagger.client; - -import java.io.IOException; - -import java.util.Map; -import java.util.List; - -/** - * Callback for asynchronous API call. - * - * @param The return type - */ -public interface ApiCallback { - /** - * This is called when the API call fails. - * - * @param e The exception causing the failure - * @param statusCode Status code of the response if available, otherwise it would be 0 - * @param responseHeaders Headers of the response if available, otherwise it would be null - */ - void onFailure(ApiException e, int statusCode, Map> responseHeaders); - - /** - * This is called when the API call succeeded. - * - * @param result The result deserialized from response - * @param statusCode Status code of the response - * @param responseHeaders Headers of the response - */ - void onSuccess(T result, int statusCode, Map> responseHeaders); - - /** - * This is called when the API upload processing. - * - * @param bytesWritten bytes Written - * @param contentLength content length of request body - * @param done write end - */ - void onUploadProgress(long bytesWritten, long contentLength, boolean done); - - /** - * This is called when the API downlond processing. - * - * @param bytesRead bytes Read - * @param contentLength content lenngth of the response - * @param done Read end - */ - void onDownloadProgress(long bytesRead, long contentLength, boolean done); -} diff --git a/client/java/src/main/java/io/swagger/client/ApiClient.java b/client/java/src/main/java/io/swagger/client/ApiClient.java deleted file mode 100644 index 39ebae1..0000000 --- a/client/java/src/main/java/io/swagger/client/ApiClient.java +++ /dev/null @@ -1,1359 +0,0 @@ -/* - * Swagger Demo - * Swagger的简单示例, 包括swagger-codegen, swagger2markup 和 asciidoctor. - * - * OpenAPI spec version: v1 - * Contact: damon.q@iv66.net - * - * NOTE: This class is auto generated by the swagger code generator program. - * https://github.com/swagger-api/swagger-codegen.git - * Do not edit the class manually. - */ - - -package io.swagger.client; - -import com.squareup.okhttp.Call; -import com.squareup.okhttp.Callback; -import com.squareup.okhttp.OkHttpClient; -import com.squareup.okhttp.Request; -import com.squareup.okhttp.Response; -import com.squareup.okhttp.RequestBody; -import com.squareup.okhttp.FormEncodingBuilder; -import com.squareup.okhttp.MultipartBuilder; -import com.squareup.okhttp.MediaType; -import com.squareup.okhttp.Headers; -import com.squareup.okhttp.internal.http.HttpMethod; -import com.squareup.okhttp.logging.HttpLoggingInterceptor; -import com.squareup.okhttp.logging.HttpLoggingInterceptor.Level; - -import java.lang.reflect.Type; - -import java.util.Collection; -import java.util.Collections; -import java.util.Map; -import java.util.Map.Entry; -import java.util.HashMap; -import java.util.List; -import java.util.ArrayList; -import java.util.Date; -import java.util.TimeZone; -import java.util.concurrent.TimeUnit; -import java.util.regex.Matcher; -import java.util.regex.Pattern; - -import java.net.URLEncoder; -import java.net.URLConnection; - -import java.io.File; -import java.io.InputStream; -import java.io.IOException; -import java.io.UnsupportedEncodingException; - -import java.security.GeneralSecurityException; -import java.security.KeyStore; -import java.security.SecureRandom; -import java.security.cert.Certificate; -import java.security.cert.CertificateException; -import java.security.cert.CertificateFactory; -import java.security.cert.X509Certificate; - -import java.text.DateFormat; -import java.text.SimpleDateFormat; -import java.text.ParseException; - -import javax.net.ssl.HostnameVerifier; -import javax.net.ssl.KeyManager; -import javax.net.ssl.KeyManagerFactory; -import javax.net.ssl.SSLContext; -import javax.net.ssl.SSLSession; -import javax.net.ssl.TrustManager; -import javax.net.ssl.TrustManagerFactory; -import javax.net.ssl.X509TrustManager; - -import okio.BufferedSink; -import okio.Okio; - -import io.swagger.client.auth.Authentication; -import io.swagger.client.auth.HttpBasicAuth; -import io.swagger.client.auth.ApiKeyAuth; -import io.swagger.client.auth.OAuth; - -public class ApiClient { - public static final double JAVA_VERSION; - public static final boolean IS_ANDROID; - public static final int ANDROID_SDK_VERSION; - - static { - JAVA_VERSION = Double.parseDouble(System.getProperty("java.specification.version")); - boolean isAndroid; - try { - Class.forName("android.app.Activity"); - isAndroid = true; - } catch (ClassNotFoundException e) { - isAndroid = false; - } - IS_ANDROID = isAndroid; - int sdkVersion = 0; - if (IS_ANDROID) { - try { - sdkVersion = Class.forName("android.os.Build$VERSION").getField("SDK_INT").getInt(null); - } catch (Exception e) { - try { - sdkVersion = Integer.parseInt((String) Class.forName("android.os.Build$VERSION").getField("SDK").get(null)); - } catch (Exception e2) { } - } - } - ANDROID_SDK_VERSION = sdkVersion; - } - - /** - * The datetime format to be used when lenientDatetimeFormat is enabled. - */ - public static final String LENIENT_DATETIME_FORMAT = "yyyy-MM-dd'T'HH:mm:ss.SSSZ"; - - private String basePath = "http://localhost:8080"; - private boolean lenientOnJson = false; - private boolean debugging = false; - private Map defaultHeaderMap = new HashMap(); - private String tempFolderPath = null; - - private Map authentications; - - private DateFormat dateFormat; - private DateFormat datetimeFormat; - private boolean lenientDatetimeFormat; - private int dateLength; - - private InputStream sslCaCert; - private boolean verifyingSsl; - private KeyManager[] keyManagers; - - private OkHttpClient httpClient; - private JSON json; - - private HttpLoggingInterceptor loggingInterceptor; - - /* - * Constructor for ApiClient - */ - public ApiClient() { - httpClient = new OkHttpClient(); - - - verifyingSsl = true; - - json = new JSON(this); - - /* - * Use RFC3339 format for date and datetime. - * See http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14 - */ - this.dateFormat = new SimpleDateFormat("yyyy-MM-dd"); - // Always use UTC as the default time zone when dealing with date (without time). - this.dateFormat.setTimeZone(TimeZone.getTimeZone("UTC")); - initDatetimeFormat(); - - // Be lenient on datetime formats when parsing datetime from string. - // See parseDatetime. - this.lenientDatetimeFormat = true; - - // Set default User-Agent. - setUserAgent("Swagger-Codegen/1.0.0/java"); - - // Setup authentications (key: authentication name, value: authentication). - authentications = new HashMap(); - authentications.put("api_key", new ApiKeyAuth("header", "api_key")); - // Prevent the authentications from being modified. - authentications = Collections.unmodifiableMap(authentications); - } - - /** - * Get base path - * - * @return Baes path - */ - public String getBasePath() { - return basePath; - } - - /** - * Set base path - * - * @param basePath Base path of the URL (e.g http://localhost:8080 - * @return An instance of OkHttpClient - */ - public ApiClient setBasePath(String basePath) { - this.basePath = basePath; - return this; - } - - /** - * Get HTTP client - * - * @return An instance of OkHttpClient - */ - public OkHttpClient getHttpClient() { - return httpClient; - } - - /** - * Set HTTP client - * - * @param httpClient An instance of OkHttpClient - * @return Api Client - */ - public ApiClient setHttpClient(OkHttpClient httpClient) { - this.httpClient = httpClient; - return this; - } - - /** - * Get JSON - * - * @return JSON object - */ - public JSON getJSON() { - return json; - } - - /** - * Set JSON - * - * @param json JSON object - * @return Api client - */ - public ApiClient setJSON(JSON json) { - this.json = json; - return this; - } - - /** - * True if isVerifyingSsl flag is on - * - * @return True if isVerifySsl flag is on - */ - public boolean isVerifyingSsl() { - return verifyingSsl; - } - - /** - * Configure whether to verify certificate and hostname when making https requests. - * Default to true. - * NOTE: Do NOT set to false in production code, otherwise you would face multiple types of cryptographic attacks. - * - * @param verifyingSsl True to verify TLS/SSL connection - * @return ApiClient - */ - public ApiClient setVerifyingSsl(boolean verifyingSsl) { - this.verifyingSsl = verifyingSsl; - applySslSettings(); - return this; - } - - /** - * Get SSL CA cert. - * - * @return Input stream to the SSL CA cert - */ - public InputStream getSslCaCert() { - return sslCaCert; - } - - /** - * Configure the CA certificate to be trusted when making https requests. - * Use null to reset to default. - * - * @param sslCaCert input stream for SSL CA cert - * @return ApiClient - */ - public ApiClient setSslCaCert(InputStream sslCaCert) { - this.sslCaCert = sslCaCert; - applySslSettings(); - return this; - } - - public KeyManager[] getKeyManagers() { - return keyManagers; - } - - /** - * Configure client keys to use for authorization in an SSL session. - * Use null to reset to default. - * - * @param managers The KeyManagers to use - * @return ApiClient - */ - public ApiClient setKeyManagers(KeyManager[] managers) { - this.keyManagers = managers; - applySslSettings(); - return this; - } - - public DateFormat getDateFormat() { - return dateFormat; - } - - public ApiClient setDateFormat(DateFormat dateFormat) { - this.dateFormat = dateFormat; - this.dateLength = this.dateFormat.format(new Date()).length(); - return this; - } - - public DateFormat getDatetimeFormat() { - return datetimeFormat; - } - - public ApiClient setDatetimeFormat(DateFormat datetimeFormat) { - this.datetimeFormat = datetimeFormat; - return this; - } - - /** - * Whether to allow various ISO 8601 datetime formats when parsing a datetime string. - * @see #parseDatetime(String) - * @return True if lenientDatetimeFormat flag is set to true - */ - public boolean isLenientDatetimeFormat() { - return lenientDatetimeFormat; - } - - public ApiClient setLenientDatetimeFormat(boolean lenientDatetimeFormat) { - this.lenientDatetimeFormat = lenientDatetimeFormat; - return this; - } - - /** - * Parse the given date string into Date object. - * The default dateFormat supports these ISO 8601 date formats: - * 2015-08-16 - * 2015-8-16 - * @param str String to be parsed - * @return Date - */ - public Date parseDate(String str) { - if (str == null) - return null; - try { - return dateFormat.parse(str); - } catch (ParseException e) { - throw new RuntimeException(e); - } - } - - /** - * Parse the given datetime string into Date object. - * When lenientDatetimeFormat is enabled, the following ISO 8601 datetime formats are supported: - * 2015-08-16T08:20:05Z - * 2015-8-16T8:20:05Z - * 2015-08-16T08:20:05+00:00 - * 2015-08-16T08:20:05+0000 - * 2015-08-16T08:20:05.376Z - * 2015-08-16T08:20:05.376+00:00 - * 2015-08-16T08:20:05.376+00 - * Note: The 3-digit milli-seconds is optional. Time zone is required and can be in one of - * these formats: - * Z (same with +0000) - * +08:00 (same with +0800) - * -02 (same with -0200) - * -0200 - * @see ISO 8601 - * @param str Date time string to be parsed - * @return Date representation of the string - */ - public Date parseDatetime(String str) { - if (str == null) - return null; - - DateFormat format; - if (lenientDatetimeFormat) { - /* - * When lenientDatetimeFormat is enabled, normalize the date string - * into LENIENT_DATETIME_FORMAT to support various formats - * defined by ISO 8601. - */ - // normalize time zone - // trailing "Z": 2015-08-16T08:20:05Z => 2015-08-16T08:20:05+0000 - str = str.replaceAll("[zZ]\\z", "+0000"); - // remove colon in time zone: 2015-08-16T08:20:05+00:00 => 2015-08-16T08:20:05+0000 - str = str.replaceAll("([+-]\\d{2}):(\\d{2})\\z", "$1$2"); - // expand time zone: 2015-08-16T08:20:05+00 => 2015-08-16T08:20:05+0000 - str = str.replaceAll("([+-]\\d{2})\\z", "$100"); - // add milliseconds when missing - // 2015-08-16T08:20:05+0000 => 2015-08-16T08:20:05.000+0000 - str = str.replaceAll("(:\\d{1,2})([+-]\\d{4})\\z", "$1.000$2"); - format = new SimpleDateFormat(LENIENT_DATETIME_FORMAT); - } else { - format = this.datetimeFormat; - } - - try { - return format.parse(str); - } catch (ParseException e) { - throw new RuntimeException(e); - } - } - - /* - * Parse date or date time in string format into Date object. - * - * @param str Date time string to be parsed - * @return Date representation of the string - */ - public Date parseDateOrDatetime(String str) { - if (str == null) - return null; - else if (str.length() <= dateLength) - return parseDate(str); - else - return parseDatetime(str); - } - - /** - * Format the given Date object into string (Date format). - * - * @param date Date object - * @return Formatted date in string representation - */ - public String formatDate(Date date) { - return dateFormat.format(date); - } - - /** - * Format the given Date object into string (Datetime format). - * - * @param date Date object - * @return Formatted datetime in string representation - */ - public String formatDatetime(Date date) { - return datetimeFormat.format(date); - } - - /** - * Get authentications (key: authentication name, value: authentication). - * - * @return Map of authentication objects - */ - public Map getAuthentications() { - return authentications; - } - - /** - * Get authentication for the given name. - * - * @param authName The authentication name - * @return The authentication, null if not found - */ - public Authentication getAuthentication(String authName) { - return authentications.get(authName); - } - - /** - * Helper method to set username for the first HTTP basic authentication. - * - * @param username Username - */ - public void setUsername(String username) { - for (Authentication auth : authentications.values()) { - if (auth instanceof HttpBasicAuth) { - ((HttpBasicAuth) auth).setUsername(username); - return; - } - } - throw new RuntimeException("No HTTP basic authentication configured!"); - } - - /** - * Helper method to set password for the first HTTP basic authentication. - * - * @param password Password - */ - public void setPassword(String password) { - for (Authentication auth : authentications.values()) { - if (auth instanceof HttpBasicAuth) { - ((HttpBasicAuth) auth).setPassword(password); - return; - } - } - throw new RuntimeException("No HTTP basic authentication configured!"); - } - - /** - * Helper method to set API key value for the first API key authentication. - * - * @param apiKey API key - */ - public void setApiKey(String apiKey) { - for (Authentication auth : authentications.values()) { - if (auth instanceof ApiKeyAuth) { - ((ApiKeyAuth) auth).setApiKey(apiKey); - return; - } - } - throw new RuntimeException("No API key authentication configured!"); - } - - /** - * Helper method to set API key prefix for the first API key authentication. - * - * @param apiKeyPrefix API key prefix - */ - public void setApiKeyPrefix(String apiKeyPrefix) { - for (Authentication auth : authentications.values()) { - if (auth instanceof ApiKeyAuth) { - ((ApiKeyAuth) auth).setApiKeyPrefix(apiKeyPrefix); - return; - } - } - throw new RuntimeException("No API key authentication configured!"); - } - - /** - * Helper method to set access token for the first OAuth2 authentication. - * - * @param accessToken Access token - */ - public void setAccessToken(String accessToken) { - for (Authentication auth : authentications.values()) { - if (auth instanceof OAuth) { - ((OAuth) auth).setAccessToken(accessToken); - return; - } - } - throw new RuntimeException("No OAuth2 authentication configured!"); - } - - /** - * Set the User-Agent header's value (by adding to the default header map). - * - * @param userAgent HTTP request's user agent - * @return ApiClient - */ - public ApiClient setUserAgent(String userAgent) { - addDefaultHeader("User-Agent", userAgent); - return this; - } - - /** - * Add a default header. - * - * @param key The header's key - * @param value The header's value - * @return ApiClient - */ - public ApiClient addDefaultHeader(String key, String value) { - defaultHeaderMap.put(key, value); - return this; - } - - /** - * @see setLenient - * - * @return True if lenientOnJson is enabled, false otherwise. - */ - public boolean isLenientOnJson() { - return lenientOnJson; - } - - /** - * Set LenientOnJson - * - * @param lenient True to enable lenientOnJson - * @return ApiClient - */ - public ApiClient setLenientOnJson(boolean lenient) { - this.lenientOnJson = lenient; - return this; - } - - /** - * Check that whether debugging is enabled for this API client. - * - * @return True if debugging is enabled, false otherwise. - */ - public boolean isDebugging() { - return debugging; - } - - /** - * Enable/disable debugging for this API client. - * - * @param debugging To enable (true) or disable (false) debugging - * @return ApiClient - */ - public ApiClient setDebugging(boolean debugging) { - if (debugging != this.debugging) { - if (debugging) { - loggingInterceptor = new HttpLoggingInterceptor(); - loggingInterceptor.setLevel(Level.BODY); - httpClient.interceptors().add(loggingInterceptor); - } else { - httpClient.interceptors().remove(loggingInterceptor); - loggingInterceptor = null; - } - } - this.debugging = debugging; - return this; - } - - /** - * The path of temporary folder used to store downloaded files from endpoints - * with file response. The default value is null, i.e. using - * the system's default tempopary folder. - * - * @see createTempFile - * @return Temporary folder path - */ - public String getTempFolderPath() { - return tempFolderPath; - } - - /** - * Set the tempoaray folder path (for downloading files) - * - * @param tempFolderPath Temporary folder path - * @return ApiClient - */ - public ApiClient setTempFolderPath(String tempFolderPath) { - this.tempFolderPath = tempFolderPath; - return this; - } - - /** - * Get connection timeout (in milliseconds). - * - * @return Timeout in milliseconds - */ - public int getConnectTimeout() { - return httpClient.getConnectTimeout(); - } - - /** - * Sets the connect timeout (in milliseconds). - * A value of 0 means no timeout, otherwise values must be between 1 and - * - * @param connectionTimeout connection timeout in milliseconds - * @return Api client - */ - public ApiClient setConnectTimeout(int connectionTimeout) { - httpClient.setConnectTimeout(connectionTimeout, TimeUnit.MILLISECONDS); - return this; - } - - /** - * Format the given parameter object into string. - * - * @param param Parameter - * @return String representation of the parameter - */ - public String parameterToString(Object param) { - if (param == null) { - return ""; - } else if (param instanceof Date) { - return formatDatetime((Date) param); - } else if (param instanceof Collection) { - StringBuilder b = new StringBuilder(); - for (Object o : (Collection)param) { - if (b.length() > 0) { - b.append(","); - } - b.append(String.valueOf(o)); - } - return b.toString(); - } else { - return String.valueOf(param); - } - } - - /** - * Format to {@code Pair} objects. - * - * @param collectionFormat collection format (e.g. csv, tsv) - * @param name Name - * @param value Value - * @return A list of Pair objects - */ - public List parameterToPairs(String collectionFormat, String name, Object value){ - List params = new ArrayList(); - - // preconditions - if (name == null || name.isEmpty() || value == null) return params; - - Collection valueCollection = null; - if (value instanceof Collection) { - valueCollection = (Collection) value; - } else { - params.add(new Pair(name, parameterToString(value))); - return params; - } - - if (valueCollection.isEmpty()){ - return params; - } - - // get the collection format - collectionFormat = (collectionFormat == null || collectionFormat.isEmpty() ? "csv" : collectionFormat); // default: csv - - // create the params based on the collection format - if (collectionFormat.equals("multi")) { - for (Object item : valueCollection) { - params.add(new Pair(name, parameterToString(item))); - } - - return params; - } - - String delimiter = ","; - - if (collectionFormat.equals("csv")) { - delimiter = ","; - } else if (collectionFormat.equals("ssv")) { - delimiter = " "; - } else if (collectionFormat.equals("tsv")) { - delimiter = "\t"; - } else if (collectionFormat.equals("pipes")) { - delimiter = "|"; - } - - StringBuilder sb = new StringBuilder() ; - for (Object item : valueCollection) { - sb.append(delimiter); - sb.append(parameterToString(item)); - } - - params.add(new Pair(name, sb.substring(1))); - - return params; - } - - /** - * Sanitize filename by removing path. - * e.g. ../../sun.gif becomes sun.gif - * - * @param filename The filename to be sanitized - * @return The sanitized filename - */ - public String sanitizeFilename(String filename) { - return filename.replaceAll(".*[/\\\\]", ""); - } - - /** - * Check if the given MIME is a JSON MIME. - * JSON MIME examples: - * application/json - * application/json; charset=UTF8 - * APPLICATION/JSON - * application/vnd.company+json - * @param mime MIME (Multipurpose Internet Mail Extensions) - * @return True if the given MIME is JSON, false otherwise. - */ - public boolean isJsonMime(String mime) { - String jsonMime = "(?i)^(application/json|[^;/ \t]+/[^;/ \t]+[+]json)[ \t]*(;.*)?$"; - return mime != null && (mime.matches(jsonMime) || mime.equalsIgnoreCase("application/json-patch+json")); - } - - /** - * Select the Accept header's value from the given accepts array: - * if JSON exists in the given array, use it; - * otherwise use all of them (joining into a string) - * - * @param accepts The accepts array to select from - * @return The Accept header to use. If the given array is empty, - * null will be returned (not to set the Accept header explicitly). - */ - public String selectHeaderAccept(String[] accepts) { - if (accepts.length == 0) { - return null; - } - for (String accept : accepts) { - if (isJsonMime(accept)) { - return accept; - } - } - return StringUtil.join(accepts, ","); - } - - /** - * Select the Content-Type header's value from the given array: - * if JSON exists in the given array, use it; - * otherwise use the first one of the array. - * - * @param contentTypes The Content-Type array to select from - * @return The Content-Type header to use. If the given array is empty, - * JSON will be used. - */ - public String selectHeaderContentType(String[] contentTypes) { - if (contentTypes.length == 0) { - return "application/json"; - } - for (String contentType : contentTypes) { - if (isJsonMime(contentType)) { - return contentType; - } - } - return contentTypes[0]; - } - - /** - * Escape the given string to be used as URL query value. - * - * @param str String to be escaped - * @return Escaped string - */ - public String escapeString(String str) { - try { - return URLEncoder.encode(str, "utf8").replaceAll("\\+", "%20"); - } catch (UnsupportedEncodingException e) { - return str; - } - } - - /** - * Deserialize response body to Java object, according to the return type and - * the Content-Type response header. - * - * @param Type - * @param response HTTP response - * @param returnType The type of the Java object - * @return The deserialized Java object - * @throws ApiException If fail to deserialize response body, i.e. cannot read response body - * or the Content-Type of the response is not supported. - */ - @SuppressWarnings("unchecked") - public T deserialize(Response response, Type returnType) throws ApiException { - if (response == null || returnType == null) { - return null; - } - - if ("byte[]".equals(returnType.toString())) { - // Handle binary response (byte array). - try { - return (T) response.body().bytes(); - } catch (IOException e) { - throw new ApiException(e); - } - } else if (returnType.equals(File.class)) { - // Handle file downloading. - return (T) downloadFileFromResponse(response); - } - - String respBody; - try { - if (response.body() != null) - respBody = response.body().string(); - else - respBody = null; - } catch (IOException e) { - throw new ApiException(e); - } - - if (respBody == null || "".equals(respBody)) { - return null; - } - - String contentType = response.headers().get("Content-Type"); - if (contentType == null) { - // ensuring a default content type - contentType = "application/json"; - } - if (isJsonMime(contentType)) { - return json.deserialize(respBody, returnType); - } else if (returnType.equals(String.class)) { - // Expecting string, return the raw response body. - return (T) respBody; - } else { - throw new ApiException( - "Content type \"" + contentType + "\" is not supported for type: " + returnType, - response.code(), - response.headers().toMultimap(), - respBody); - } - } - - /** - * Serialize the given Java object into request body according to the object's - * class and the request Content-Type. - * - * @param obj The Java object - * @param contentType The request Content-Type - * @return The serialized request body - * @throws ApiException If fail to serialize the given object - */ - public RequestBody serialize(Object obj, String contentType) throws ApiException { - if (obj instanceof byte[]) { - // Binary (byte array) body parameter support. - return RequestBody.create(MediaType.parse(contentType), (byte[]) obj); - } else if (obj instanceof File) { - // File body parameter support. - return RequestBody.create(MediaType.parse(contentType), (File) obj); - } else if (isJsonMime(contentType)) { - String content; - if (obj != null) { - content = json.serialize(obj); - } else { - content = null; - } - return RequestBody.create(MediaType.parse(contentType), content); - } else { - throw new ApiException("Content type \"" + contentType + "\" is not supported"); - } - } - - /** - * Download file from the given response. - * - * @param response An instance of the Response object - * @throws ApiException If fail to read file content from response and write to disk - * @return Downloaded file - */ - public File downloadFileFromResponse(Response response) throws ApiException { - try { - File file = prepareDownloadFile(response); - BufferedSink sink = Okio.buffer(Okio.sink(file)); - sink.writeAll(response.body().source()); - sink.close(); - return file; - } catch (IOException e) { - throw new ApiException(e); - } - } - - /** - * Prepare file for download - * - * @param response An instance of the Response object - * @throws IOException If fail to prepare file for download - * @return Prepared file for the download - */ - public File prepareDownloadFile(Response response) throws IOException { - String filename = null; - String contentDisposition = response.header("Content-Disposition"); - if (contentDisposition != null && !"".equals(contentDisposition)) { - // Get filename from the Content-Disposition header. - Pattern pattern = Pattern.compile("filename=['\"]?([^'\"\\s]+)['\"]?"); - Matcher matcher = pattern.matcher(contentDisposition); - if (matcher.find()) { - filename = sanitizeFilename(matcher.group(1)); - } - } - - String prefix = null; - String suffix = null; - if (filename == null) { - prefix = "download-"; - suffix = ""; - } else { - int pos = filename.lastIndexOf("."); - if (pos == -1) { - prefix = filename + "-"; - } else { - prefix = filename.substring(0, pos) + "-"; - suffix = filename.substring(pos); - } - // File.createTempFile requires the prefix to be at least three characters long - if (prefix.length() < 3) - prefix = "download-"; - } - - if (tempFolderPath == null) - return File.createTempFile(prefix, suffix); - else - return File.createTempFile(prefix, suffix, new File(tempFolderPath)); - } - - /** - * {@link #execute(Call, Type)} - * - * @param Type - * @param call An instance of the Call object - * @throws ApiException If fail to execute the call - * @return ApiResponse<T> - */ - public ApiResponse execute(Call call) throws ApiException { - return execute(call, null); - } - - /** - * Execute HTTP call and deserialize the HTTP response body into the given return type. - * - * @param returnType The return type used to deserialize HTTP response body - * @param The return type corresponding to (same with) returnType - * @param call Call - * @return ApiResponse object containing response status, headers and - * data, which is a Java object deserialized from response body and would be null - * when returnType is null. - * @throws ApiException If fail to execute the call - */ - public ApiResponse execute(Call call, Type returnType) throws ApiException { - try { - Response response = call.execute(); - T data = handleResponse(response, returnType); - return new ApiResponse(response.code(), response.headers().toMultimap(), data); - } catch (IOException e) { - throw new ApiException(e); - } - } - - /** - * {@link #executeAsync(Call, Type, ApiCallback)} - * - * @param Type - * @param call An instance of the Call object - * @param callback ApiCallback<T> - */ - public void executeAsync(Call call, ApiCallback callback) { - executeAsync(call, null, callback); - } - - /** - * Execute HTTP call asynchronously. - * - * @see #execute(Call, Type) - * @param Type - * @param call The callback to be executed when the API call finishes - * @param returnType Return type - * @param callback ApiCallback - */ - @SuppressWarnings("unchecked") - public void executeAsync(Call call, final Type returnType, final ApiCallback callback) { - call.enqueue(new Callback() { - @Override - public void onFailure(Request request, IOException e) { - callback.onFailure(new ApiException(e), 0, null); - } - - @Override - public void onResponse(Response response) throws IOException { - T result; - try { - result = (T) handleResponse(response, returnType); - } catch (ApiException e) { - callback.onFailure(e, response.code(), response.headers().toMultimap()); - return; - } - callback.onSuccess(result, response.code(), response.headers().toMultimap()); - } - }); - } - - /** - * Handle the given response, return the deserialized object when the response is successful. - * - * @param Type - * @param response Response - * @param returnType Return type - * @throws ApiException If the response has a unsuccessful status code or - * fail to deserialize the response body - * @return Type - */ - public T handleResponse(Response response, Type returnType) throws ApiException { - if (response.isSuccessful()) { - if (returnType == null || response.code() == 204) { - // returning null if the returnType is not defined, - // or the status code is 204 (No Content) - if (response.body() != null) { - try { - response.body().close(); - } catch (IOException e) { - throw new ApiException(response.message(), e, response.code(), response.headers().toMultimap()); - } - } - return null; - } else { - return deserialize(response, returnType); - } - } else { - String respBody = null; - if (response.body() != null) { - try { - respBody = response.body().string(); - } catch (IOException e) { - throw new ApiException(response.message(), e, response.code(), response.headers().toMultimap()); - } - } - throw new ApiException(response.message(), response.code(), response.headers().toMultimap(), respBody); - } - } - - /** - * Build HTTP call with the given options. - * - * @param path The sub-path of the HTTP URL - * @param method The request method, one of "GET", "HEAD", "OPTIONS", "POST", "PUT", "PATCH" and "DELETE" - * @param queryParams The query parameters - * @param body The request body object - * @param headerParams The header parameters - * @param formParams The form parameters - * @param authNames The authentications to apply - * @param progressRequestListener Progress request listener - * @return The HTTP call - * @throws ApiException If fail to serialize the request body object - */ - public Call buildCall(String path, String method, List queryParams, Object body, Map headerParams, Map formParams, String[] authNames, ProgressRequestBody.ProgressRequestListener progressRequestListener) throws ApiException { - Request request = buildRequest(path, method, queryParams, body, headerParams, formParams, authNames, progressRequestListener); - - return httpClient.newCall(request); - } - - /** - * Build an HTTP request with the given options. - * - * @param path The sub-path of the HTTP URL - * @param method The request method, one of "GET", "HEAD", "OPTIONS", "POST", "PUT", "PATCH" and "DELETE" - * @param queryParams The query parameters - * @param body The request body object - * @param headerParams The header parameters - * @param formParams The form parameters - * @param authNames The authentications to apply - * @param progressRequestListener Progress request listener - * @return The HTTP request - * @throws ApiException If fail to serialize the request body object - */ - public Request buildRequest(String path, String method, List queryParams, Object body, Map headerParams, Map formParams, String[] authNames, ProgressRequestBody.ProgressRequestListener progressRequestListener) throws ApiException { - updateParamsForAuth(authNames, queryParams, headerParams); - - final String url = buildUrl(path, queryParams); - final Request.Builder reqBuilder = new Request.Builder().url(url); - processHeaderParams(headerParams, reqBuilder); - - String contentType = (String) headerParams.get("Content-Type"); - // ensuring a default content type - if (contentType == null) { - contentType = "application/json"; - } - - RequestBody reqBody; - if (!HttpMethod.permitsRequestBody(method)) { - reqBody = null; - } else if ("application/x-www-form-urlencoded".equals(contentType)) { - reqBody = buildRequestBodyFormEncoding(formParams); - } else if ("multipart/form-data".equals(contentType)) { - reqBody = buildRequestBodyMultipart(formParams); - } else if (body == null) { - if ("DELETE".equals(method)) { - // allow calling DELETE without sending a request body - reqBody = null; - } else { - // use an empty request body (for POST, PUT and PATCH) - reqBody = RequestBody.create(MediaType.parse(contentType), ""); - } - } else { - reqBody = serialize(body, contentType); - } - - Request request = null; - - if(progressRequestListener != null && reqBody != null) { - ProgressRequestBody progressRequestBody = new ProgressRequestBody(reqBody, progressRequestListener); - request = reqBuilder.method(method, progressRequestBody).build(); - } else { - request = reqBuilder.method(method, reqBody).build(); - } - - return request; - } - - /** - * Build full URL by concatenating base path, the given sub path and query parameters. - * - * @param path The sub path - * @param queryParams The query parameters - * @return The full URL - */ - public String buildUrl(String path, List queryParams) { - final StringBuilder url = new StringBuilder(); - url.append(basePath).append(path); - - if (queryParams != null && !queryParams.isEmpty()) { - // support (constant) query string in `path`, e.g. "/posts?draft=1" - String prefix = path.contains("?") ? "&" : "?"; - for (Pair param : queryParams) { - if (param.getValue() != null) { - if (prefix != null) { - url.append(prefix); - prefix = null; - } else { - url.append("&"); - } - String value = parameterToString(param.getValue()); - url.append(escapeString(param.getName())).append("=").append(escapeString(value)); - } - } - } - - return url.toString(); - } - - /** - * Set header parameters to the request builder, including default headers. - * - * @param headerParams Header parameters in the ofrm of Map - * @param reqBuilder Reqeust.Builder - */ - public void processHeaderParams(Map headerParams, Request.Builder reqBuilder) { - for (Entry param : headerParams.entrySet()) { - reqBuilder.header(param.getKey(), parameterToString(param.getValue())); - } - for (Entry header : defaultHeaderMap.entrySet()) { - if (!headerParams.containsKey(header.getKey())) { - reqBuilder.header(header.getKey(), parameterToString(header.getValue())); - } - } - } - - /** - * Update query and header parameters based on authentication settings. - * - * @param authNames The authentications to apply - * @param queryParams List of query parameters - * @param headerParams Map of header parameters - */ - public void updateParamsForAuth(String[] authNames, List queryParams, Map headerParams) { - for (String authName : authNames) { - Authentication auth = authentications.get(authName); - if (auth == null) throw new RuntimeException("Authentication undefined: " + authName); - auth.applyToParams(queryParams, headerParams); - } - } - - /** - * Build a form-encoding request body with the given form parameters. - * - * @param formParams Form parameters in the form of Map - * @return RequestBody - */ - public RequestBody buildRequestBodyFormEncoding(Map formParams) { - FormEncodingBuilder formBuilder = new FormEncodingBuilder(); - for (Entry param : formParams.entrySet()) { - formBuilder.add(param.getKey(), parameterToString(param.getValue())); - } - return formBuilder.build(); - } - - /** - * Build a multipart (file uploading) request body with the given form parameters, - * which could contain text fields and file fields. - * - * @param formParams Form parameters in the form of Map - * @return RequestBody - */ - public RequestBody buildRequestBodyMultipart(Map formParams) { - MultipartBuilder mpBuilder = new MultipartBuilder().type(MultipartBuilder.FORM); - for (Entry param : formParams.entrySet()) { - if (param.getValue() instanceof File) { - File file = (File) param.getValue(); - Headers partHeaders = Headers.of("Content-Disposition", "form-data; name=\"" + param.getKey() + "\"; filename=\"" + file.getName() + "\""); - MediaType mediaType = MediaType.parse(guessContentTypeFromFile(file)); - mpBuilder.addPart(partHeaders, RequestBody.create(mediaType, file)); - } else { - Headers partHeaders = Headers.of("Content-Disposition", "form-data; name=\"" + param.getKey() + "\""); - mpBuilder.addPart(partHeaders, RequestBody.create(null, parameterToString(param.getValue()))); - } - } - return mpBuilder.build(); - } - - /** - * Guess Content-Type header from the given file (defaults to "application/octet-stream"). - * - * @param file The given file - * @return The guessed Content-Type - */ - public String guessContentTypeFromFile(File file) { - String contentType = URLConnection.guessContentTypeFromName(file.getName()); - if (contentType == null) { - return "application/octet-stream"; - } else { - return contentType; - } - } - - /** - * Initialize datetime format according to the current environment, e.g. Java 1.7 and Android. - */ - private void initDatetimeFormat() { - String formatWithTimeZone = null; - if (IS_ANDROID) { - if (ANDROID_SDK_VERSION >= 18) { - // The time zone format "ZZZZZ" is available since Android 4.3 (SDK version 18) - formatWithTimeZone = "yyyy-MM-dd'T'HH:mm:ss.SSSZZZZZ"; - } - } else if (JAVA_VERSION >= 1.7) { - // The time zone format "XXX" is available since Java 1.7 - formatWithTimeZone = "yyyy-MM-dd'T'HH:mm:ss.SSSXXX"; - } - if (formatWithTimeZone != null) { - this.datetimeFormat = new SimpleDateFormat(formatWithTimeZone); - // NOTE: Use the system's default time zone (mainly for datetime formatting). - } else { - // Use a common format that works across all systems. - this.datetimeFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'"); - // Always use the UTC time zone as we are using a constant trailing "Z" here. - this.datetimeFormat.setTimeZone(TimeZone.getTimeZone("UTC")); - } - } - - /** - * Apply SSL related settings to httpClient according to the current values of - * verifyingSsl and sslCaCert. - */ - private void applySslSettings() { - try { - TrustManager[] trustManagers = null; - HostnameVerifier hostnameVerifier = null; - if (!verifyingSsl) { - TrustManager trustAll = new X509TrustManager() { - @Override - public void checkClientTrusted(X509Certificate[] chain, String authType) throws CertificateException {} - @Override - public void checkServerTrusted(X509Certificate[] chain, String authType) throws CertificateException {} - @Override - public X509Certificate[] getAcceptedIssuers() { return null; } - }; - SSLContext sslContext = SSLContext.getInstance("TLS"); - trustManagers = new TrustManager[]{ trustAll }; - hostnameVerifier = new HostnameVerifier() { - @Override - public boolean verify(String hostname, SSLSession session) { return true; } - }; - } else if (sslCaCert != null) { - char[] password = null; // Any password will work. - CertificateFactory certificateFactory = CertificateFactory.getInstance("X.509"); - Collection certificates = certificateFactory.generateCertificates(sslCaCert); - if (certificates.isEmpty()) { - throw new IllegalArgumentException("expected non-empty set of trusted certificates"); - } - KeyStore caKeyStore = newEmptyKeyStore(password); - int index = 0; - for (Certificate certificate : certificates) { - String certificateAlias = "ca" + Integer.toString(index++); - caKeyStore.setCertificateEntry(certificateAlias, certificate); - } - TrustManagerFactory trustManagerFactory = TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm()); - trustManagerFactory.init(caKeyStore); - trustManagers = trustManagerFactory.getTrustManagers(); - } - - if (keyManagers != null || trustManagers != null) { - SSLContext sslContext = SSLContext.getInstance("TLS"); - sslContext.init(keyManagers, trustManagers, new SecureRandom()); - httpClient.setSslSocketFactory(sslContext.getSocketFactory()); - } else { - httpClient.setSslSocketFactory(null); - } - httpClient.setHostnameVerifier(hostnameVerifier); - } catch (GeneralSecurityException e) { - throw new RuntimeException(e); - } - } - - private KeyStore newEmptyKeyStore(char[] password) throws GeneralSecurityException { - try { - KeyStore keyStore = KeyStore.getInstance(KeyStore.getDefaultType()); - keyStore.load(null, password); - return keyStore; - } catch (IOException e) { - throw new AssertionError(e); - } - } -} diff --git a/client/java/src/main/java/io/swagger/client/ApiException.java b/client/java/src/main/java/io/swagger/client/ApiException.java deleted file mode 100644 index c0b943f..0000000 --- a/client/java/src/main/java/io/swagger/client/ApiException.java +++ /dev/null @@ -1,91 +0,0 @@ -/* - * Swagger Demo - * Swagger的简单示例, 包括swagger-codegen, swagger2markup 和 asciidoctor. - * - * OpenAPI spec version: v1 - * Contact: damon.q@iv66.net - * - * NOTE: This class is auto generated by the swagger code generator program. - * https://github.com/swagger-api/swagger-codegen.git - * Do not edit the class manually. - */ - - -package io.swagger.client; - -import java.util.Map; -import java.util.List; - -@javax.annotation.Generated(value = "io.swagger.codegen.languages.JavaClientCodegen", date = "2017-11-09T10:58:38.431+08:00") -public class ApiException extends Exception { - private int code = 0; - private Map> responseHeaders = null; - private String responseBody = null; - - public ApiException() {} - - public ApiException(Throwable throwable) { - super(throwable); - } - - public ApiException(String message) { - super(message); - } - - public ApiException(String message, Throwable throwable, int code, Map> responseHeaders, String responseBody) { - super(message, throwable); - this.code = code; - this.responseHeaders = responseHeaders; - this.responseBody = responseBody; - } - - public ApiException(String message, int code, Map> responseHeaders, String responseBody) { - this(message, (Throwable) null, code, responseHeaders, responseBody); - } - - public ApiException(String message, Throwable throwable, int code, Map> responseHeaders) { - this(message, throwable, code, responseHeaders, null); - } - - public ApiException(int code, Map> responseHeaders, String responseBody) { - this((String) null, (Throwable) null, code, responseHeaders, responseBody); - } - - public ApiException(int code, String message) { - super(message); - this.code = code; - } - - public ApiException(int code, String message, Map> responseHeaders, String responseBody) { - this(code, message); - this.responseHeaders = responseHeaders; - this.responseBody = responseBody; - } - - /** - * Get the HTTP status code. - * - * @return HTTP status code - */ - public int getCode() { - return code; - } - - /** - * Get the HTTP response headers. - * - * @return A map of list of string - */ - public Map> getResponseHeaders() { - return responseHeaders; - } - - /** - * Get the HTTP response body. - * - * @return Response body in the form of string - */ - public String getResponseBody() { - return responseBody; - } -} diff --git a/client/java/src/main/java/io/swagger/client/ApiResponse.java b/client/java/src/main/java/io/swagger/client/ApiResponse.java deleted file mode 100644 index be3888b..0000000 --- a/client/java/src/main/java/io/swagger/client/ApiResponse.java +++ /dev/null @@ -1,59 +0,0 @@ -/* - * Swagger Demo - * Swagger的简单示例, 包括swagger-codegen, swagger2markup 和 asciidoctor. - * - * OpenAPI spec version: v1 - * Contact: damon.q@iv66.net - * - * NOTE: This class is auto generated by the swagger code generator program. - * https://github.com/swagger-api/swagger-codegen.git - * Do not edit the class manually. - */ - - -package io.swagger.client; - -import java.util.List; -import java.util.Map; - -/** - * API response returned by API call. - * - * @param The type of data that is deserialized from response body - */ -public class ApiResponse { - final private int statusCode; - final private Map> headers; - final private T data; - - /** - * @param statusCode The status code of HTTP response - * @param headers The headers of HTTP response - */ - public ApiResponse(int statusCode, Map> headers) { - this(statusCode, headers, null); - } - - /** - * @param statusCode The status code of HTTP response - * @param headers The headers of HTTP response - * @param data The object deserialized from response bod - */ - public ApiResponse(int statusCode, Map> headers, T data) { - this.statusCode = statusCode; - this.headers = headers; - this.data = data; - } - - public int getStatusCode() { - return statusCode; - } - - public Map> getHeaders() { - return headers; - } - - public T getData() { - return data; - } -} diff --git a/client/java/src/main/java/io/swagger/client/Configuration.java b/client/java/src/main/java/io/swagger/client/Configuration.java deleted file mode 100644 index 39389d8..0000000 --- a/client/java/src/main/java/io/swagger/client/Configuration.java +++ /dev/null @@ -1,39 +0,0 @@ -/* - * Swagger Demo - * Swagger的简单示例, 包括swagger-codegen, swagger2markup 和 asciidoctor. - * - * OpenAPI spec version: v1 - * Contact: damon.q@iv66.net - * - * NOTE: This class is auto generated by the swagger code generator program. - * https://github.com/swagger-api/swagger-codegen.git - * Do not edit the class manually. - */ - - -package io.swagger.client; - -@javax.annotation.Generated(value = "io.swagger.codegen.languages.JavaClientCodegen", date = "2017-11-09T10:58:38.431+08:00") -public class Configuration { - private static ApiClient defaultApiClient = new ApiClient(); - - /** - * Get the default API client, which would be used when creating API - * instances without providing an API client. - * - * @return Default API client - */ - public static ApiClient getDefaultApiClient() { - return defaultApiClient; - } - - /** - * Set the default API client, which would be used when creating API - * instances without providing an API client. - * - * @param apiClient API client - */ - public static void setDefaultApiClient(ApiClient apiClient) { - defaultApiClient = apiClient; - } -} diff --git a/client/java/src/main/java/io/swagger/client/GzipRequestInterceptor.java b/client/java/src/main/java/io/swagger/client/GzipRequestInterceptor.java deleted file mode 100644 index de1916f..0000000 --- a/client/java/src/main/java/io/swagger/client/GzipRequestInterceptor.java +++ /dev/null @@ -1,81 +0,0 @@ -/* - * Swagger Demo - * Swagger的简单示例, 包括swagger-codegen, swagger2markup 和 asciidoctor. - * - * OpenAPI spec version: v1 - * Contact: damon.q@iv66.net - * - * NOTE: This class is auto generated by the swagger code generator program. - * https://github.com/swagger-api/swagger-codegen.git - * Do not edit the class manually. - */ - - -package io.swagger.client; - -import com.squareup.okhttp.*; -import okio.Buffer; -import okio.BufferedSink; -import okio.GzipSink; -import okio.Okio; - -import java.io.IOException; - -/** - * Encodes request bodies using gzip. - * - * Taken from https://github.com/square/okhttp/issues/350 - */ -class GzipRequestInterceptor implements Interceptor { - @Override public Response intercept(Chain chain) throws IOException { - Request originalRequest = chain.request(); - if (originalRequest.body() == null || originalRequest.header("Content-Encoding") != null) { - return chain.proceed(originalRequest); - } - - Request compressedRequest = originalRequest.newBuilder() - .header("Content-Encoding", "gzip") - .method(originalRequest.method(), forceContentLength(gzip(originalRequest.body()))) - .build(); - return chain.proceed(compressedRequest); - } - - private RequestBody forceContentLength(final RequestBody requestBody) throws IOException { - final Buffer buffer = new Buffer(); - requestBody.writeTo(buffer); - return new RequestBody() { - @Override - public MediaType contentType() { - return requestBody.contentType(); - } - - @Override - public long contentLength() { - return buffer.size(); - } - - @Override - public void writeTo(BufferedSink sink) throws IOException { - sink.write(buffer.snapshot()); - } - }; - } - - private RequestBody gzip(final RequestBody body) { - return new RequestBody() { - @Override public MediaType contentType() { - return body.contentType(); - } - - @Override public long contentLength() { - return -1; // We don't know the compressed length in advance! - } - - @Override public void writeTo(BufferedSink sink) throws IOException { - BufferedSink gzipSink = Okio.buffer(new GzipSink(sink)); - body.writeTo(gzipSink); - gzipSink.close(); - } - }; - } -} \ No newline at end of file diff --git a/client/java/src/main/java/io/swagger/client/JSON.java b/client/java/src/main/java/io/swagger/client/JSON.java deleted file mode 100644 index 89ea654..0000000 --- a/client/java/src/main/java/io/swagger/client/JSON.java +++ /dev/null @@ -1,227 +0,0 @@ -/* - * Swagger Demo - * Swagger的简单示例, 包括swagger-codegen, swagger2markup 和 asciidoctor. - * - * OpenAPI spec version: v1 - * Contact: damon.q@iv66.net - * - * NOTE: This class is auto generated by the swagger code generator program. - * https://github.com/swagger-api/swagger-codegen.git - * Do not edit the class manually. - */ - - -package io.swagger.client; - -import com.google.gson.Gson; -import com.google.gson.GsonBuilder; -import com.google.gson.JsonDeserializationContext; -import com.google.gson.JsonDeserializer; -import com.google.gson.JsonElement; -import com.google.gson.JsonNull; -import com.google.gson.JsonParseException; -import com.google.gson.JsonPrimitive; -import com.google.gson.JsonSerializationContext; -import com.google.gson.JsonSerializer; -import com.google.gson.TypeAdapter; -import com.google.gson.stream.JsonReader; -import com.google.gson.stream.JsonWriter; - -import java.io.IOException; -import java.io.StringReader; -import java.lang.reflect.Type; -import java.util.Date; - -import java.time.LocalDate; -import java.time.OffsetDateTime; -import java.time.format.DateTimeFormatter; - -public class JSON { - private ApiClient apiClient; - private Gson gson; - - /** - * JSON constructor. - * - * @param apiClient An instance of ApiClient - */ - public JSON(ApiClient apiClient) { - this.apiClient = apiClient; - gson = new GsonBuilder() - .registerTypeAdapter(Date.class, new DateAdapter(apiClient)) - .registerTypeAdapter(OffsetDateTime.class, new OffsetDateTimeTypeAdapter()) - .registerTypeAdapter(LocalDate.class, new LocalDateTypeAdapter()) - .create(); - } - - /** - * Get Gson. - * - * @return Gson - */ - public Gson getGson() { - return gson; - } - - /** - * Set Gson. - * - * @param gson Gson - */ - public void setGson(Gson gson) { - this.gson = gson; - } - - /** - * Serialize the given Java object into JSON string. - * - * @param obj Object - * @return String representation of the JSON - */ - public String serialize(Object obj) { - return gson.toJson(obj); - } - - /** - * Deserialize the given JSON string to Java object. - * - * @param Type - * @param body The JSON string - * @param returnType The type to deserialize into - * @return The deserialized Java object - */ - @SuppressWarnings("unchecked") - public T deserialize(String body, Type returnType) { - try { - if (apiClient.isLenientOnJson()) { - JsonReader jsonReader = new JsonReader(new StringReader(body)); - // see https://google-gson.googlecode.com/svn/trunk/gson/docs/javadocs/com/google/gson/stream/JsonReader.html#setLenient(boolean) - jsonReader.setLenient(true); - return gson.fromJson(jsonReader, returnType); - } else { - return gson.fromJson(body, returnType); - } - } catch (JsonParseException e) { - // Fallback processing when failed to parse JSON form response body: - // return the response body string directly for the String return type; - // parse response body into date or datetime for the Date return type. - if (returnType.equals(String.class)) - return (T) body; - else if (returnType.equals(Date.class)) - return (T) apiClient.parseDateOrDatetime(body); - else throw(e); - } - } -} - -class DateAdapter implements JsonSerializer, JsonDeserializer { - private final ApiClient apiClient; - - /** - * Constructor for DateAdapter - * - * @param apiClient Api client - */ - public DateAdapter(ApiClient apiClient) { - super(); - this.apiClient = apiClient; - } - - /** - * Serialize - * - * @param src Date - * @param typeOfSrc Type - * @param context Json Serialization Context - * @return Json Element - */ - @Override - public JsonElement serialize(Date src, Type typeOfSrc, JsonSerializationContext context) { - if (src == null) { - return JsonNull.INSTANCE; - } else { - return new JsonPrimitive(apiClient.formatDatetime(src)); - } - } - - /** - * Deserialize - * - * @param json Json element - * @param date Type - * @param context Json Serialization Context - * @return Date - * @throws JsonParseException if fail to parse - */ - @Override - public Date deserialize(JsonElement json, Type date, JsonDeserializationContext context) throws JsonParseException { - String str = json.getAsJsonPrimitive().getAsString(); - try { - return apiClient.parseDateOrDatetime(str); - } catch (RuntimeException e) { - throw new JsonParseException(e); - } - } -} - -/** - * Gson TypeAdapter for jsr310 OffsetDateTime type - */ -class OffsetDateTimeTypeAdapter extends TypeAdapter { - - private final DateTimeFormatter formatter = DateTimeFormatter.ISO_OFFSET_DATE_TIME; - - @Override - public void write(JsonWriter out, OffsetDateTime date) throws IOException { - if (date == null) { - out.nullValue(); - } else { - out.value(formatter.format(date)); - } - } - - @Override - public OffsetDateTime read(JsonReader in) throws IOException { - switch (in.peek()) { - case NULL: - in.nextNull(); - return null; - default: - String date = in.nextString(); - if (date.endsWith("+0000")) { - date = date.substring(0, date.length()-5) + "Z"; - } - - return OffsetDateTime.parse(date, formatter); - } - } -} - -/** - * Gson TypeAdapter for jsr310 LocalDate type - */ -class LocalDateTypeAdapter extends TypeAdapter { - - private final DateTimeFormatter formatter = DateTimeFormatter.ISO_LOCAL_DATE; - - @Override - public void write(JsonWriter out, LocalDate date) throws IOException { - if (date == null) { - out.nullValue(); - } else { - out.value(formatter.format(date)); - } - } - - @Override - public LocalDate read(JsonReader in) throws IOException { - switch (in.peek()) { - case NULL: - in.nextNull(); - return null; - default: - String date = in.nextString(); - return LocalDate.parse(date, formatter); - } - } -} diff --git a/client/java/src/main/java/io/swagger/client/Pair.java b/client/java/src/main/java/io/swagger/client/Pair.java deleted file mode 100644 index 8e02cc1..0000000 --- a/client/java/src/main/java/io/swagger/client/Pair.java +++ /dev/null @@ -1,52 +0,0 @@ -/* - * Swagger Demo - * Swagger的简单示例, 包括swagger-codegen, swagger2markup 和 asciidoctor. - * - * OpenAPI spec version: v1 - * Contact: damon.q@iv66.net - * - * NOTE: This class is auto generated by the swagger code generator program. - * https://github.com/swagger-api/swagger-codegen.git - * Do not edit the class manually. - */ - - -package io.swagger.client; - -@javax.annotation.Generated(value = "io.swagger.codegen.languages.JavaClientCodegen", date = "2017-11-09T10:58:38.431+08:00") -public class Pair { - private String name = ""; - private String value = ""; - - public Pair (String name, String value) { - setName(name); - setValue(value); - } - - private void setName(String name) { - if (!isValidString(name)) return; - - this.name = name; - } - - private void setValue(String value) { - if (!isValidString(value)) return; - - this.value = value; - } - - public String getName() { - return this.name; - } - - public String getValue() { - return this.value; - } - - private boolean isValidString(String arg) { - if (arg == null) return false; - if (arg.trim().isEmpty()) return false; - - return true; - } -} diff --git a/client/java/src/main/java/io/swagger/client/ProgressRequestBody.java b/client/java/src/main/java/io/swagger/client/ProgressRequestBody.java deleted file mode 100644 index cc93a90..0000000 --- a/client/java/src/main/java/io/swagger/client/ProgressRequestBody.java +++ /dev/null @@ -1,77 +0,0 @@ -/* - * Swagger Demo - * Swagger的简单示例, 包括swagger-codegen, swagger2markup 和 asciidoctor. - * - * OpenAPI spec version: v1 - * Contact: damon.q@iv66.net - * - * NOTE: This class is auto generated by the swagger code generator program. - * https://github.com/swagger-api/swagger-codegen.git - * Do not edit the class manually. - */ - - -package io.swagger.client; - -import com.squareup.okhttp.MediaType; -import com.squareup.okhttp.RequestBody; - -import java.io.IOException; - -import okio.Buffer; -import okio.BufferedSink; -import okio.ForwardingSink; -import okio.Okio; -import okio.Sink; - -public class ProgressRequestBody extends RequestBody { - - public interface ProgressRequestListener { - void onRequestProgress(long bytesWritten, long contentLength, boolean done); - } - - private final RequestBody requestBody; - - private final ProgressRequestListener progressListener; - - public ProgressRequestBody(RequestBody requestBody, ProgressRequestListener progressListener) { - this.requestBody = requestBody; - this.progressListener = progressListener; - } - - @Override - public MediaType contentType() { - return requestBody.contentType(); - } - - @Override - public long contentLength() throws IOException { - return requestBody.contentLength(); - } - - @Override - public void writeTo(BufferedSink sink) throws IOException { - BufferedSink bufferedSink = Okio.buffer(sink(sink)); - requestBody.writeTo(bufferedSink); - bufferedSink.flush(); - } - - private Sink sink(Sink sink) { - return new ForwardingSink(sink) { - - long bytesWritten = 0L; - long contentLength = 0L; - - @Override - public void write(Buffer source, long byteCount) throws IOException { - super.write(source, byteCount); - if (contentLength == 0) { - contentLength = contentLength(); - } - - bytesWritten += byteCount; - progressListener.onRequestProgress(bytesWritten, contentLength, bytesWritten == contentLength); - } - }; - } -} diff --git a/client/java/src/main/java/io/swagger/client/ProgressResponseBody.java b/client/java/src/main/java/io/swagger/client/ProgressResponseBody.java deleted file mode 100644 index e747c31..0000000 --- a/client/java/src/main/java/io/swagger/client/ProgressResponseBody.java +++ /dev/null @@ -1,76 +0,0 @@ -/* - * Swagger Demo - * Swagger的简单示例, 包括swagger-codegen, swagger2markup 和 asciidoctor. - * - * OpenAPI spec version: v1 - * Contact: damon.q@iv66.net - * - * NOTE: This class is auto generated by the swagger code generator program. - * https://github.com/swagger-api/swagger-codegen.git - * Do not edit the class manually. - */ - - -package io.swagger.client; - -import com.squareup.okhttp.MediaType; -import com.squareup.okhttp.ResponseBody; - -import java.io.IOException; - -import okio.Buffer; -import okio.BufferedSource; -import okio.ForwardingSource; -import okio.Okio; -import okio.Source; - -public class ProgressResponseBody extends ResponseBody { - - public interface ProgressListener { - void update(long bytesRead, long contentLength, boolean done); - } - - private final ResponseBody responseBody; - private final ProgressListener progressListener; - private BufferedSource bufferedSource; - - public ProgressResponseBody(ResponseBody responseBody, ProgressListener progressListener) { - this.responseBody = responseBody; - this.progressListener = progressListener; - } - - @Override - public MediaType contentType() { - return responseBody.contentType(); - } - - @Override - public long contentLength() throws IOException { - return responseBody.contentLength(); - } - - @Override - public BufferedSource source() throws IOException { - if (bufferedSource == null) { - bufferedSource = Okio.buffer(source(responseBody.source())); - } - return bufferedSource; - } - - private Source source(Source source) { - return new ForwardingSource(source) { - long totalBytesRead = 0L; - - @Override - public long read(Buffer sink, long byteCount) throws IOException { - long bytesRead = super.read(sink, byteCount); - // read() returns the number of bytes read, or -1 if this source is exhausted. - totalBytesRead += bytesRead != -1 ? bytesRead : 0; - progressListener.update(totalBytesRead, responseBody.contentLength(), bytesRead == -1); - return bytesRead; - } - }; - } -} - - diff --git a/client/java/src/main/java/io/swagger/client/StringUtil.java b/client/java/src/main/java/io/swagger/client/StringUtil.java deleted file mode 100644 index b231e00..0000000 --- a/client/java/src/main/java/io/swagger/client/StringUtil.java +++ /dev/null @@ -1,55 +0,0 @@ -/* - * Swagger Demo - * Swagger的简单示例, 包括swagger-codegen, swagger2markup 和 asciidoctor. - * - * OpenAPI spec version: v1 - * Contact: damon.q@iv66.net - * - * NOTE: This class is auto generated by the swagger code generator program. - * https://github.com/swagger-api/swagger-codegen.git - * Do not edit the class manually. - */ - - -package io.swagger.client; - -@javax.annotation.Generated(value = "io.swagger.codegen.languages.JavaClientCodegen", date = "2017-11-09T10:58:38.431+08:00") -public class StringUtil { - /** - * Check if the given array contains the given value (with case-insensitive comparison). - * - * @param array The array - * @param value The value to search - * @return true if the array contains the value - */ - public static boolean containsIgnoreCase(String[] array, String value) { - for (String str : array) { - if (value == null && str == null) return true; - if (value != null && value.equalsIgnoreCase(str)) return true; - } - return false; - } - - /** - * Join an array of strings with the given separator. - *

- * Note: This might be replaced by utility method from commons-lang or guava someday - * if one of those libraries is added as dependency. - *

- * - * @param array The array of strings - * @param separator The separator - * @return the resulting string - */ - public static String join(String[] array, String separator) { - int len = array.length; - if (len == 0) return ""; - - StringBuilder out = new StringBuilder(); - out.append(array[0]); - for (int i = 1; i < len; i++) { - out.append(separator).append(array[i]); - } - return out.toString(); - } -} diff --git a/client/java/src/main/java/io/swagger/client/api/BookApiApi.java b/client/java/src/main/java/io/swagger/client/api/BookApiApi.java deleted file mode 100644 index 448e0fc..0000000 --- a/client/java/src/main/java/io/swagger/client/api/BookApiApi.java +++ /dev/null @@ -1,430 +0,0 @@ -/* - * Swagger Demo - * Swagger的简单示例, 包括swagger-codegen, swagger2markup 和 asciidoctor. - * - * OpenAPI spec version: v1 - * Contact: damon.q@iv66.net - * - * NOTE: This class is auto generated by the swagger code generator program. - * https://github.com/swagger-api/swagger-codegen.git - * Do not edit the class manually. - */ - - -package io.swagger.client.api; - -import io.swagger.client.ApiCallback; -import io.swagger.client.ApiClient; -import io.swagger.client.ApiException; -import io.swagger.client.ApiResponse; -import io.swagger.client.Configuration; -import io.swagger.client.Pair; -import io.swagger.client.ProgressRequestBody; -import io.swagger.client.ProgressResponseBody; - -import com.google.gson.reflect.TypeToken; - -import java.io.IOException; - - -import io.swagger.client.model.Book; - -import java.lang.reflect.Type; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -public class BookApiApi { - private ApiClient apiClient; - - public BookApiApi() { - this(Configuration.getDefaultApiClient()); - } - - public BookApiApi(ApiClient apiClient) { - this.apiClient = apiClient; - } - - public ApiClient getApiClient() { - return apiClient; - } - - public void setApiClient(ApiClient apiClient) { - this.apiClient = apiClient; - } - - /** - * Build call for getBookByIdUsingGET - * @param id id (required) - * @param progressListener Progress listener - * @param progressRequestListener Progress request listener - * @return Call to execute - * @throws ApiException If fail to serialize the request body object - */ - public com.squareup.okhttp.Call getBookByIdUsingGETCall(Integer id, final ProgressResponseBody.ProgressListener progressListener, final ProgressRequestBody.ProgressRequestListener progressRequestListener) throws ApiException { - Object localVarPostBody = null; - - // create path and map variables - String localVarPath = "/v1/book/{id}" - .replaceAll("\\{" + "id" + "\\}", apiClient.escapeString(id.toString())); - - List localVarQueryParams = new ArrayList(); - - Map localVarHeaderParams = new HashMap(); - - Map localVarFormParams = new HashMap(); - - final String[] localVarAccepts = { - "*/*" - }; - final String localVarAccept = apiClient.selectHeaderAccept(localVarAccepts); - if (localVarAccept != null) localVarHeaderParams.put("Accept", localVarAccept); - - final String[] localVarContentTypes = { - "application/json" - }; - final String localVarContentType = apiClient.selectHeaderContentType(localVarContentTypes); - localVarHeaderParams.put("Content-Type", localVarContentType); - - if(progressListener != null) { - apiClient.getHttpClient().networkInterceptors().add(new com.squareup.okhttp.Interceptor() { - @Override - public com.squareup.okhttp.Response intercept(com.squareup.okhttp.Interceptor.Chain chain) throws IOException { - com.squareup.okhttp.Response originalResponse = chain.proceed(chain.request()); - return originalResponse.newBuilder() - .body(new ProgressResponseBody(originalResponse.body(), progressListener)) - .build(); - } - }); - } - - String[] localVarAuthNames = new String[] { "api_key" }; - return apiClient.buildCall(localVarPath, "GET", localVarQueryParams, localVarPostBody, localVarHeaderParams, localVarFormParams, localVarAuthNames, progressRequestListener); - } - - @SuppressWarnings("rawtypes") - private com.squareup.okhttp.Call getBookByIdUsingGETValidateBeforeCall(Integer id, final ProgressResponseBody.ProgressListener progressListener, final ProgressRequestBody.ProgressRequestListener progressRequestListener) throws ApiException { - - // verify the required parameter 'id' is set - if (id == null) { - throw new ApiException("Missing the required parameter 'id' when calling getBookByIdUsingGET(Async)"); - } - - - com.squareup.okhttp.Call call = getBookByIdUsingGETCall(id, progressListener, progressRequestListener); - return call; - - - - - - } - - /** - * 根据ID获取书籍 - * - * @param id id (required) - * @return Book - * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body - */ - public Book getBookByIdUsingGET(Integer id) throws ApiException { - ApiResponse resp = getBookByIdUsingGETWithHttpInfo(id); - return resp.getData(); - } - - /** - * 根据ID获取书籍 - * - * @param id id (required) - * @return ApiResponse<Book> - * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body - */ - public ApiResponse getBookByIdUsingGETWithHttpInfo(Integer id) throws ApiException { - com.squareup.okhttp.Call call = getBookByIdUsingGETValidateBeforeCall(id, null, null); - Type localVarReturnType = new TypeToken(){}.getType(); - return apiClient.execute(call, localVarReturnType); - } - - /** - * 根据ID获取书籍 (asynchronously) - * - * @param id id (required) - * @param callback The callback to be executed when the API call finishes - * @return The request call - * @throws ApiException If fail to process the API call, e.g. serializing the request body object - */ - public com.squareup.okhttp.Call getBookByIdUsingGETAsync(Integer id, final ApiCallback callback) throws ApiException { - - ProgressResponseBody.ProgressListener progressListener = null; - ProgressRequestBody.ProgressRequestListener progressRequestListener = null; - - if (callback != null) { - progressListener = new ProgressResponseBody.ProgressListener() { - @Override - public void update(long bytesRead, long contentLength, boolean done) { - callback.onDownloadProgress(bytesRead, contentLength, done); - } - }; - - progressRequestListener = new ProgressRequestBody.ProgressRequestListener() { - @Override - public void onRequestProgress(long bytesWritten, long contentLength, boolean done) { - callback.onUploadProgress(bytesWritten, contentLength, done); - } - }; - } - - com.squareup.okhttp.Call call = getBookByIdUsingGETValidateBeforeCall(id, progressListener, progressRequestListener); - Type localVarReturnType = new TypeToken(){}.getType(); - apiClient.executeAsync(call, localVarReturnType, callback); - return call; - } - /** - * Build call for getBooksByCategoryUsingGET - * @param id id (required) - * @param progressListener Progress listener - * @param progressRequestListener Progress request listener - * @return Call to execute - * @throws ApiException If fail to serialize the request body object - */ - public com.squareup.okhttp.Call getBooksByCategoryUsingGETCall(Integer id, final ProgressResponseBody.ProgressListener progressListener, final ProgressRequestBody.ProgressRequestListener progressRequestListener) throws ApiException { - Object localVarPostBody = null; - - // create path and map variables - String localVarPath = "/v1/book/getByCategoryId"; - - List localVarQueryParams = new ArrayList(); - if (id != null) - localVarQueryParams.addAll(apiClient.parameterToPairs("", "id", id)); - - Map localVarHeaderParams = new HashMap(); - - Map localVarFormParams = new HashMap(); - - final String[] localVarAccepts = { - "*/*" - }; - final String localVarAccept = apiClient.selectHeaderAccept(localVarAccepts); - if (localVarAccept != null) localVarHeaderParams.put("Accept", localVarAccept); - - final String[] localVarContentTypes = { - "application/json" - }; - final String localVarContentType = apiClient.selectHeaderContentType(localVarContentTypes); - localVarHeaderParams.put("Content-Type", localVarContentType); - - if(progressListener != null) { - apiClient.getHttpClient().networkInterceptors().add(new com.squareup.okhttp.Interceptor() { - @Override - public com.squareup.okhttp.Response intercept(com.squareup.okhttp.Interceptor.Chain chain) throws IOException { - com.squareup.okhttp.Response originalResponse = chain.proceed(chain.request()); - return originalResponse.newBuilder() - .body(new ProgressResponseBody(originalResponse.body(), progressListener)) - .build(); - } - }); - } - - String[] localVarAuthNames = new String[] { "api_key" }; - return apiClient.buildCall(localVarPath, "GET", localVarQueryParams, localVarPostBody, localVarHeaderParams, localVarFormParams, localVarAuthNames, progressRequestListener); - } - - @SuppressWarnings("rawtypes") - private com.squareup.okhttp.Call getBooksByCategoryUsingGETValidateBeforeCall(Integer id, final ProgressResponseBody.ProgressListener progressListener, final ProgressRequestBody.ProgressRequestListener progressRequestListener) throws ApiException { - - // verify the required parameter 'id' is set - if (id == null) { - throw new ApiException("Missing the required parameter 'id' when calling getBooksByCategoryUsingGET(Async)"); - } - - - com.squareup.okhttp.Call call = getBooksByCategoryUsingGETCall(id, progressListener, progressRequestListener); - return call; - - - - - - } - - /** - * 根据分类获取书籍 - * - * @param id id (required) - * @return List<Book> - * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body - */ - public List getBooksByCategoryUsingGET(Integer id) throws ApiException { - ApiResponse> resp = getBooksByCategoryUsingGETWithHttpInfo(id); - return resp.getData(); - } - - /** - * 根据分类获取书籍 - * - * @param id id (required) - * @return ApiResponse<List<Book>> - * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body - */ - public ApiResponse> getBooksByCategoryUsingGETWithHttpInfo(Integer id) throws ApiException { - com.squareup.okhttp.Call call = getBooksByCategoryUsingGETValidateBeforeCall(id, null, null); - Type localVarReturnType = new TypeToken>(){}.getType(); - return apiClient.execute(call, localVarReturnType); - } - - /** - * 根据分类获取书籍 (asynchronously) - * - * @param id id (required) - * @param callback The callback to be executed when the API call finishes - * @return The request call - * @throws ApiException If fail to process the API call, e.g. serializing the request body object - */ - public com.squareup.okhttp.Call getBooksByCategoryUsingGETAsync(Integer id, final ApiCallback> callback) throws ApiException { - - ProgressResponseBody.ProgressListener progressListener = null; - ProgressRequestBody.ProgressRequestListener progressRequestListener = null; - - if (callback != null) { - progressListener = new ProgressResponseBody.ProgressListener() { - @Override - public void update(long bytesRead, long contentLength, boolean done) { - callback.onDownloadProgress(bytesRead, contentLength, done); - } - }; - - progressRequestListener = new ProgressRequestBody.ProgressRequestListener() { - @Override - public void onRequestProgress(long bytesWritten, long contentLength, boolean done) { - callback.onUploadProgress(bytesWritten, contentLength, done); - } - }; - } - - com.squareup.okhttp.Call call = getBooksByCategoryUsingGETValidateBeforeCall(id, progressListener, progressRequestListener); - Type localVarReturnType = new TypeToken>(){}.getType(); - apiClient.executeAsync(call, localVarReturnType, callback); - return call; - } - /** - * Build call for updateUsingPOST - * @param id id (optional) - * @param progressListener Progress listener - * @param progressRequestListener Progress request listener - * @return Call to execute - * @throws ApiException If fail to serialize the request body object - */ - public com.squareup.okhttp.Call updateUsingPOSTCall(Integer id, final ProgressResponseBody.ProgressListener progressListener, final ProgressRequestBody.ProgressRequestListener progressRequestListener) throws ApiException { - Object localVarPostBody = id; - - // create path and map variables - String localVarPath = "/v1/book/update"; - - List localVarQueryParams = new ArrayList(); - - Map localVarHeaderParams = new HashMap(); - - Map localVarFormParams = new HashMap(); - - final String[] localVarAccepts = { - "*/*" - }; - final String localVarAccept = apiClient.selectHeaderAccept(localVarAccepts); - if (localVarAccept != null) localVarHeaderParams.put("Accept", localVarAccept); - - final String[] localVarContentTypes = { - "application/json" - }; - final String localVarContentType = apiClient.selectHeaderContentType(localVarContentTypes); - localVarHeaderParams.put("Content-Type", localVarContentType); - - if(progressListener != null) { - apiClient.getHttpClient().networkInterceptors().add(new com.squareup.okhttp.Interceptor() { - @Override - public com.squareup.okhttp.Response intercept(com.squareup.okhttp.Interceptor.Chain chain) throws IOException { - com.squareup.okhttp.Response originalResponse = chain.proceed(chain.request()); - return originalResponse.newBuilder() - .body(new ProgressResponseBody(originalResponse.body(), progressListener)) - .build(); - } - }); - } - - String[] localVarAuthNames = new String[] { "api_key" }; - return apiClient.buildCall(localVarPath, "POST", localVarQueryParams, localVarPostBody, localVarHeaderParams, localVarFormParams, localVarAuthNames, progressRequestListener); - } - - @SuppressWarnings("rawtypes") - private com.squareup.okhttp.Call updateUsingPOSTValidateBeforeCall(Integer id, final ProgressResponseBody.ProgressListener progressListener, final ProgressRequestBody.ProgressRequestListener progressRequestListener) throws ApiException { - - - com.squareup.okhttp.Call call = updateUsingPOSTCall(id, progressListener, progressRequestListener); - return call; - - - - - - } - - /** - * 更新书籍 - * - * @param id id (optional) - * @return Boolean - * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body - */ - public Boolean updateUsingPOST(Integer id) throws ApiException { - ApiResponse resp = updateUsingPOSTWithHttpInfo(id); - return resp.getData(); - } - - /** - * 更新书籍 - * - * @param id id (optional) - * @return ApiResponse<Boolean> - * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body - */ - public ApiResponse updateUsingPOSTWithHttpInfo(Integer id) throws ApiException { - com.squareup.okhttp.Call call = updateUsingPOSTValidateBeforeCall(id, null, null); - Type localVarReturnType = new TypeToken(){}.getType(); - return apiClient.execute(call, localVarReturnType); - } - - /** - * 更新书籍 (asynchronously) - * - * @param id id (optional) - * @param callback The callback to be executed when the API call finishes - * @return The request call - * @throws ApiException If fail to process the API call, e.g. serializing the request body object - */ - public com.squareup.okhttp.Call updateUsingPOSTAsync(Integer id, final ApiCallback callback) throws ApiException { - - ProgressResponseBody.ProgressListener progressListener = null; - ProgressRequestBody.ProgressRequestListener progressRequestListener = null; - - if (callback != null) { - progressListener = new ProgressResponseBody.ProgressListener() { - @Override - public void update(long bytesRead, long contentLength, boolean done) { - callback.onDownloadProgress(bytesRead, contentLength, done); - } - }; - - progressRequestListener = new ProgressRequestBody.ProgressRequestListener() { - @Override - public void onRequestProgress(long bytesWritten, long contentLength, boolean done) { - callback.onUploadProgress(bytesWritten, contentLength, done); - } - }; - } - - com.squareup.okhttp.Call call = updateUsingPOSTValidateBeforeCall(id, progressListener, progressRequestListener); - Type localVarReturnType = new TypeToken(){}.getType(); - apiClient.executeAsync(call, localVarReturnType, callback); - return call; - } -} diff --git a/client/java/src/main/java/io/swagger/client/api/CategoryApiApi.java b/client/java/src/main/java/io/swagger/client/api/CategoryApiApi.java deleted file mode 100644 index 61ca50b..0000000 --- a/client/java/src/main/java/io/swagger/client/api/CategoryApiApi.java +++ /dev/null @@ -1,299 +0,0 @@ -/* - * Swagger Demo - * Swagger的简单示例, 包括swagger-codegen, swagger2markup 和 asciidoctor. - * - * OpenAPI spec version: v1 - * Contact: damon.q@iv66.net - * - * NOTE: This class is auto generated by the swagger code generator program. - * https://github.com/swagger-api/swagger-codegen.git - * Do not edit the class manually. - */ - - -package io.swagger.client.api; - -import io.swagger.client.ApiCallback; -import io.swagger.client.ApiClient; -import io.swagger.client.ApiException; -import io.swagger.client.ApiResponse; -import io.swagger.client.Configuration; -import io.swagger.client.Pair; -import io.swagger.client.ProgressRequestBody; -import io.swagger.client.ProgressResponseBody; - -import com.google.gson.reflect.TypeToken; - -import java.io.IOException; - - -import io.swagger.client.model.Category; - -import java.lang.reflect.Type; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -public class CategoryApiApi { - private ApiClient apiClient; - - public CategoryApiApi() { - this(Configuration.getDefaultApiClient()); - } - - public CategoryApiApi(ApiClient apiClient) { - this.apiClient = apiClient; - } - - public ApiClient getApiClient() { - return apiClient; - } - - public void setApiClient(ApiClient apiClient) { - this.apiClient = apiClient; - } - - /** - * Build call for getAllUsingGET - * @param progressListener Progress listener - * @param progressRequestListener Progress request listener - * @return Call to execute - * @throws ApiException If fail to serialize the request body object - */ - public com.squareup.okhttp.Call getAllUsingGETCall(final ProgressResponseBody.ProgressListener progressListener, final ProgressRequestBody.ProgressRequestListener progressRequestListener) throws ApiException { - Object localVarPostBody = null; - - // create path and map variables - String localVarPath = "/v1/category/"; - - List localVarQueryParams = new ArrayList(); - - Map localVarHeaderParams = new HashMap(); - - Map localVarFormParams = new HashMap(); - - final String[] localVarAccepts = { - "*/*" - }; - final String localVarAccept = apiClient.selectHeaderAccept(localVarAccepts); - if (localVarAccept != null) localVarHeaderParams.put("Accept", localVarAccept); - - final String[] localVarContentTypes = { - "application/json" - }; - final String localVarContentType = apiClient.selectHeaderContentType(localVarContentTypes); - localVarHeaderParams.put("Content-Type", localVarContentType); - - if(progressListener != null) { - apiClient.getHttpClient().networkInterceptors().add(new com.squareup.okhttp.Interceptor() { - @Override - public com.squareup.okhttp.Response intercept(com.squareup.okhttp.Interceptor.Chain chain) throws IOException { - com.squareup.okhttp.Response originalResponse = chain.proceed(chain.request()); - return originalResponse.newBuilder() - .body(new ProgressResponseBody(originalResponse.body(), progressListener)) - .build(); - } - }); - } - - String[] localVarAuthNames = new String[] { }; - return apiClient.buildCall(localVarPath, "GET", localVarQueryParams, localVarPostBody, localVarHeaderParams, localVarFormParams, localVarAuthNames, progressRequestListener); - } - - @SuppressWarnings("rawtypes") - private com.squareup.okhttp.Call getAllUsingGETValidateBeforeCall(final ProgressResponseBody.ProgressListener progressListener, final ProgressRequestBody.ProgressRequestListener progressRequestListener) throws ApiException { - - - com.squareup.okhttp.Call call = getAllUsingGETCall(progressListener, progressRequestListener); - return call; - - - - - - } - - /** - * 获取全部分类 - * - * @return List<Category> - * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body - */ - public List getAllUsingGET() throws ApiException { - ApiResponse> resp = getAllUsingGETWithHttpInfo(); - return resp.getData(); - } - - /** - * 获取全部分类 - * - * @return ApiResponse<List<Category>> - * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body - */ - public ApiResponse> getAllUsingGETWithHttpInfo() throws ApiException { - com.squareup.okhttp.Call call = getAllUsingGETValidateBeforeCall(null, null); - Type localVarReturnType = new TypeToken>(){}.getType(); - return apiClient.execute(call, localVarReturnType); - } - - /** - * 获取全部分类 (asynchronously) - * - * @param callback The callback to be executed when the API call finishes - * @return The request call - * @throws ApiException If fail to process the API call, e.g. serializing the request body object - */ - public com.squareup.okhttp.Call getAllUsingGETAsync(final ApiCallback> callback) throws ApiException { - - ProgressResponseBody.ProgressListener progressListener = null; - ProgressRequestBody.ProgressRequestListener progressRequestListener = null; - - if (callback != null) { - progressListener = new ProgressResponseBody.ProgressListener() { - @Override - public void update(long bytesRead, long contentLength, boolean done) { - callback.onDownloadProgress(bytesRead, contentLength, done); - } - }; - - progressRequestListener = new ProgressRequestBody.ProgressRequestListener() { - @Override - public void onRequestProgress(long bytesWritten, long contentLength, boolean done) { - callback.onUploadProgress(bytesWritten, contentLength, done); - } - }; - } - - com.squareup.okhttp.Call call = getAllUsingGETValidateBeforeCall(progressListener, progressRequestListener); - Type localVarReturnType = new TypeToken>(){}.getType(); - apiClient.executeAsync(call, localVarReturnType, callback); - return call; - } - /** - * Build call for getUsingGET - * @param id id (required) - * @param progressListener Progress listener - * @param progressRequestListener Progress request listener - * @return Call to execute - * @throws ApiException If fail to serialize the request body object - */ - public com.squareup.okhttp.Call getUsingGETCall(Integer id, final ProgressResponseBody.ProgressListener progressListener, final ProgressRequestBody.ProgressRequestListener progressRequestListener) throws ApiException { - Object localVarPostBody = null; - - // create path and map variables - String localVarPath = "/v1/category/{id}" - .replaceAll("\\{" + "id" + "\\}", apiClient.escapeString(id.toString())); - - List localVarQueryParams = new ArrayList(); - - Map localVarHeaderParams = new HashMap(); - - Map localVarFormParams = new HashMap(); - - final String[] localVarAccepts = { - "*/*" - }; - final String localVarAccept = apiClient.selectHeaderAccept(localVarAccepts); - if (localVarAccept != null) localVarHeaderParams.put("Accept", localVarAccept); - - final String[] localVarContentTypes = { - "application/json" - }; - final String localVarContentType = apiClient.selectHeaderContentType(localVarContentTypes); - localVarHeaderParams.put("Content-Type", localVarContentType); - - if(progressListener != null) { - apiClient.getHttpClient().networkInterceptors().add(new com.squareup.okhttp.Interceptor() { - @Override - public com.squareup.okhttp.Response intercept(com.squareup.okhttp.Interceptor.Chain chain) throws IOException { - com.squareup.okhttp.Response originalResponse = chain.proceed(chain.request()); - return originalResponse.newBuilder() - .body(new ProgressResponseBody(originalResponse.body(), progressListener)) - .build(); - } - }); - } - - String[] localVarAuthNames = new String[] { }; - return apiClient.buildCall(localVarPath, "GET", localVarQueryParams, localVarPostBody, localVarHeaderParams, localVarFormParams, localVarAuthNames, progressRequestListener); - } - - @SuppressWarnings("rawtypes") - private com.squareup.okhttp.Call getUsingGETValidateBeforeCall(Integer id, final ProgressResponseBody.ProgressListener progressListener, final ProgressRequestBody.ProgressRequestListener progressRequestListener) throws ApiException { - - // verify the required parameter 'id' is set - if (id == null) { - throw new ApiException("Missing the required parameter 'id' when calling getUsingGET(Async)"); - } - - - com.squareup.okhttp.Call call = getUsingGETCall(id, progressListener, progressRequestListener); - return call; - - - - - - } - - /** - * 根据ID获取分类 - * - * @param id id (required) - * @return Category - * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body - */ - public Category getUsingGET(Integer id) throws ApiException { - ApiResponse resp = getUsingGETWithHttpInfo(id); - return resp.getData(); - } - - /** - * 根据ID获取分类 - * - * @param id id (required) - * @return ApiResponse<Category> - * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body - */ - public ApiResponse getUsingGETWithHttpInfo(Integer id) throws ApiException { - com.squareup.okhttp.Call call = getUsingGETValidateBeforeCall(id, null, null); - Type localVarReturnType = new TypeToken(){}.getType(); - return apiClient.execute(call, localVarReturnType); - } - - /** - * 根据ID获取分类 (asynchronously) - * - * @param id id (required) - * @param callback The callback to be executed when the API call finishes - * @return The request call - * @throws ApiException If fail to process the API call, e.g. serializing the request body object - */ - public com.squareup.okhttp.Call getUsingGETAsync(Integer id, final ApiCallback callback) throws ApiException { - - ProgressResponseBody.ProgressListener progressListener = null; - ProgressRequestBody.ProgressRequestListener progressRequestListener = null; - - if (callback != null) { - progressListener = new ProgressResponseBody.ProgressListener() { - @Override - public void update(long bytesRead, long contentLength, boolean done) { - callback.onDownloadProgress(bytesRead, contentLength, done); - } - }; - - progressRequestListener = new ProgressRequestBody.ProgressRequestListener() { - @Override - public void onRequestProgress(long bytesWritten, long contentLength, boolean done) { - callback.onUploadProgress(bytesWritten, contentLength, done); - } - }; - } - - com.squareup.okhttp.Call call = getUsingGETValidateBeforeCall(id, progressListener, progressRequestListener); - Type localVarReturnType = new TypeToken(){}.getType(); - apiClient.executeAsync(call, localVarReturnType, callback); - return call; - } -} diff --git a/client/java/src/main/java/io/swagger/client/auth/ApiKeyAuth.java b/client/java/src/main/java/io/swagger/client/auth/ApiKeyAuth.java deleted file mode 100644 index 6b098e7..0000000 --- a/client/java/src/main/java/io/swagger/client/auth/ApiKeyAuth.java +++ /dev/null @@ -1,75 +0,0 @@ -/* - * Swagger Demo - * Swagger的简单示例, 包括swagger-codegen, swagger2markup 和 asciidoctor. - * - * OpenAPI spec version: v1 - * Contact: damon.q@iv66.net - * - * NOTE: This class is auto generated by the swagger code generator program. - * https://github.com/swagger-api/swagger-codegen.git - * Do not edit the class manually. - */ - - -package io.swagger.client.auth; - -import io.swagger.client.Pair; - -import java.util.Map; -import java.util.List; - -@javax.annotation.Generated(value = "io.swagger.codegen.languages.JavaClientCodegen", date = "2017-11-09T10:58:38.431+08:00") -public class ApiKeyAuth implements Authentication { - private final String location; - private final String paramName; - - private String apiKey; - private String apiKeyPrefix; - - public ApiKeyAuth(String location, String paramName) { - this.location = location; - this.paramName = paramName; - } - - public String getLocation() { - return location; - } - - public String getParamName() { - return paramName; - } - - public String getApiKey() { - return apiKey; - } - - public void setApiKey(String apiKey) { - this.apiKey = apiKey; - } - - public String getApiKeyPrefix() { - return apiKeyPrefix; - } - - public void setApiKeyPrefix(String apiKeyPrefix) { - this.apiKeyPrefix = apiKeyPrefix; - } - - @Override - public void applyToParams(List queryParams, Map headerParams) { - if (apiKey == null) { - return; - } - String value; - if (apiKeyPrefix != null) { - value = apiKeyPrefix + " " + apiKey; - } else { - value = apiKey; - } - if ("query".equals(location)) { - queryParams.add(new Pair(paramName, value)); - } else if ("header".equals(location)) { - headerParams.put(paramName, value); - } - } -} diff --git a/client/java/src/main/java/io/swagger/client/auth/Authentication.java b/client/java/src/main/java/io/swagger/client/auth/Authentication.java deleted file mode 100644 index bc92073..0000000 --- a/client/java/src/main/java/io/swagger/client/auth/Authentication.java +++ /dev/null @@ -1,29 +0,0 @@ -/* - * Swagger Demo - * Swagger的简单示例, 包括swagger-codegen, swagger2markup 和 asciidoctor. - * - * OpenAPI spec version: v1 - * Contact: damon.q@iv66.net - * - * NOTE: This class is auto generated by the swagger code generator program. - * https://github.com/swagger-api/swagger-codegen.git - * Do not edit the class manually. - */ - - -package io.swagger.client.auth; - -import io.swagger.client.Pair; - -import java.util.Map; -import java.util.List; - -public interface Authentication { - /** - * Apply authentication settings to header and query params. - * - * @param queryParams List of query parameters - * @param headerParams Map of header parameters - */ - void applyToParams(List queryParams, Map headerParams); -} diff --git a/client/java/src/main/java/io/swagger/client/auth/HttpBasicAuth.java b/client/java/src/main/java/io/swagger/client/auth/HttpBasicAuth.java deleted file mode 100644 index 06b9de2..0000000 --- a/client/java/src/main/java/io/swagger/client/auth/HttpBasicAuth.java +++ /dev/null @@ -1,54 +0,0 @@ -/* - * Swagger Demo - * Swagger的简单示例, 包括swagger-codegen, swagger2markup 和 asciidoctor. - * - * OpenAPI spec version: v1 - * Contact: damon.q@iv66.net - * - * NOTE: This class is auto generated by the swagger code generator program. - * https://github.com/swagger-api/swagger-codegen.git - * Do not edit the class manually. - */ - - -package io.swagger.client.auth; - -import io.swagger.client.Pair; - -import com.squareup.okhttp.Credentials; - -import java.util.Map; -import java.util.List; - -import java.io.UnsupportedEncodingException; - -public class HttpBasicAuth implements Authentication { - private String username; - private String password; - - public String getUsername() { - return username; - } - - public void setUsername(String username) { - this.username = username; - } - - public String getPassword() { - return password; - } - - public void setPassword(String password) { - this.password = password; - } - - @Override - public void applyToParams(List queryParams, Map headerParams) { - if (username == null && password == null) { - return; - } - headerParams.put("Authorization", Credentials.basic( - username == null ? "" : username, - password == null ? "" : password)); - } -} diff --git a/client/java/src/main/java/io/swagger/client/auth/OAuth.java b/client/java/src/main/java/io/swagger/client/auth/OAuth.java deleted file mode 100644 index 76a61c4..0000000 --- a/client/java/src/main/java/io/swagger/client/auth/OAuth.java +++ /dev/null @@ -1,39 +0,0 @@ -/* - * Swagger Demo - * Swagger的简单示例, 包括swagger-codegen, swagger2markup 和 asciidoctor. - * - * OpenAPI spec version: v1 - * Contact: damon.q@iv66.net - * - * NOTE: This class is auto generated by the swagger code generator program. - * https://github.com/swagger-api/swagger-codegen.git - * Do not edit the class manually. - */ - - -package io.swagger.client.auth; - -import io.swagger.client.Pair; - -import java.util.Map; -import java.util.List; - -@javax.annotation.Generated(value = "io.swagger.codegen.languages.JavaClientCodegen", date = "2017-11-09T10:58:38.431+08:00") -public class OAuth implements Authentication { - private String accessToken; - - public String getAccessToken() { - return accessToken; - } - - public void setAccessToken(String accessToken) { - this.accessToken = accessToken; - } - - @Override - public void applyToParams(List queryParams, Map headerParams) { - if (accessToken != null) { - headerParams.put("Authorization", "Bearer " + accessToken); - } - } -} diff --git a/client/java/src/main/java/io/swagger/client/auth/OAuthFlow.java b/client/java/src/main/java/io/swagger/client/auth/OAuthFlow.java deleted file mode 100644 index a939aaa..0000000 --- a/client/java/src/main/java/io/swagger/client/auth/OAuthFlow.java +++ /dev/null @@ -1,18 +0,0 @@ -/* - * Swagger Demo - * Swagger的简单示例, 包括swagger-codegen, swagger2markup 和 asciidoctor. - * - * OpenAPI spec version: v1 - * Contact: damon.q@iv66.net - * - * NOTE: This class is auto generated by the swagger code generator program. - * https://github.com/swagger-api/swagger-codegen.git - * Do not edit the class manually. - */ - - -package io.swagger.client.auth; - -public enum OAuthFlow { - accessCode, implicit, password, application -} diff --git a/client/java/src/main/java/io/swagger/client/model/Book.java b/client/java/src/main/java/io/swagger/client/model/Book.java deleted file mode 100644 index b33325e..0000000 --- a/client/java/src/main/java/io/swagger/client/model/Book.java +++ /dev/null @@ -1,162 +0,0 @@ -/* - * Swagger Demo - * Swagger的简单示例, 包括swagger-codegen, swagger2markup 和 asciidoctor. - * - * OpenAPI spec version: v1 - * Contact: damon.q@iv66.net - * - * NOTE: This class is auto generated by the swagger code generator program. - * https://github.com/swagger-api/swagger-codegen.git - * Do not edit the class manually. - */ - - -package io.swagger.client.model; - -import java.util.Objects; -import com.google.gson.TypeAdapter; -import com.google.gson.annotations.JsonAdapter; -import com.google.gson.annotations.SerializedName; -import com.google.gson.stream.JsonReader; -import com.google.gson.stream.JsonWriter; -import io.swagger.annotations.ApiModel; -import io.swagger.annotations.ApiModelProperty; -import java.io.IOException; - -/** - * Book - */ -@javax.annotation.Generated(value = "io.swagger.codegen.languages.JavaClientCodegen", date = "2017-11-09T10:58:38.431+08:00") -public class Book { - @SerializedName("author") - private String author = null; - - @SerializedName("categoryId") - private Integer categoryId = null; - - @SerializedName("id") - private Integer id = null; - - @SerializedName("name") - private String name = null; - - public Book author(String author) { - this.author = author; - return this; - } - - /** - * 作者 - * @return author - **/ - @ApiModelProperty(value = "作者") - public String getAuthor() { - return author; - } - - public void setAuthor(String author) { - this.author = author; - } - - public Book categoryId(Integer categoryId) { - this.categoryId = categoryId; - return this; - } - - /** - * Get categoryId - * @return categoryId - **/ - @ApiModelProperty(value = "") - public Integer getCategoryId() { - return categoryId; - } - - public void setCategoryId(Integer categoryId) { - this.categoryId = categoryId; - } - - public Book id(Integer id) { - this.id = id; - return this; - } - - /** - * Get id - * @return id - **/ - @ApiModelProperty(value = "") - public Integer getId() { - return id; - } - - public void setId(Integer id) { - this.id = id; - } - - public Book name(String name) { - this.name = name; - return this; - } - - /** - * 书名 - * @return name - **/ - @ApiModelProperty(value = "书名") - public String getName() { - return name; - } - - public void setName(String name) { - this.name = name; - } - - - @Override - public boolean equals(java.lang.Object o) { - if (this == o) { - return true; - } - if (o == null || getClass() != o.getClass()) { - return false; - } - Book book = (Book) o; - return Objects.equals(this.author, book.author) && - Objects.equals(this.categoryId, book.categoryId) && - Objects.equals(this.id, book.id) && - Objects.equals(this.name, book.name); - } - - @Override - public int hashCode() { - return Objects.hash(author, categoryId, id, name); - } - - - @Override - public String toString() { - StringBuilder sb = new StringBuilder(); - sb.append("class Book {\n"); - - sb.append(" author: ").append(toIndentedString(author)).append("\n"); - sb.append(" categoryId: ").append(toIndentedString(categoryId)).append("\n"); - sb.append(" id: ").append(toIndentedString(id)).append("\n"); - sb.append(" name: ").append(toIndentedString(name)).append("\n"); - sb.append("}"); - return sb.toString(); - } - - /** - * Convert the given object to string with each line indented by 4 spaces - * (except the first line). - */ - private String toIndentedString(java.lang.Object o) { - if (o == null) { - return "null"; - } - return o.toString().replace("\n", "\n "); - } - -} - diff --git a/client/java/src/main/java/io/swagger/client/model/Category.java b/client/java/src/main/java/io/swagger/client/model/Category.java deleted file mode 100644 index 14e352f..0000000 --- a/client/java/src/main/java/io/swagger/client/model/Category.java +++ /dev/null @@ -1,116 +0,0 @@ -/* - * Swagger Demo - * Swagger的简单示例, 包括swagger-codegen, swagger2markup 和 asciidoctor. - * - * OpenAPI spec version: v1 - * Contact: damon.q@iv66.net - * - * NOTE: This class is auto generated by the swagger code generator program. - * https://github.com/swagger-api/swagger-codegen.git - * Do not edit the class manually. - */ - - -package io.swagger.client.model; - -import java.util.Objects; -import com.google.gson.TypeAdapter; -import com.google.gson.annotations.JsonAdapter; -import com.google.gson.annotations.SerializedName; -import com.google.gson.stream.JsonReader; -import com.google.gson.stream.JsonWriter; -import io.swagger.annotations.ApiModel; -import io.swagger.annotations.ApiModelProperty; -import java.io.IOException; - -/** - * Category - */ -@javax.annotation.Generated(value = "io.swagger.codegen.languages.JavaClientCodegen", date = "2017-11-09T10:58:38.431+08:00") -public class Category { - @SerializedName("id") - private Integer id = null; - - @SerializedName("name") - private String name = null; - - public Category id(Integer id) { - this.id = id; - return this; - } - - /** - * Get id - * @return id - **/ - @ApiModelProperty(value = "") - public Integer getId() { - return id; - } - - public void setId(Integer id) { - this.id = id; - } - - public Category name(String name) { - this.name = name; - return this; - } - - /** - * Get name - * @return name - **/ - @ApiModelProperty(value = "") - public String getName() { - return name; - } - - public void setName(String name) { - this.name = name; - } - - - @Override - public boolean equals(java.lang.Object o) { - if (this == o) { - return true; - } - if (o == null || getClass() != o.getClass()) { - return false; - } - Category category = (Category) o; - return Objects.equals(this.id, category.id) && - Objects.equals(this.name, category.name); - } - - @Override - public int hashCode() { - return Objects.hash(id, name); - } - - - @Override - public String toString() { - StringBuilder sb = new StringBuilder(); - sb.append("class Category {\n"); - - sb.append(" id: ").append(toIndentedString(id)).append("\n"); - sb.append(" name: ").append(toIndentedString(name)).append("\n"); - sb.append("}"); - return sb.toString(); - } - - /** - * Convert the given object to string with each line indented by 4 spaces - * (except the first line). - */ - private String toIndentedString(java.lang.Object o) { - if (o == null) { - return "null"; - } - return o.toString().replace("\n", "\n "); - } - -} - diff --git a/client/java/src/test/java/io/swagger/client/api/BookApiApiTest.java b/client/java/src/test/java/io/swagger/client/api/BookApiApiTest.java deleted file mode 100644 index d044c90..0000000 --- a/client/java/src/test/java/io/swagger/client/api/BookApiApiTest.java +++ /dev/null @@ -1,83 +0,0 @@ -/* - * Swagger Demo - * Swagger的简单示例, 包括swagger-codegen, swagger2markup 和 asciidoctor. - * - * OpenAPI spec version: v1 - * Contact: damon.q@iv66.net - * - * NOTE: This class is auto generated by the swagger code generator program. - * https://github.com/swagger-api/swagger-codegen.git - * Do not edit the class manually. - */ - - -package io.swagger.client.api; - -import io.swagger.client.ApiException; -import io.swagger.client.model.Book; -import org.junit.Test; -import org.junit.Ignore; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -/** - * API tests for BookApiApi - */ -@Ignore -public class BookApiApiTest { - - private final BookApiApi api = new BookApiApi(); - - - /** - * 根据ID获取书籍 - * - * - * - * @throws ApiException - * if the Api call fails - */ - @Test - public void getBookByIdUsingGETTest() throws ApiException { - Integer id = null; - Book response = api.getBookByIdUsingGET(id); - - // TODO: test validations - } - - /** - * 根据分类获取书籍 - * - * - * - * @throws ApiException - * if the Api call fails - */ - @Test - public void getBooksByCategoryUsingGETTest() throws ApiException { - Integer id = null; - List response = api.getBooksByCategoryUsingGET(id); - - // TODO: test validations - } - - /** - * 更新书籍 - * - * - * - * @throws ApiException - * if the Api call fails - */ - @Test - public void updateUsingPOSTTest() throws ApiException { - Integer id = null; - Boolean response = api.updateUsingPOST(id); - - // TODO: test validations - } - -} diff --git a/client/java/src/test/java/io/swagger/client/api/CategoryApiApiTest.java b/client/java/src/test/java/io/swagger/client/api/CategoryApiApiTest.java deleted file mode 100644 index 816618e..0000000 --- a/client/java/src/test/java/io/swagger/client/api/CategoryApiApiTest.java +++ /dev/null @@ -1,66 +0,0 @@ -/* - * Swagger Demo - * Swagger的简单示例, 包括swagger-codegen, swagger2markup 和 asciidoctor. - * - * OpenAPI spec version: v1 - * Contact: damon.q@iv66.net - * - * NOTE: This class is auto generated by the swagger code generator program. - * https://github.com/swagger-api/swagger-codegen.git - * Do not edit the class manually. - */ - - -package io.swagger.client.api; - -import io.swagger.client.ApiException; -import io.swagger.client.model.Category; -import org.junit.Test; -import org.junit.Ignore; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -/** - * API tests for CategoryApiApi - */ -@Ignore -public class CategoryApiApiTest { - - private final CategoryApiApi api = new CategoryApiApi(); - - - /** - * 获取全部分类 - * - * - * - * @throws ApiException - * if the Api call fails - */ - @Test - public void getAllUsingGETTest() throws ApiException { - List response = api.getAllUsingGET(); - - // TODO: test validations - } - - /** - * 根据ID获取分类 - * - * - * - * @throws ApiException - * if the Api call fails - */ - @Test - public void getUsingGETTest() throws ApiException { - Integer id = null; - Category response = api.getUsingGET(id); - - // TODO: test validations - } - -} diff --git a/docs/swagger-example.html b/docs/swagger-example.html deleted file mode 100644 index bab6f76..0000000 --- a/docs/swagger-example.html +++ /dev/null @@ -1,1321 +0,0 @@ - - - - - - - -Swagger Demo - - - - - - - -
-
-

1. Overview

-
-
-

Swagger的简单示例, 包括swagger-codegen, swagger2markup 和 asciidoctor.

-
-
-

1.1. Version information

-
-

Version : v1

-
-
-
-

1.2. Contact information

-
-

Contact : Damon
-Contact Email : damon.q@iv66.net

-
-
-
-

1.3. License information

-
-

License : Apache License
-License URL : http://www.apache.org/licenses/LICENSE-2.0.html
-Terms of service : http://www.apache.org/licenses/LICENSE-2.0.html

-
-
-
-

1.4. URI scheme

-
-

Host : localhost:8080
-BasePath : /
-Schemes : HTTP, HTTPS

-
-
-
-

1.5. Tags

-
-
    -
  • -

    book-api : Book Api

    -
  • -
  • -

    category-api : Category Api

    -
  • -
-
-
-
-
-
-

2. Paths

-
-
-

2.1. 根据分类获取书籍

-
-
-
GET /v1/book/getByCategoryId
-
-
-
-

2.1.1. Parameters

- ------ - - - - - - - - - - - - - - - - -
TypeNameDescriptionSchema

Query

id
-required

id

integer (int32)

-
-
-

2.1.2. Responses

- ----- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
HTTP CodeDescriptionSchema

200

OK

< Book > array

401

Unauthorized

No Content

403

Forbidden

No Content

404

Not Found

No Content

-
-
-

2.1.3. Consumes

-
-
    -
  • -

    application/json

    -
  • -
-
-
-
-

2.1.4. Produces

-
-
    -
  • -

    /

    -
  • -
-
-
-
-

2.1.5. Tags

-
-
    -
  • -

    book-api

    -
  • -
-
-
-
-

2.1.6. Security

- ---- - - - - - - - - - - - - -
TypeName

apiKey

api_key

-
-
-
-

2.2. 更新书籍

-
-
-
POST /v1/book/update
-
-
-
-

2.2.1. Parameters

- ------ - - - - - - - - - - - - - - - - -
TypeNameDescriptionSchema

Body

id
-optional

id

integer (int32)

-
-
-

2.2.2. Responses

- ----- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
HTTP CodeDescriptionSchema

200

OK

boolean

201

Created

No Content

401

Unauthorized

No Content

403

Forbidden

No Content

404

Not Found

No Content

-
-
-

2.2.3. Consumes

-
-
    -
  • -

    application/json

    -
  • -
-
-
-
-

2.2.4. Produces

-
-
    -
  • -

    /

    -
  • -
-
-
-
-

2.2.5. Tags

-
-
    -
  • -

    book-api

    -
  • -
-
-
-
-

2.2.6. Security

- ---- - - - - - - - - - - - - -
TypeName

apiKey

api_key

-
-
-
-

2.3. 根据ID获取书籍

-
-
-
GET /v1/book/{id}
-
-
-
-

2.3.1. Parameters

- ------ - - - - - - - - - - - - - - - - -
TypeNameDescriptionSchema

Path

id
-required

id

integer (int32)

-
-
-

2.3.2. Responses

- ----- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
HTTP CodeDescriptionSchema

200

OK

Book

401

Unauthorized

No Content

403

Forbidden

No Content

404

Not Found

No Content

-
-
-

2.3.3. Consumes

-
-
    -
  • -

    application/json

    -
  • -
-
-
-
-

2.3.4. Produces

-
-
    -
  • -

    /

    -
  • -
-
-
-
-

2.3.5. Tags

-
-
    -
  • -

    book-api

    -
  • -
-
-
-
-

2.3.6. Security

- ---- - - - - - - - - - - - - -
TypeName

apiKey

api_key

-
-
-
-

2.4. 获取全部分类

-
-
-
GET /v1/category/
-
-
-
-

2.4.1. Responses

- ----- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
HTTP CodeDescriptionSchema

200

OK

< Category > array

401

Unauthorized

No Content

403

Forbidden

No Content

404

Not Found

No Content

-
-
-

2.4.2. Consumes

-
-
    -
  • -

    application/json

    -
  • -
-
-
-
-

2.4.3. Produces

-
-
    -
  • -

    /

    -
  • -
-
-
-
-

2.4.4. Tags

-
-
    -
  • -

    category-api

    -
  • -
-
-
-
-
-

2.5. 根据ID获取分类

-
-
-
GET /v1/category/{id}
-
-
-
-

2.5.1. Parameters

- ------ - - - - - - - - - - - - - - - - -
TypeNameDescriptionSchema

Path

id
-required

id

integer (int32)

-
-
-

2.5.2. Responses

- ----- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
HTTP CodeDescriptionSchema

200

OK

Category

401

Unauthorized

No Content

403

Forbidden

No Content

404

Not Found

No Content

-
-
-

2.5.3. Consumes

-
-
    -
  • -

    application/json

    -
  • -
-
-
-
-

2.5.4. Produces

-
-
    -
  • -

    /

    -
  • -
-
-
-
-

2.5.5. Tags

-
-
    -
  • -

    category-api

    -
  • -
-
-
-
-
-
-
-

3. Definitions

-
-
-

3.1. Book

- ----- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameDescriptionSchema

author
-optional

作者

string

categoryId
-optional

integer (int32)

id
-optional

integer (int32)

name
-optional

书名

string

-
-
-

3.2. Category

- ---- - - - - - - - - - - - - - - - - -
NameSchema

id
-optional

integer (int32)

name
-optional

string

-
-
-
-
-

4. Security

-
-
-

4.1. api_key

-
-

Type : apiKey
-Name : api_key
-In : HEADER

-
-
-
-
-
- - - \ No newline at end of file diff --git a/server/jaxrs-resteasy/.swagger-codegen-ignore b/server/jaxrs-resteasy/.swagger-codegen-ignore deleted file mode 100644 index c5fa491..0000000 --- a/server/jaxrs-resteasy/.swagger-codegen-ignore +++ /dev/null @@ -1,23 +0,0 @@ -# Swagger Codegen Ignore -# Generated by swagger-codegen https://github.com/swagger-api/swagger-codegen - -# Use this file to prevent files from being overwritten by the generator. -# The patterns follow closely to .gitignore or .dockerignore. - -# As an example, the C# client generator defines ApiClient.cs. -# You can make changes and tell Swagger Codgen to ignore just this file by uncommenting the following line: -#ApiClient.cs - -# You can match any string of characters against a directory, file or extension with a single asterisk (*): -#foo/*/qux -# The above matches foo/bar/qux and foo/baz/qux, but not foo/bar/baz/qux - -# You can recursively match patterns against a directory, file or extension with a double asterisk (**): -#foo/**/qux -# This matches foo/bar/qux, foo/baz/qux, and foo/bar/baz/qux - -# You can also negate patterns with an exclamation (!). -# For example, you can ignore all files in a docs folder with the file extension .md: -#docs/*.md -# Then explicitly reverse the ignore rule for a single file: -#!docs/README.md diff --git a/server/jaxrs-resteasy/.swagger-codegen/VERSION b/server/jaxrs-resteasy/.swagger-codegen/VERSION deleted file mode 100644 index 717311e..0000000 --- a/server/jaxrs-resteasy/.swagger-codegen/VERSION +++ /dev/null @@ -1 +0,0 @@ -unset \ No newline at end of file diff --git a/server/jaxrs-resteasy/README.md b/server/jaxrs-resteasy/README.md deleted file mode 100644 index 78fa5ef..0000000 --- a/server/jaxrs-resteasy/README.md +++ /dev/null @@ -1,23 +0,0 @@ -# Swagger generated 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/wiki) from a remote server, you can easily generate a server stub. This -is an example of building a swagger-enabled JAX-RS server. - -This example uses the [JAX-RS](https://jax-rs-spec.java.net/) framework. - -To run the server, please execute the following: - -``` -mvn clean package jetty:run -``` - -You can then view the swagger listing here: - -``` -http://localhost:8080/swagger.json -``` - -Note that if you have configured the `host` to be something other than localhost, the calls through -swagger-ui will be directed to that host and not localhost! \ No newline at end of file diff --git a/server/jaxrs-resteasy/build.gradle b/server/jaxrs-resteasy/build.gradle deleted file mode 100644 index 0f0104c..0000000 --- a/server/jaxrs-resteasy/build.gradle +++ /dev/null @@ -1,28 +0,0 @@ -apply plugin: 'war' - -project.version = "1.0.0" -project.group = "com.example" - -repositories { - mavenCentral() -} - -dependencies { - providedCompile 'org.jboss.resteasy:resteasy-jaxrs:3.0.11.Final' - providedCompile 'org.jboss.resteasy:jaxrs-api:3.0.11.Final' - providedCompile 'org.jboss.resteasy:resteasy-validator-provider-11:3.0.11.Final' - providedCompile 'org.jboss.resteasy:resteasy-multipart-provider:3.0.11.Final' - providedCompile 'javax.annotation:javax.annotation-api:1.2' - providedCompile 'org.jboss.spec.javax.servlet:jboss-servlet-api_3.0_spec:1.0.0.Final' - compile 'org.jboss.resteasy:resteasy-jackson2-provider:3.0.11.Final' - testCompile 'junit:junit:4.12', - 'org.hamcrest:hamcrest-core:1.3' -} - -sourceSets { - main { - java { - srcDir 'src/gen/java' - } - } -} diff --git a/server/jaxrs-resteasy/pom.xml b/server/jaxrs-resteasy/pom.xml deleted file mode 100644 index 1f9d357..0000000 --- a/server/jaxrs-resteasy/pom.xml +++ /dev/null @@ -1,167 +0,0 @@ - - 4.0.0 - com.example - swagger-client-java - war - swagger-client-java - 1.0.0 - - src/main/java - - - org.apache.maven.plugins - maven-war-plugin - 3.1.0 - - - maven-failsafe-plugin - 2.6 - - - - integration-test - verify - - - - - - org.codehaus.mojo - build-helper-maven-plugin - 1.9.1 - - - add-source - generate-sources - - add-source - - - - - src/gen/java - - - - - - - - - - org.slf4j - slf4j-log4j12 - ${slf4j-version} - - - javax.servlet - servlet-api - ${servlet-api-version} - provided - - - - org.jboss.resteasy - resteasy-jaxrs - ${resteasy-version} - provided - - - org.jboss.resteasy - jaxrs-api - ${resteasy-version} - provided - - - org.jboss.resteasy - resteasy-validator-provider-11 - ${resteasy-version} - provided - - - org.jboss.resteasy - resteasy-multipart-provider - ${resteasy-version} - provided - - - org.jboss.resteasy - resteasy-jackson2-provider - ${resteasy-version} - - - javax.annotation - javax.annotation-api - 1.2 - provided - - - - com.fasterxml.jackson.datatype - jackson-datatype-joda - 2.4.1 - - - joda-time - joda-time - 2.7 - - - io.swagger - swagger-jaxrs - ${swagger-core-version} - - - junit - junit - ${junit-version} - test - - - org.testng - testng - 6.8.8 - test - - - junit - junit - - - snakeyaml - org.yaml - - - bsh - org.beanshell - - - - - - javax.validation - validation-api - 1.1.0.Final - provided - - - - - - sonatype-snapshots - https://oss.sonatype.org/content/repositories/snapshots - - true - - - - - 1.5.15 - 9.2.9.v20150224 - 3.0.11.Final - 1.6.3 - 4.8.1 - 2.5 - - diff --git a/server/jaxrs-resteasy/settings.gradle b/server/jaxrs-resteasy/settings.gradle deleted file mode 100644 index 8f30e98..0000000 --- a/server/jaxrs-resteasy/settings.gradle +++ /dev/null @@ -1 +0,0 @@ -rootProject.name = "swagger-client-java" \ No newline at end of file diff --git a/server/jaxrs-resteasy/src/gen/java/io/swagger/api/ApiException.java b/server/jaxrs-resteasy/src/gen/java/io/swagger/api/ApiException.java deleted file mode 100644 index d007232..0000000 --- a/server/jaxrs-resteasy/src/gen/java/io/swagger/api/ApiException.java +++ /dev/null @@ -1,10 +0,0 @@ -package io.swagger.api; - -@javax.annotation.Generated(value = "io.swagger.codegen.languages.JavaResteasyServerCodegen", date = "2017-11-09T10:58:42.375+08:00") -public class ApiException extends Exception{ - private int code; - public ApiException (int code, String msg) { - super(msg); - this.code = code; - } -} diff --git a/server/jaxrs-resteasy/src/gen/java/io/swagger/api/ApiOriginFilter.java b/server/jaxrs-resteasy/src/gen/java/io/swagger/api/ApiOriginFilter.java deleted file mode 100644 index fc168ff..0000000 --- a/server/jaxrs-resteasy/src/gen/java/io/swagger/api/ApiOriginFilter.java +++ /dev/null @@ -1,22 +0,0 @@ -package io.swagger.api; - -import java.io.IOException; - -import javax.servlet.*; -import javax.servlet.http.HttpServletResponse; - -@javax.annotation.Generated(value = "io.swagger.codegen.languages.JavaResteasyServerCodegen", date = "2017-11-09T10:58:42.375+08:00") -public class ApiOriginFilter implements javax.servlet.Filter { - 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); - } - - public void destroy() {} - - public void init(FilterConfig filterConfig) throws ServletException {} -} diff --git a/server/jaxrs-resteasy/src/gen/java/io/swagger/api/ApiResponseMessage.java b/server/jaxrs-resteasy/src/gen/java/io/swagger/api/ApiResponseMessage.java deleted file mode 100644 index ed6677a..0000000 --- a/server/jaxrs-resteasy/src/gen/java/io/swagger/api/ApiResponseMessage.java +++ /dev/null @@ -1,69 +0,0 @@ -package io.swagger.api; - -import javax.xml.bind.annotation.XmlTransient; - -@javax.xml.bind.annotation.XmlRootElement -@javax.annotation.Generated(value = "io.swagger.codegen.languages.JavaResteasyServerCodegen", date = "2017-11-09T10:58:42.375+08:00") -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; - } -} diff --git a/server/jaxrs-resteasy/src/gen/java/io/swagger/api/JacksonConfig.java b/server/jaxrs-resteasy/src/gen/java/io/swagger/api/JacksonConfig.java deleted file mode 100644 index d19c912..0000000 --- a/server/jaxrs-resteasy/src/gen/java/io/swagger/api/JacksonConfig.java +++ /dev/null @@ -1,47 +0,0 @@ -package io.swagger.api; - -import com.fasterxml.jackson.core.JsonGenerationException; -import com.fasterxml.jackson.core.JsonGenerator; -import com.fasterxml.jackson.databind.ObjectMapper; -import com.fasterxml.jackson.databind.SerializerProvider; -import com.fasterxml.jackson.databind.ser.std.StdSerializer; -import com.fasterxml.jackson.datatype.joda.JodaModule; -import org.joda.time.DateTime; -import org.joda.time.LocalDate; -import org.joda.time.format.ISODateTimeFormat; - -import javax.ws.rs.ext.ContextResolver; -import javax.ws.rs.ext.Provider; -import java.io.IOException; - -@Provider -public class JacksonConfig implements ContextResolver { - private final ObjectMapper objectMapper; - - public JacksonConfig() throws Exception { - - objectMapper = new ObjectMapper() - .setDateFormat(new RFC3339DateFormat()) - .registerModule(new JodaModule() { - { - addSerializer(DateTime.class, new StdSerializer(DateTime.class) { - @Override - public void serialize(DateTime value, JsonGenerator jgen, SerializerProvider provider) throws IOException, JsonGenerationException { - jgen.writeString(ISODateTimeFormat.dateTimeNoMillis().print(value)); - } - }); - addSerializer(LocalDate.class, new StdSerializer(LocalDate.class) { - @Override - public void serialize(LocalDate value, JsonGenerator jgen, SerializerProvider provider) throws IOException, JsonGenerationException { - jgen.writeString(ISODateTimeFormat.date().print(value)); - } - }); - - } - }); - } - - public ObjectMapper getContext(Class arg0) { - return objectMapper; - } -} \ No newline at end of file diff --git a/server/jaxrs-resteasy/src/gen/java/io/swagger/api/LocalDateProvider.java b/server/jaxrs-resteasy/src/gen/java/io/swagger/api/LocalDateProvider.java deleted file mode 100644 index ed287ac..0000000 --- a/server/jaxrs-resteasy/src/gen/java/io/swagger/api/LocalDateProvider.java +++ /dev/null @@ -1,31 +0,0 @@ -package io.swagger.api; - -import java.time.LocalDate; -import javax.ws.rs.ext.ParamConverter; -import javax.ws.rs.ext.ParamConverterProvider; -import javax.ws.rs.ext.Provider; -import java.lang.annotation.Annotation; -import java.lang.reflect.Type; - -@Provider -public class LocalDateProvider implements ParamConverterProvider { - - public static class LocalDateConverter implements ParamConverter { - - public LocalDate fromString(String string) { - LocalDate localDate = LocalDate.parse(string); - return localDate; - } - - public String toString(LocalDate t) { - return t.toString(); - } - } - - public ParamConverter getConverter(Class type, Type type1, Annotation[] antns) { - if (LocalDate.class.equals(type)) { - return (ParamConverter) new LocalDateConverter(); - } - return null; - } -} \ No newline at end of file diff --git a/server/jaxrs-resteasy/src/gen/java/io/swagger/api/NotFoundException.java b/server/jaxrs-resteasy/src/gen/java/io/swagger/api/NotFoundException.java deleted file mode 100644 index 659ca80..0000000 --- a/server/jaxrs-resteasy/src/gen/java/io/swagger/api/NotFoundException.java +++ /dev/null @@ -1,10 +0,0 @@ -package io.swagger.api; - -@javax.annotation.Generated(value = "io.swagger.codegen.languages.JavaResteasyServerCodegen", date = "2017-11-09T10:58:42.375+08:00") -public class NotFoundException extends ApiException { - private int code; - public NotFoundException (int code, String msg) { - super(code, msg); - this.code = code; - } -} diff --git a/server/jaxrs-resteasy/src/gen/java/io/swagger/api/OffsetDateTimeProvider.java b/server/jaxrs-resteasy/src/gen/java/io/swagger/api/OffsetDateTimeProvider.java deleted file mode 100644 index cb9f2c6..0000000 --- a/server/jaxrs-resteasy/src/gen/java/io/swagger/api/OffsetDateTimeProvider.java +++ /dev/null @@ -1,31 +0,0 @@ -package io.swagger.api; - -import java.time.OffsetDateTime; -import javax.ws.rs.ext.ParamConverter; -import javax.ws.rs.ext.ParamConverterProvider; -import javax.ws.rs.ext.Provider; -import java.lang.annotation.Annotation; -import java.lang.reflect.Type; - -@Provider -public class OffsetDateTimeProvider implements ParamConverterProvider { - - public static class OffsetDateTimeConverter implements ParamConverter { - - public OffsetDateTime fromString(String string) { - OffsetDateTime offsetDateTime = OffsetDateTime.parse(string); - return offsetDateTime; - } - - public String toString(OffsetDateTime t) { - return t.toString(); - } - } - - public ParamConverter getConverter(Class type, Type type1, Annotation[] antns) { - if (OffsetDateTime.class.equals(type)) { - return (ParamConverter) new OffsetDateTimeConverter(); - } - return null; - } -} \ No newline at end of file diff --git a/server/jaxrs-resteasy/src/gen/java/io/swagger/api/RFC3339DateFormat.java b/server/jaxrs-resteasy/src/gen/java/io/swagger/api/RFC3339DateFormat.java deleted file mode 100644 index 7c9e260..0000000 --- a/server/jaxrs-resteasy/src/gen/java/io/swagger/api/RFC3339DateFormat.java +++ /dev/null @@ -1,19 +0,0 @@ -package io.swagger.api; - -import com.fasterxml.jackson.databind.util.ISO8601DateFormat; -import com.fasterxml.jackson.databind.util.ISO8601Utils; - -import java.text.FieldPosition; -import java.util.Date; - -public class RFC3339DateFormat extends ISO8601DateFormat { - - // Same as ISO8601DateFormat but serializing milliseconds. - @Override - public StringBuffer format(Date date, StringBuffer toAppendTo, FieldPosition fieldPosition) { - String value = ISO8601Utils.format(date, true); - toAppendTo.append(value); - return toAppendTo; - } - -} \ No newline at end of file diff --git a/server/jaxrs-resteasy/src/gen/java/io/swagger/api/RestApplication.java b/server/jaxrs-resteasy/src/gen/java/io/swagger/api/RestApplication.java deleted file mode 100644 index 24aa63c..0000000 --- a/server/jaxrs-resteasy/src/gen/java/io/swagger/api/RestApplication.java +++ /dev/null @@ -1,9 +0,0 @@ -package io.swagger.api; - -import javax.ws.rs.ApplicationPath; -import javax.ws.rs.core.Application; - -@ApplicationPath("/") -public class RestApplication extends Application { - -} \ No newline at end of file diff --git a/server/jaxrs-resteasy/src/gen/java/io/swagger/api/StringUtil.java b/server/jaxrs-resteasy/src/gen/java/io/swagger/api/StringUtil.java deleted file mode 100644 index 69e166e..0000000 --- a/server/jaxrs-resteasy/src/gen/java/io/swagger/api/StringUtil.java +++ /dev/null @@ -1,42 +0,0 @@ -package io.swagger.api; - -@javax.annotation.Generated(value = "io.swagger.codegen.languages.JavaResteasyServerCodegen", date = "2017-11-09T10:58:42.375+08:00") -public class StringUtil { - /** - * Check if the given array contains the given value (with case-insensitive comparison). - * - * @param array The array - * @param value The value to search - * @return true if the array contains the value - */ - public static boolean containsIgnoreCase(String[] array, String value) { - for (String str : array) { - if (value == null && str == null) return true; - if (value != null && value.equalsIgnoreCase(str)) return true; - } - return false; - } - - /** - * Join an array of strings with the given separator. - *

- * Note: This might be replaced by utility method from commons-lang or guava someday - * if one of those libraries is added as dependency. - *

- * - * @param array The array of strings - * @param separator The separator - * @return the resulting string - */ - public static String join(String[] array, String separator) { - int len = array.length; - if (len == 0) return ""; - - StringBuilder out = new StringBuilder(); - out.append(array[0]); - for (int i = 1; i < len; i++) { - out.append(separator).append(array[i]); - } - return out.toString(); - } -} diff --git a/server/jaxrs-resteasy/src/gen/java/io/swagger/api/V1Api.java b/server/jaxrs-resteasy/src/gen/java/io/swagger/api/V1Api.java deleted file mode 100644 index 1784978..0000000 --- a/server/jaxrs-resteasy/src/gen/java/io/swagger/api/V1Api.java +++ /dev/null @@ -1,125 +0,0 @@ -package io.swagger.api; - -import io.swagger.model.*; -import io.swagger.api.V1ApiService; -import io.swagger.api.factories.V1ApiServiceFactory; - -import io.swagger.annotations.ApiParam; -import io.swagger.jaxrs.*; - -import io.swagger.model.Book; -import io.swagger.model.Category; - -import java.util.List; -import io.swagger.api.NotFoundException; - -import java.io.InputStream; - -import javax.ws.rs.core.Context; -import javax.ws.rs.core.Response; -import javax.ws.rs.core.SecurityContext; -import javax.ws.rs.*; -import javax.validation.constraints.*; - -@Path("/v1") - - -@io.swagger.annotations.Api(description = "the v1 API") -@javax.annotation.Generated(value = "io.swagger.codegen.languages.JavaResteasyServerCodegen", date = "2017-11-09T10:58:42.375+08:00") -public class V1Api { - private final V1ApiService delegate = V1ApiServiceFactory.getV1Api(); - - @GET - @Path("/category/") - @Consumes({ "application/json" }) - @Produces({ "*/*" }) - @io.swagger.annotations.ApiOperation(value = "获取全部分类", notes = "", response = Category.class, responseContainer = "List", tags={ "category-api", }) - @io.swagger.annotations.ApiResponses(value = { - @io.swagger.annotations.ApiResponse(code = 200, message = "OK", response = Category.class, responseContainer = "List"), - - @io.swagger.annotations.ApiResponse(code = 401, message = "Unauthorized", response = Category.class, responseContainer = "List"), - - @io.swagger.annotations.ApiResponse(code = 403, message = "Forbidden", response = Category.class, responseContainer = "List"), - - @io.swagger.annotations.ApiResponse(code = 404, message = "Not Found", response = Category.class, responseContainer = "List") }) - public Response getAllUsingGET(@Context SecurityContext securityContext) - throws NotFoundException { - return delegate.getAllUsingGET(securityContext); - } - @GET - @Path("/book/{id}") - @Consumes({ "application/json" }) - @Produces({ "*/*" }) - @io.swagger.annotations.ApiOperation(value = "根据ID获取书籍", notes = "", response = Book.class, authorizations = { - @io.swagger.annotations.Authorization(value = "api_key") - }, tags={ "book-api", }) - @io.swagger.annotations.ApiResponses(value = { - @io.swagger.annotations.ApiResponse(code = 200, message = "OK", response = Book.class), - - @io.swagger.annotations.ApiResponse(code = 401, message = "Unauthorized", response = Book.class), - - @io.swagger.annotations.ApiResponse(code = 403, message = "Forbidden", response = Book.class), - - @io.swagger.annotations.ApiResponse(code = 404, message = "Not Found", response = Book.class) }) - public Response getBookByIdUsingGET( @PathParam("id") Integer id,@Context SecurityContext securityContext) - throws NotFoundException { - return delegate.getBookByIdUsingGET(id,securityContext); - } - @GET - @Path("/book/getByCategoryId") - @Consumes({ "application/json" }) - @Produces({ "*/*" }) - @io.swagger.annotations.ApiOperation(value = "根据分类获取书籍", notes = "", response = Book.class, responseContainer = "List", authorizations = { - @io.swagger.annotations.Authorization(value = "api_key") - }, tags={ "book-api", }) - @io.swagger.annotations.ApiResponses(value = { - @io.swagger.annotations.ApiResponse(code = 200, message = "OK", response = Book.class, responseContainer = "List"), - - @io.swagger.annotations.ApiResponse(code = 401, message = "Unauthorized", response = Book.class, responseContainer = "List"), - - @io.swagger.annotations.ApiResponse(code = 403, message = "Forbidden", response = Book.class, responseContainer = "List"), - - @io.swagger.annotations.ApiResponse(code = 404, message = "Not Found", response = Book.class, responseContainer = "List") }) - public Response getBooksByCategoryUsingGET( @NotNull @QueryParam("id") Integer id,@Context SecurityContext securityContext) - throws NotFoundException { - return delegate.getBooksByCategoryUsingGET(id,securityContext); - } - @GET - @Path("/category/{id}") - @Consumes({ "application/json" }) - @Produces({ "*/*" }) - @io.swagger.annotations.ApiOperation(value = "根据ID获取分类", notes = "", response = Category.class, tags={ "category-api", }) - @io.swagger.annotations.ApiResponses(value = { - @io.swagger.annotations.ApiResponse(code = 200, message = "OK", response = Category.class), - - @io.swagger.annotations.ApiResponse(code = 401, message = "Unauthorized", response = Category.class), - - @io.swagger.annotations.ApiResponse(code = 403, message = "Forbidden", response = Category.class), - - @io.swagger.annotations.ApiResponse(code = 404, message = "Not Found", response = Category.class) }) - public Response getUsingGET( @PathParam("id") Integer id,@Context SecurityContext securityContext) - throws NotFoundException { - return delegate.getUsingGET(id,securityContext); - } - @POST - @Path("/book/update") - @Consumes({ "application/json" }) - @Produces({ "*/*" }) - @io.swagger.annotations.ApiOperation(value = "更新书籍", notes = "", response = Boolean.class, authorizations = { - @io.swagger.annotations.Authorization(value = "api_key") - }, tags={ "book-api", }) - @io.swagger.annotations.ApiResponses(value = { - @io.swagger.annotations.ApiResponse(code = 200, message = "OK", response = Boolean.class), - - @io.swagger.annotations.ApiResponse(code = 201, message = "Created", response = Boolean.class), - - @io.swagger.annotations.ApiResponse(code = 401, message = "Unauthorized", response = Boolean.class), - - @io.swagger.annotations.ApiResponse(code = 403, message = "Forbidden", response = Boolean.class), - - @io.swagger.annotations.ApiResponse(code = 404, message = "Not Found", response = Boolean.class) }) - public Response updateUsingPOST(@ApiParam(value = "id" ) Integer id,@Context SecurityContext securityContext) - throws NotFoundException { - return delegate.updateUsingPOST(id,securityContext); - } -} diff --git a/server/jaxrs-resteasy/src/gen/java/io/swagger/api/V1ApiService.java b/server/jaxrs-resteasy/src/gen/java/io/swagger/api/V1ApiService.java deleted file mode 100644 index 4f01be0..0000000 --- a/server/jaxrs-resteasy/src/gen/java/io/swagger/api/V1ApiService.java +++ /dev/null @@ -1,30 +0,0 @@ -package io.swagger.api; - -import io.swagger.api.*; -import io.swagger.model.*; - - -import io.swagger.model.Book; -import io.swagger.model.Category; - -import java.util.List; -import io.swagger.api.NotFoundException; - -import java.io.InputStream; - -import javax.ws.rs.core.Response; -import javax.ws.rs.core.SecurityContext; - -@javax.annotation.Generated(value = "io.swagger.codegen.languages.JavaResteasyServerCodegen", date = "2017-11-09T10:58:42.375+08:00") -public abstract class V1ApiService { - public abstract Response getAllUsingGET(SecurityContext securityContext) - throws NotFoundException; - public abstract Response getBookByIdUsingGET(Integer id,SecurityContext securityContext) - throws NotFoundException; - public abstract Response getBooksByCategoryUsingGET(Integer id,SecurityContext securityContext) - throws NotFoundException; - public abstract Response getUsingGET(Integer id,SecurityContext securityContext) - throws NotFoundException; - public abstract Response updateUsingPOST(Integer id,SecurityContext securityContext) - throws NotFoundException; -} diff --git a/server/jaxrs-resteasy/src/gen/java/io/swagger/model/Book.java b/server/jaxrs-resteasy/src/gen/java/io/swagger/model/Book.java deleted file mode 100644 index 044f23d..0000000 --- a/server/jaxrs-resteasy/src/gen/java/io/swagger/model/Book.java +++ /dev/null @@ -1,114 +0,0 @@ -package io.swagger.model; - -import java.util.Objects; -import java.util.ArrayList; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.annotation.JsonCreator; -import javax.validation.constraints.*; -import io.swagger.annotations.*; - - -@javax.annotation.Generated(value = "io.swagger.codegen.languages.JavaResteasyServerCodegen", date = "2017-11-09T10:58:42.375+08:00") -public class Book { - - private String author = null; - private Integer categoryId = null; - private Integer id = null; - private String name = null; - - /** - * 作者 - **/ - - @ApiModelProperty(value = "作者") - @JsonProperty("author") - public String getAuthor() { - return author; - } - public void setAuthor(String author) { - this.author = author; - } - - /** - **/ - - @ApiModelProperty(value = "") - @JsonProperty("categoryId") - public Integer getCategoryId() { - return categoryId; - } - public void setCategoryId(Integer categoryId) { - this.categoryId = categoryId; - } - - /** - **/ - - @ApiModelProperty(value = "") - @JsonProperty("id") - public Integer getId() { - return id; - } - public void setId(Integer id) { - this.id = id; - } - - /** - * 书名 - **/ - - @ApiModelProperty(value = "书名") - @JsonProperty("name") - public String getName() { - return name; - } - public void setName(String name) { - this.name = name; - } - - - @Override - public boolean equals(java.lang.Object o) { - if (this == o) { - return true; - } - if (o == null || getClass() != o.getClass()) { - return false; - } - Book book = (Book) o; - return Objects.equals(author, book.author) && - Objects.equals(categoryId, book.categoryId) && - Objects.equals(id, book.id) && - Objects.equals(name, book.name); - } - - @Override - public int hashCode() { - return Objects.hash(author, categoryId, id, name); - } - - @Override - public String toString() { - StringBuilder sb = new StringBuilder(); - sb.append("class Book {\n"); - - sb.append(" author: ").append(toIndentedString(author)).append("\n"); - sb.append(" categoryId: ").append(toIndentedString(categoryId)).append("\n"); - sb.append(" id: ").append(toIndentedString(id)).append("\n"); - sb.append(" name: ").append(toIndentedString(name)).append("\n"); - sb.append("}"); - return sb.toString(); - } - - /** - * Convert the given object to string with each line indented by 4 spaces - * (except the first line). - */ - private String toIndentedString(java.lang.Object o) { - if (o == null) { - return "null"; - } - return o.toString().replace("\n", "\n "); - } -} - diff --git a/server/jaxrs-resteasy/src/gen/java/io/swagger/model/Category.java b/server/jaxrs-resteasy/src/gen/java/io/swagger/model/Category.java deleted file mode 100644 index 99c435b..0000000 --- a/server/jaxrs-resteasy/src/gen/java/io/swagger/model/Category.java +++ /dev/null @@ -1,82 +0,0 @@ -package io.swagger.model; - -import java.util.Objects; -import java.util.ArrayList; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.annotation.JsonCreator; -import javax.validation.constraints.*; -import io.swagger.annotations.*; - - -@javax.annotation.Generated(value = "io.swagger.codegen.languages.JavaResteasyServerCodegen", date = "2017-11-09T10:58:42.375+08:00") -public class Category { - - private Integer id = null; - private String name = null; - - /** - **/ - - @ApiModelProperty(value = "") - @JsonProperty("id") - public Integer getId() { - return id; - } - public void setId(Integer id) { - this.id = id; - } - - /** - **/ - - @ApiModelProperty(value = "") - @JsonProperty("name") - public String getName() { - return name; - } - public void setName(String name) { - this.name = name; - } - - - @Override - public boolean equals(java.lang.Object o) { - if (this == o) { - return true; - } - if (o == null || getClass() != o.getClass()) { - return false; - } - Category category = (Category) o; - return Objects.equals(id, category.id) && - Objects.equals(name, category.name); - } - - @Override - public int hashCode() { - return Objects.hash(id, name); - } - - @Override - public String toString() { - StringBuilder sb = new StringBuilder(); - sb.append("class Category {\n"); - - sb.append(" id: ").append(toIndentedString(id)).append("\n"); - sb.append(" name: ").append(toIndentedString(name)).append("\n"); - sb.append("}"); - return sb.toString(); - } - - /** - * Convert the given object to string with each line indented by 4 spaces - * (except the first line). - */ - private String toIndentedString(java.lang.Object o) { - if (o == null) { - return "null"; - } - return o.toString().replace("\n", "\n "); - } -} - diff --git a/server/jaxrs-resteasy/src/main/java/io/swagger/api/factories/V1ApiServiceFactory.java b/server/jaxrs-resteasy/src/main/java/io/swagger/api/factories/V1ApiServiceFactory.java deleted file mode 100644 index 2a90ebf..0000000 --- a/server/jaxrs-resteasy/src/main/java/io/swagger/api/factories/V1ApiServiceFactory.java +++ /dev/null @@ -1,15 +0,0 @@ -package io.swagger.api.factories; - -import io.swagger.api.V1ApiService; -import io.swagger.api.impl.V1ApiServiceImpl; - -@javax.annotation.Generated(value = "io.swagger.codegen.languages.JavaResteasyServerCodegen", date = "2017-11-09T10:58:42.375+08:00") -public class V1ApiServiceFactory { - - private final static V1ApiService service = new V1ApiServiceImpl(); - - public static V1ApiService getV1Api() - { - return service; - } -} diff --git a/server/jaxrs-resteasy/src/main/java/io/swagger/api/impl/V1ApiServiceImpl.java b/server/jaxrs-resteasy/src/main/java/io/swagger/api/impl/V1ApiServiceImpl.java deleted file mode 100644 index 607c802..0000000 --- a/server/jaxrs-resteasy/src/main/java/io/swagger/api/impl/V1ApiServiceImpl.java +++ /dev/null @@ -1,50 +0,0 @@ -package io.swagger.api.impl; - -import io.swagger.api.*; -import io.swagger.model.*; - - -import io.swagger.model.Book; -import io.swagger.model.Category; - -import java.util.List; -import io.swagger.api.NotFoundException; - -import java.io.InputStream; - -import javax.ws.rs.core.Response; -import javax.ws.rs.core.SecurityContext; - -@javax.annotation.Generated(value = "io.swagger.codegen.languages.JavaResteasyServerCodegen", date = "2017-11-09T10:58:42.375+08:00") -public class V1ApiServiceImpl extends V1ApiService { - @Override - public Response getAllUsingGET(SecurityContext securityContext) - throws NotFoundException { - // do some magic! - return Response.ok().entity(new ApiResponseMessage(ApiResponseMessage.OK, "magic!")).build(); - } - @Override - public Response getBookByIdUsingGET(Integer id,SecurityContext securityContext) - throws NotFoundException { - // do some magic! - return Response.ok().entity(new ApiResponseMessage(ApiResponseMessage.OK, "magic!")).build(); - } - @Override - public Response getBooksByCategoryUsingGET(Integer id,SecurityContext securityContext) - throws NotFoundException { - // do some magic! - return Response.ok().entity(new ApiResponseMessage(ApiResponseMessage.OK, "magic!")).build(); - } - @Override - public Response getUsingGET(Integer id,SecurityContext securityContext) - throws NotFoundException { - // do some magic! - return Response.ok().entity(new ApiResponseMessage(ApiResponseMessage.OK, "magic!")).build(); - } - @Override - public Response updateUsingPOST(Integer id,SecurityContext securityContext) - throws NotFoundException { - // do some magic! - return Response.ok().entity(new ApiResponseMessage(ApiResponseMessage.OK, "magic!")).build(); - } -} diff --git a/server/jaxrs-resteasy/src/main/webapp/WEB-INF/jboss-web.xml b/server/jaxrs-resteasy/src/main/webapp/WEB-INF/jboss-web.xml deleted file mode 100644 index 63da3d6..0000000 --- a/server/jaxrs-resteasy/src/main/webapp/WEB-INF/jboss-web.xml +++ /dev/null @@ -1,3 +0,0 @@ - - - \ No newline at end of file diff --git a/server/jaxrs-resteasy/src/main/webapp/WEB-INF/web.xml b/server/jaxrs-resteasy/src/main/webapp/WEB-INF/web.xml deleted file mode 100644 index 52a89e9..0000000 --- a/server/jaxrs-resteasy/src/main/webapp/WEB-INF/web.xml +++ /dev/null @@ -1,14 +0,0 @@ - - - - - ApiOriginFilter - io.swagger.api.ApiOriginFilter - - - ApiOriginFilter - /* - - diff --git a/server/spring/.swagger-codegen-ignore b/server/spring/.swagger-codegen-ignore deleted file mode 100644 index c5fa491..0000000 --- a/server/spring/.swagger-codegen-ignore +++ /dev/null @@ -1,23 +0,0 @@ -# Swagger Codegen Ignore -# Generated by swagger-codegen https://github.com/swagger-api/swagger-codegen - -# Use this file to prevent files from being overwritten by the generator. -# The patterns follow closely to .gitignore or .dockerignore. - -# As an example, the C# client generator defines ApiClient.cs. -# You can make changes and tell Swagger Codgen to ignore just this file by uncommenting the following line: -#ApiClient.cs - -# You can match any string of characters against a directory, file or extension with a single asterisk (*): -#foo/*/qux -# The above matches foo/bar/qux and foo/baz/qux, but not foo/bar/baz/qux - -# You can recursively match patterns against a directory, file or extension with a double asterisk (**): -#foo/**/qux -# This matches foo/bar/qux, foo/baz/qux, and foo/bar/baz/qux - -# You can also negate patterns with an exclamation (!). -# For example, you can ignore all files in a docs folder with the file extension .md: -#docs/*.md -# Then explicitly reverse the ignore rule for a single file: -#!docs/README.md diff --git a/server/spring/.swagger-codegen/VERSION b/server/spring/.swagger-codegen/VERSION deleted file mode 100644 index 717311e..0000000 --- a/server/spring/.swagger-codegen/VERSION +++ /dev/null @@ -1 +0,0 @@ -unset \ No newline at end of file diff --git a/server/spring/README.md b/server/spring/README.md deleted file mode 100644 index a2e8a9f..0000000 --- a/server/spring/README.md +++ /dev/null @@ -1,18 +0,0 @@ -# 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 \ No newline at end of file diff --git a/server/spring/pom.xml b/server/spring/pom.xml deleted file mode 100644 index 404858d..0000000 --- a/server/spring/pom.xml +++ /dev/null @@ -1,69 +0,0 @@ - - 4.0.0 - com.example - swagger-client-java - jar - swagger-client-java - 1.0.0 - - 1.8 - ${java.version} - ${java.version} - 2.6.1 - - - org.springframework.boot - spring-boot-starter-parent - 1.4.7.RELEASE - - - src/main/java - - - org.springframework.boot - spring-boot-maven-plugin - - - - repackage - - - - - - - - - org.springframework.boot - spring-boot-starter-web - - - org.springframework.boot - spring-boot-starter-tomcat - provided - - - - io.springfox - springfox-swagger2 - ${springfox-version} - - - io.springfox - springfox-swagger-ui - ${springfox-version} - - - - com.fasterxml.jackson.datatype - jackson-datatype-jsr310 - - - - javax.validation - validation-api - 1.1.0.Final - provided - - - diff --git a/server/spring/src/main/java/io/swagger/RFC3339DateFormat.java b/server/spring/src/main/java/io/swagger/RFC3339DateFormat.java deleted file mode 100644 index 0c3d276..0000000 --- a/server/spring/src/main/java/io/swagger/RFC3339DateFormat.java +++ /dev/null @@ -1,20 +0,0 @@ -package io.swagger; - -import com.fasterxml.jackson.databind.util.ISO8601DateFormat; -import com.fasterxml.jackson.databind.util.ISO8601Utils; - -import java.text.FieldPosition; -import java.util.Date; - - -public class RFC3339DateFormat extends ISO8601DateFormat { - - // Same as ISO8601DateFormat but serializing milliseconds. - @Override - public StringBuffer format(Date date, StringBuffer toAppendTo, FieldPosition fieldPosition) { - String value = ISO8601Utils.format(date, true); - toAppendTo.append(value); - return toAppendTo; - } - -} \ No newline at end of file diff --git a/server/spring/src/main/java/io/swagger/Swagger2SpringBoot.java b/server/spring/src/main/java/io/swagger/Swagger2SpringBoot.java deleted file mode 100644 index b7b7bb3..0000000 --- a/server/spring/src/main/java/io/swagger/Swagger2SpringBoot.java +++ /dev/null @@ -1,36 +0,0 @@ -package io.swagger; - -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 = { "io.swagger", "io.swagger.api" }) -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; - } - - } -} diff --git a/server/spring/src/main/java/io/swagger/api/ApiException.java b/server/spring/src/main/java/io/swagger/api/ApiException.java deleted file mode 100644 index 5ed8a62..0000000 --- a/server/spring/src/main/java/io/swagger/api/ApiException.java +++ /dev/null @@ -1,11 +0,0 @@ -package io.swagger.api; - -@javax.annotation.Generated(value = "io.swagger.codegen.languages.SpringCodegen", date = "2017-11-09T10:58:41.434+08:00") - -public class ApiException extends Exception{ - private int code; - public ApiException (int code, String msg) { - super(msg); - this.code = code; - } -} diff --git a/server/spring/src/main/java/io/swagger/api/ApiOriginFilter.java b/server/spring/src/main/java/io/swagger/api/ApiOriginFilter.java deleted file mode 100644 index 6e74701..0000000 --- a/server/spring/src/main/java/io/swagger/api/ApiOriginFilter.java +++ /dev/null @@ -1,28 +0,0 @@ -package io.swagger.api; - -import java.io.IOException; - -import javax.servlet.*; -import javax.servlet.http.HttpServletResponse; - -@javax.annotation.Generated(value = "io.swagger.codegen.languages.SpringCodegen", date = "2017-11-09T10:58:41.434+08:00") - -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 { - } -} diff --git a/server/spring/src/main/java/io/swagger/api/ApiResponseMessage.java b/server/spring/src/main/java/io/swagger/api/ApiResponseMessage.java deleted file mode 100644 index 31d7f1b..0000000 --- a/server/spring/src/main/java/io/swagger/api/ApiResponseMessage.java +++ /dev/null @@ -1,70 +0,0 @@ -package io.swagger.api; - -import javax.xml.bind.annotation.XmlTransient; - -@javax.annotation.Generated(value = "io.swagger.codegen.languages.SpringCodegen", date = "2017-11-09T10:58:41.434+08:00") - -@javax.xml.bind.annotation.XmlRootElement -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; - } -} diff --git a/server/spring/src/main/java/io/swagger/api/NotFoundException.java b/server/spring/src/main/java/io/swagger/api/NotFoundException.java deleted file mode 100644 index cb469d7..0000000 --- a/server/spring/src/main/java/io/swagger/api/NotFoundException.java +++ /dev/null @@ -1,11 +0,0 @@ -package io.swagger.api; - -@javax.annotation.Generated(value = "io.swagger.codegen.languages.SpringCodegen", date = "2017-11-09T10:58:41.434+08:00") - -public class NotFoundException extends ApiException { - private int code; - public NotFoundException (int code, String msg) { - super(code, msg); - this.code = code; - } -} diff --git a/server/spring/src/main/java/io/swagger/api/V1Api.java b/server/spring/src/main/java/io/swagger/api/V1Api.java deleted file mode 100644 index 378e888..0000000 --- a/server/spring/src/main/java/io/swagger/api/V1Api.java +++ /dev/null @@ -1,122 +0,0 @@ -/** - * NOTE: This class is auto generated by the swagger code generator program (unset). - * https://github.com/swagger-api/swagger-codegen - * Do not edit the class manually. - */ -package io.swagger.api; - -import io.swagger.model.Book; -import io.swagger.model.Category; - -import io.swagger.annotations.*; -import org.springframework.http.HttpStatus; -import org.springframework.http.ResponseEntity; -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 javax.validation.constraints.*; -import javax.validation.Valid; -@javax.annotation.Generated(value = "io.swagger.codegen.languages.SpringCodegen", date = "2017-11-09T10:58:41.434+08:00") - -@Api(value = "v1", description = "the v1 API") -public interface V1Api { - - @ApiOperation(value = "获取全部分类", notes = "", response = Category.class, responseContainer = "List", tags={ "category-api", }) - @ApiResponses(value = { - @ApiResponse(code = 200, message = "OK", response = Category.class, responseContainer = "List"), - @ApiResponse(code = 401, message = "Unauthorized", response = Void.class), - @ApiResponse(code = 403, message = "Forbidden", response = Void.class), - @ApiResponse(code = 404, message = "Not Found", response = Void.class) }) - - @RequestMapping(value = "/v1/category/", - produces = { "*/*" }, - consumes = { "application/json" }, - method = RequestMethod.GET) - default ResponseEntity> getAllUsingGET() { - // do some magic! - return new ResponseEntity>(HttpStatus.OK); - } - - - @ApiOperation(value = "根据ID获取书籍", notes = "", response = Book.class, authorizations = { - @Authorization(value = "api_key") - }, tags={ "book-api", }) - @ApiResponses(value = { - @ApiResponse(code = 200, message = "OK", response = Book.class), - @ApiResponse(code = 401, message = "Unauthorized", response = Void.class), - @ApiResponse(code = 403, message = "Forbidden", response = Void.class), - @ApiResponse(code = 404, message = "Not Found", response = Void.class) }) - - @RequestMapping(value = "/v1/book/{id}", - produces = { "*/*" }, - consumes = { "application/json" }, - method = RequestMethod.GET) - default ResponseEntity getBookByIdUsingGET(@ApiParam(value = "id",required=true ) @PathVariable("id") Integer id) { - // do some magic! - return new ResponseEntity(HttpStatus.OK); - } - - - @ApiOperation(value = "根据分类获取书籍", notes = "", response = Book.class, responseContainer = "List", authorizations = { - @Authorization(value = "api_key") - }, tags={ "book-api", }) - @ApiResponses(value = { - @ApiResponse(code = 200, message = "OK", response = Book.class, responseContainer = "List"), - @ApiResponse(code = 401, message = "Unauthorized", response = Void.class), - @ApiResponse(code = 403, message = "Forbidden", response = Void.class), - @ApiResponse(code = 404, message = "Not Found", response = Void.class) }) - - @RequestMapping(value = "/v1/book/getByCategoryId", - produces = { "*/*" }, - consumes = { "application/json" }, - method = RequestMethod.GET) - default ResponseEntity> getBooksByCategoryUsingGET( @NotNull@ApiParam(value = "id", required = true) @RequestParam(value = "id", required = true) Integer id) { - // do some magic! - return new ResponseEntity>(HttpStatus.OK); - } - - - @ApiOperation(value = "根据ID获取分类", notes = "", response = Category.class, tags={ "category-api", }) - @ApiResponses(value = { - @ApiResponse(code = 200, message = "OK", response = Category.class), - @ApiResponse(code = 401, message = "Unauthorized", response = Void.class), - @ApiResponse(code = 403, message = "Forbidden", response = Void.class), - @ApiResponse(code = 404, message = "Not Found", response = Void.class) }) - - @RequestMapping(value = "/v1/category/{id}", - produces = { "*/*" }, - consumes = { "application/json" }, - method = RequestMethod.GET) - default ResponseEntity getUsingGET(@ApiParam(value = "id",required=true ) @PathVariable("id") Integer id) { - // do some magic! - return new ResponseEntity(HttpStatus.OK); - } - - - @ApiOperation(value = "更新书籍", notes = "", response = Boolean.class, authorizations = { - @Authorization(value = "api_key") - }, tags={ "book-api", }) - @ApiResponses(value = { - @ApiResponse(code = 200, message = "OK", response = Boolean.class), - @ApiResponse(code = 201, message = "Created", response = Void.class), - @ApiResponse(code = 401, message = "Unauthorized", response = Void.class), - @ApiResponse(code = 403, message = "Forbidden", response = Void.class), - @ApiResponse(code = 404, message = "Not Found", response = Void.class) }) - - @RequestMapping(value = "/v1/book/update", - produces = { "*/*" }, - consumes = { "application/json" }, - method = RequestMethod.POST) - default ResponseEntity updateUsingPOST(@ApiParam(value = "id" ) @Valid @RequestBody Integer id) { - // do some magic! - return new ResponseEntity(HttpStatus.OK); - } - -} diff --git a/server/spring/src/main/java/io/swagger/api/V1ApiController.java b/server/spring/src/main/java/io/swagger/api/V1ApiController.java deleted file mode 100644 index 8664a39..0000000 --- a/server/spring/src/main/java/io/swagger/api/V1ApiController.java +++ /dev/null @@ -1,14 +0,0 @@ -package io.swagger.api; - -import org.springframework.stereotype.Controller; - -import javax.validation.constraints.*; -import javax.validation.Valid; -@javax.annotation.Generated(value = "io.swagger.codegen.languages.SpringCodegen", date = "2017-11-09T10:58:41.434+08:00") - -@Controller -public class V1ApiController implements V1Api { - - - -} diff --git a/server/spring/src/main/java/io/swagger/configuration/HomeController.java b/server/spring/src/main/java/io/swagger/configuration/HomeController.java deleted file mode 100644 index f832809..0000000 --- a/server/spring/src/main/java/io/swagger/configuration/HomeController.java +++ /dev/null @@ -1,16 +0,0 @@ -package io.swagger.configuration; - -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"; - } -} diff --git a/server/spring/src/main/java/io/swagger/configuration/SwaggerDocumentationConfig.java b/server/spring/src/main/java/io/swagger/configuration/SwaggerDocumentationConfig.java deleted file mode 100644 index 196d0b9..0000000 --- a/server/spring/src/main/java/io/swagger/configuration/SwaggerDocumentationConfig.java +++ /dev/null @@ -1,41 +0,0 @@ -package io.swagger.configuration; - -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; - -@javax.annotation.Generated(value = "io.swagger.codegen.languages.SpringCodegen", date = "2017-11-09T10:58:41.434+08:00") - -@Configuration -public class SwaggerDocumentationConfig { - - ApiInfo apiInfo() { - return new ApiInfoBuilder() - .title("Swagger Demo") - .description("Swagger的简单示例, 包括swagger-codegen, swagger2markup 和 asciidoctor.") - .license("Apache License") - .licenseUrl("http://www.apache.org/licenses/LICENSE-2.0.html") - .termsOfServiceUrl("http://www.google.com") - .version("v1") - .contact(new Contact("","", "damon.q@iv66.net")) - .build(); - } - - @Bean - public Docket customImplementation(){ - return new Docket(DocumentationType.SWAGGER_2) - .select() - .apis(RequestHandlerSelectors.basePackage("io.swagger.api")) - .build() - .directModelSubstitute(java.time.LocalDate.class, java.sql.Date.class) - .directModelSubstitute(java.time.OffsetDateTime.class, java.util.Date.class) - .apiInfo(apiInfo()); - } - -} diff --git a/server/spring/src/main/java/io/swagger/model/Book.java b/server/spring/src/main/java/io/swagger/model/Book.java deleted file mode 100644 index f122e71..0000000 --- a/server/spring/src/main/java/io/swagger/model/Book.java +++ /dev/null @@ -1,154 +0,0 @@ -package io.swagger.model; - -import java.util.Objects; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.annotation.JsonCreator; -import io.swagger.annotations.ApiModel; -import io.swagger.annotations.ApiModelProperty; -import javax.validation.Valid; -import javax.validation.constraints.*; - -/** - * Book - */ -@javax.annotation.Generated(value = "io.swagger.codegen.languages.SpringCodegen", date = "2017-11-09T10:58:41.434+08:00") - -public class Book { - @JsonProperty("author") - private String author = null; - - @JsonProperty("categoryId") - private Integer categoryId = null; - - @JsonProperty("id") - private Integer id = null; - - @JsonProperty("name") - private String name = null; - - public Book author(String author) { - this.author = author; - return this; - } - - /** - * 作者 - * @return author - **/ - @ApiModelProperty(value = "作者") - - - public String getAuthor() { - return author; - } - - public void setAuthor(String author) { - this.author = author; - } - - public Book categoryId(Integer categoryId) { - this.categoryId = categoryId; - return this; - } - - /** - * Get categoryId - * @return categoryId - **/ - @ApiModelProperty(value = "") - - - public Integer getCategoryId() { - return categoryId; - } - - public void setCategoryId(Integer categoryId) { - this.categoryId = categoryId; - } - - public Book id(Integer id) { - this.id = id; - return this; - } - - /** - * Get id - * @return id - **/ - @ApiModelProperty(value = "") - - - public Integer getId() { - return id; - } - - public void setId(Integer id) { - this.id = id; - } - - public Book name(String name) { - this.name = name; - return this; - } - - /** - * 书名 - * @return name - **/ - @ApiModelProperty(value = "书名") - - - public String getName() { - return name; - } - - public void setName(String name) { - this.name = name; - } - - - @Override - public boolean equals(java.lang.Object o) { - if (this == o) { - return true; - } - if (o == null || getClass() != o.getClass()) { - return false; - } - Book book = (Book) o; - return Objects.equals(this.author, book.author) && - Objects.equals(this.categoryId, book.categoryId) && - Objects.equals(this.id, book.id) && - Objects.equals(this.name, book.name); - } - - @Override - public int hashCode() { - return Objects.hash(author, categoryId, id, name); - } - - @Override - public String toString() { - StringBuilder sb = new StringBuilder(); - sb.append("class Book {\n"); - - sb.append(" author: ").append(toIndentedString(author)).append("\n"); - sb.append(" categoryId: ").append(toIndentedString(categoryId)).append("\n"); - sb.append(" id: ").append(toIndentedString(id)).append("\n"); - sb.append(" name: ").append(toIndentedString(name)).append("\n"); - sb.append("}"); - return sb.toString(); - } - - /** - * Convert the given object to string with each line indented by 4 spaces - * (except the first line). - */ - private String toIndentedString(java.lang.Object o) { - if (o == null) { - return "null"; - } - return o.toString().replace("\n", "\n "); - } -} - diff --git a/server/spring/src/main/java/io/swagger/model/Category.java b/server/spring/src/main/java/io/swagger/model/Category.java deleted file mode 100644 index 151c6ca..0000000 --- a/server/spring/src/main/java/io/swagger/model/Category.java +++ /dev/null @@ -1,104 +0,0 @@ -package io.swagger.model; - -import java.util.Objects; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.annotation.JsonCreator; -import io.swagger.annotations.ApiModel; -import io.swagger.annotations.ApiModelProperty; -import javax.validation.Valid; -import javax.validation.constraints.*; - -/** - * Category - */ -@javax.annotation.Generated(value = "io.swagger.codegen.languages.SpringCodegen", date = "2017-11-09T10:58:41.434+08:00") - -public class Category { - @JsonProperty("id") - private Integer id = null; - - @JsonProperty("name") - private String name = null; - - public Category id(Integer id) { - this.id = id; - return this; - } - - /** - * Get id - * @return id - **/ - @ApiModelProperty(value = "") - - - public Integer getId() { - return id; - } - - public void setId(Integer id) { - this.id = id; - } - - public Category name(String name) { - this.name = name; - return this; - } - - /** - * Get name - * @return name - **/ - @ApiModelProperty(value = "") - - - public String getName() { - return name; - } - - public void setName(String name) { - this.name = name; - } - - - @Override - public boolean equals(java.lang.Object o) { - if (this == o) { - return true; - } - if (o == null || getClass() != o.getClass()) { - return false; - } - Category category = (Category) o; - return Objects.equals(this.id, category.id) && - Objects.equals(this.name, category.name); - } - - @Override - public int hashCode() { - return Objects.hash(id, name); - } - - @Override - public String toString() { - StringBuilder sb = new StringBuilder(); - sb.append("class Category {\n"); - - sb.append(" id: ").append(toIndentedString(id)).append("\n"); - sb.append(" name: ").append(toIndentedString(name)).append("\n"); - sb.append("}"); - return sb.toString(); - } - - /** - * Convert the given object to string with each line indented by 4 spaces - * (except the first line). - */ - private String toIndentedString(java.lang.Object o) { - if (o == null) { - return "null"; - } - return o.toString().replace("\n", "\n "); - } -} - diff --git a/server/spring/src/main/resources/application.properties b/server/spring/src/main/resources/application.properties deleted file mode 100644 index 12f1987..0000000 --- a/server/spring/src/main/resources/application.properties +++ /dev/null @@ -1,5 +0,0 @@ -springfox.documentation.swagger.v2.path=/api-docs -server.contextPath= -server.port=8080 -spring.jackson.date-format=io.swagger.RFC3339DateFormat -spring.jackson.serialization.WRITE_DATES_AS_TIMESTAMPS=false \ No newline at end of file diff --git a/swagger-server/bin/install.sh b/swagger-server/bin/install.sh index 4b4fc50..7ef6998 100644 --- a/swagger-server/bin/install.sh +++ b/swagger-server/bin/install.sh @@ -44,4 +44,4 @@ java -jar swagger-codegen-cli.jar generate \ -o $SERVER_HOME/jaxrs-resteasy cd $pwd/../.. -mvn clean install +mvn clean install -Dmaven.test.skip \ No newline at end of file diff --git a/swagger-server/src/main/java/com/example/server/api/BookApi.java b/swagger-server/src/main/java/com/example/server/api/BookApi.java index a011618..076b8fd 100644 --- a/swagger-server/src/main/java/com/example/server/api/BookApi.java +++ b/swagger-server/src/main/java/com/example/server/api/BookApi.java @@ -15,7 +15,7 @@ import org.springframework.web.bind.annotation.RestController; /** - *

Created by Damon.Q on 2017/10/27. + *

Created by qct on 2017/10/27. */ @RestController @RequestMapping("/v1/book") diff --git a/swagger-server/src/main/java/com/example/server/api/CategoryApi.java b/swagger-server/src/main/java/com/example/server/api/CategoryApi.java index f762148..7b71542 100644 --- a/swagger-server/src/main/java/com/example/server/api/CategoryApi.java +++ b/swagger-server/src/main/java/com/example/server/api/CategoryApi.java @@ -11,7 +11,7 @@ import org.springframework.web.bind.annotation.RestController; /** - *

Created by Damon.Q on 2017/10/27. + *

Created by qct on 2017/10/27. */ @RestController @RequestMapping("/v1/category") diff --git a/swagger-server/src/main/java/com/example/server/config/SwaggerConfig.java b/swagger-server/src/main/java/com/example/server/config/SwaggerConfig.java index e47f572..c015877 100644 --- a/swagger-server/src/main/java/com/example/server/config/SwaggerConfig.java +++ b/swagger-server/src/main/java/com/example/server/config/SwaggerConfig.java @@ -23,7 +23,7 @@ import springfox.documentation.swagger2.annotations.EnableSwagger2; /** - *

Created by Damon.Q on 2017/10/27. + *

Created by qct on 2017/10/27. */ @Configuration @EnableSwagger2 @@ -85,7 +85,7 @@ private ApiInfo apiInfo() { .title("Swagger Demo") .description("Swagger的简单示例, 包括swagger-codegen, swagger2markup 和 asciidoctor.") .termsOfServiceUrl("http://www.apache.org/licenses/LICENSE-2.0.html") - .contact(new Contact("Damon", "http://www.google.com", "damon.q@iv66.net")) + .contact(new Contact("qct", "http://www.google.com", "quchentao@163.com")) .license("Apache License") .licenseUrl("http://www.apache.org/licenses/LICENSE-2.0.html") .version("v1") diff --git a/swagger-server/src/main/java/com/example/server/model/Book.java b/swagger-server/src/main/java/com/example/server/model/Book.java index 9bf1f82..a1b3103 100644 --- a/swagger-server/src/main/java/com/example/server/model/Book.java +++ b/swagger-server/src/main/java/com/example/server/model/Book.java @@ -4,7 +4,7 @@ import io.swagger.annotations.ApiModelProperty; /** - *

Created by Damon.Q on 2017/10/27. + *

Created by qct on 2017/10/27. */ @ApiModel public class Book { diff --git a/swagger-server/src/main/java/com/example/server/model/Category.java b/swagger-server/src/main/java/com/example/server/model/Category.java index f1441e9..76381d9 100644 --- a/swagger-server/src/main/java/com/example/server/model/Category.java +++ b/swagger-server/src/main/java/com/example/server/model/Category.java @@ -1,7 +1,7 @@ package com.example.server.model; /** - *

Created by Damon.Q on 2017/10/27. + *

Created by qct on 2017/10/27. */ public class Category { diff --git a/swagger-server/src/main/java/com/example/server/service/BookService.java b/swagger-server/src/main/java/com/example/server/service/BookService.java index eee399a..78545e0 100644 --- a/swagger-server/src/main/java/com/example/server/service/BookService.java +++ b/swagger-server/src/main/java/com/example/server/service/BookService.java @@ -7,7 +7,7 @@ import org.springframework.stereotype.Service; /** - *

Created by Damon.Q on 2017/10/27. + *

Created by qct on 2017/10/27. */ @Service public class BookService { diff --git a/swagger-server/src/main/java/com/example/server/service/CategoryService.java b/swagger-server/src/main/java/com/example/server/service/CategoryService.java index 5710d17..5eb2abf 100644 --- a/swagger-server/src/main/java/com/example/server/service/CategoryService.java +++ b/swagger-server/src/main/java/com/example/server/service/CategoryService.java @@ -6,7 +6,7 @@ import org.springframework.stereotype.Service; /** - *

Created by Damon.Q on 2017/10/27. + *

Created by qct on 2017/10/27. */ @Service public class CategoryService { diff --git a/swagger-server/src/main/resources/swagger.yml b/swagger-server/src/main/resources/swagger.yml index 444e1d6..f1a7cdd 100644 --- a/swagger-server/src/main/resources/swagger.yml +++ b/swagger-server/src/main/resources/swagger.yml @@ -5,9 +5,9 @@ info: title: Swagger Demo termsOfService: 'http://www.apache.org/licenses/LICENSE-2.0.html' contact: - name: Damon + name: qct url: 'http://www.google.com' - email: damon.q@iv66.net + email: quchentao@163.com license: name: Apache License url: 'http://www.apache.org/licenses/LICENSE-2.0.html' diff --git a/swagger-server/src/test/java/com/example/server/api/BookApiMockTest.java b/swagger-server/src/test/java/com/example/server/api/BookApiMockTest.java index 649080c..b430867 100644 --- a/swagger-server/src/test/java/com/example/server/api/BookApiMockTest.java +++ b/swagger-server/src/test/java/com/example/server/api/BookApiMockTest.java @@ -23,7 +23,7 @@ import org.springframework.test.web.servlet.request.MockMvcRequestBuilders; /** - *

Created by Damon on 2017/10/20. + *

Created by qct on 2017/10/20. */ @RunWith(SpringRunner.class) @WebMvcTest(BookApi.class) diff --git a/swagger-server/src/test/java/com/example/server/api/CategoryApiMockTest.java b/swagger-server/src/test/java/com/example/server/api/CategoryApiMockTest.java index 060823a..5526edf 100644 --- a/swagger-server/src/test/java/com/example/server/api/CategoryApiMockTest.java +++ b/swagger-server/src/test/java/com/example/server/api/CategoryApiMockTest.java @@ -22,7 +22,7 @@ import org.springframework.test.web.servlet.request.MockMvcRequestBuilders; /** - *

Created by Damon on 2017/10/20. + *

Created by qct on 2017/10/20. */ @RunWith(SpringRunner.class) @WebMvcTest(CategoryApi.class)