mirror of
https://github.com/chai2010/advanced-go-programming-book.git
synced 2025-05-24 20:52:22 +00:00
vendor: add grpc-gateway v1.4.1
This commit is contained in:
parent
b73a407b8e
commit
c137e47ea5
2
vendor/README.md
vendored
2
vendor/README.md
vendored
@ -7,3 +7,5 @@ TODO
|
||||
- [golang.org/x/net/{context|http2|trace}](https://github.com/golang/net): [32a936](https://github.com/golang/net/tree/32a936f46389aa10549d60bd7833e54b01685d09)
|
||||
- [Protobuf](https://github.com/golang/protobuf): [v1.1.0](https://github.com/golang/protobuf/releases/tag/v1.1.0)
|
||||
- [gRPC](https://github.com/grpc/grpc-go): [v1.13.0](https://github.com/grpc/grpc-go/releases/tag/v1.13.0)
|
||||
- [grpc-gateway](https://github.com/grpc-ecosystem/grpc-gateway): [v1.4.1](https://github.com/grpc-ecosystem/grpc-gateway/releases/tag/v1.4.1)
|
||||
|
||||
|
9
vendor/github.com/grpc-ecosystem/grpc-gateway/.gitignore
generated
vendored
Executable file
9
vendor/github.com/grpc-ecosystem/grpc-gateway/.gitignore
generated
vendored
Executable file
@ -0,0 +1,9 @@
|
||||
_output/
|
||||
.idea
|
||||
|
||||
# Bazel.
|
||||
bazel-bin
|
||||
bazel-genfiles
|
||||
bazel-grpc-gateway
|
||||
bazel-out
|
||||
bazel-testlogs
|
81
vendor/github.com/grpc-ecosystem/grpc-gateway/.travis.yml
generated
vendored
Executable file
81
vendor/github.com/grpc-ecosystem/grpc-gateway/.travis.yml
generated
vendored
Executable file
@ -0,0 +1,81 @@
|
||||
language: go
|
||||
sudo: false
|
||||
go:
|
||||
- 1.9.x
|
||||
- 1.10.x
|
||||
- master
|
||||
go_import_path: github.com/grpc-ecosystem/grpc-gateway
|
||||
cache:
|
||||
directories:
|
||||
- $HOME/local
|
||||
- ${TRAVIS_BUILD_DIR}/examples/browser/node_modules
|
||||
- $HOME/.cache/_grpc_gateway_bazel
|
||||
before_install:
|
||||
- if [ "${USE_BAZEL}" = true ]; then ./.travis/install-bazel.sh $BAZEL_VERSION; fi
|
||||
- test "${USE_BAZEL}" = true || ./.travis/install-protoc.sh $PROTOC_VERSION
|
||||
- test "${USE_BAZEL}" = true || ./.travis/install-swagger-codegen.sh $SWAGGER_CODEGEN_VERSION
|
||||
- test "${USE_BAZEL}" = true || (nvm install $NODE_VERSION && nvm use $NODE_VERSION && node --version)
|
||||
- test "${USE_BAZEL}" = true || go get github.com/golang/lint/golint
|
||||
- test "${USE_BAZEL}" = true || go get github.com/dghubble/sling
|
||||
- test "${USE_BAZEL}" = true || go get github.com/go-resty/resty
|
||||
install:
|
||||
# Make sure externally referenced packages are go-gettable.
|
||||
- test "${USE_BAZEL}" = true ||
|
||||
go get github.com/grpc-ecosystem/grpc-gateway/protoc-gen-grpc-gateway
|
||||
- test "${USE_BAZEL}" = true ||
|
||||
go get github.com/grpc-ecosystem/grpc-gateway/protoc-gen-swagger
|
||||
- test "${USE_BAZEL}" = true ||
|
||||
go get github.com/grpc-ecosystem/grpc-gateway/runtime
|
||||
- test "${USE_BAZEL}" = true ||
|
||||
go get github.com/grpc-ecosystem/grpc-gateway/examples/cmd/example-grpc-server
|
||||
- test "${USE_BAZEL}" = true ||
|
||||
go get github.com/grpc-ecosystem/grpc-gateway/examples/cmd/example-gateway-server
|
||||
|
||||
# Just build if USE_BAZEL
|
||||
- if [ "${USE_BAZEL}" = true ]; then ./.travis/bazel-build.sh; fi
|
||||
before_script:
|
||||
- test "${USE_BAZEL}" = true ||
|
||||
(cd examples/browser && npm install)
|
||||
script:
|
||||
# Make sure examples of generated files are up-to-date
|
||||
- test "${USE_BAZEL}" = true ||
|
||||
(make realclean && make examples SWAGGER_CODEGEN="java -jar $HOME/local/swagger-codegen-cli.jar")
|
||||
- if [ -z "${USE_BAZEL}" ] &&
|
||||
(go version | grep -q "${GO_VERSION_TO_DIFF_TEST}") &&
|
||||
[ -z "${GATEWAY_PLUGIN_FLAGS}" ]; then
|
||||
test -z "$(git status --porcelain)" || (git status; git diff; exit 1);
|
||||
fi
|
||||
|
||||
# Unit tests, integration tests and code health checks
|
||||
- test "${USE_BAZEL}" = true ||
|
||||
env GLOG_logtostderr=1 go test -race -v github.com/grpc-ecosystem/grpc-gateway/...
|
||||
- test "${USE_BAZEL}" = true ||
|
||||
make lint
|
||||
- test "${USE_BAZEL}" = true ||
|
||||
sh -c 'cd examples/browser && node ./node_modules/gulp/bin/gulp'
|
||||
|
||||
- if [ "${USE_BAZEL}" = true ]; then ./.travis/bazel-test.sh; fi
|
||||
|
||||
# test coverage
|
||||
- if (go version | grep -q "${GO_VERSION_TO_DIFF_TEST}") &&
|
||||
[ -z "${GATEWAY_PLUGIN_FLAGS}" ]; then
|
||||
env GLOG_logtostderr=1 ./bin/coverage;
|
||||
fi
|
||||
after_success:
|
||||
- bash <(curl -s https://codecov.io/bash)
|
||||
|
||||
env:
|
||||
global:
|
||||
- "PATH=$PATH:$HOME/local/bin"
|
||||
- GO_VERSION_TO_DIFF_TEST="go version go1\.10\.[0-9]\+ linux/amd64"
|
||||
- BAZEL_VERSION=0.12.0
|
||||
- NODE_VERSION=v6.1
|
||||
- PROTOC_VERSION=3.1.0
|
||||
- SWAGGER_CODEGEN_VERSION=2.2.2
|
||||
matrix:
|
||||
- GATEWAY_PLUGIN_FLAGS=
|
||||
- GATEWAY_PLUGIN_FLAGS=request_context=false
|
||||
matrix:
|
||||
include:
|
||||
- go: master
|
||||
env: USE_BAZEL=true
|
10
vendor/github.com/grpc-ecosystem/grpc-gateway/.travis/bazel-build.sh
generated
vendored
Executable file
10
vendor/github.com/grpc-ecosystem/grpc-gateway/.travis/bazel-build.sh
generated
vendored
Executable file
@ -0,0 +1,10 @@
|
||||
#!/bin/sh -eu
|
||||
|
||||
bazel \
|
||||
--batch \
|
||||
--output_base=$HOME/.cache/_grpc_gateway_bazel \
|
||||
--host_jvm_args=-Xmx500m \
|
||||
--host_jvm_args=-Xms500m \
|
||||
build \
|
||||
--local_resources=400,1,1.0 \
|
||||
//...
|
12
vendor/github.com/grpc-ecosystem/grpc-gateway/.travis/bazel-test.sh
generated
vendored
Executable file
12
vendor/github.com/grpc-ecosystem/grpc-gateway/.travis/bazel-test.sh
generated
vendored
Executable file
@ -0,0 +1,12 @@
|
||||
#!/bin/sh -eu
|
||||
|
||||
bazel \
|
||||
--batch \
|
||||
--output_base=$HOME/.cache/_grpc_gateway_bazel \
|
||||
--host_jvm_args=-Xmx500m \
|
||||
--host_jvm_args=-Xms500m \
|
||||
test \
|
||||
--local_resources=400,1,1.0 \
|
||||
--test_output=errors \
|
||||
--features=race \
|
||||
//...
|
20
vendor/github.com/grpc-ecosystem/grpc-gateway/.travis/install-bazel.sh
generated
vendored
Executable file
20
vendor/github.com/grpc-ecosystem/grpc-gateway/.travis/install-bazel.sh
generated
vendored
Executable file
@ -0,0 +1,20 @@
|
||||
#!/bin/sh -eu
|
||||
|
||||
bazel_version=$1
|
||||
|
||||
if test -z "${bazel_version}"; then
|
||||
echo "Usage: .travis/install-bazel.sh bazel-version"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [[ "${TRAVIS_OS_NAME}" == "osx" ]]; then
|
||||
OS=darwin
|
||||
else
|
||||
OS=linux
|
||||
fi
|
||||
|
||||
filename=bazel-${bazel_version}-installer-${OS}-x86_64.sh
|
||||
wget https://github.com/bazelbuild/bazel/releases/download/${bazel_version}/${filename}
|
||||
chmod +x $filename
|
||||
./$filename --user
|
||||
rm -f $filename
|
19
vendor/github.com/grpc-ecosystem/grpc-gateway/.travis/install-protoc.sh
generated
vendored
Executable file
19
vendor/github.com/grpc-ecosystem/grpc-gateway/.travis/install-protoc.sh
generated
vendored
Executable file
@ -0,0 +1,19 @@
|
||||
#!/bin/sh -eu
|
||||
protoc_version=$1
|
||||
if test -z "${protoc_version}"; then
|
||||
echo "Usage: .travis/install-protoc.sh protoc-version"
|
||||
exit 1
|
||||
fi
|
||||
if [ "`$HOME/local/bin/protoc-${protoc_version} --version 2>/dev/null | cut -d' ' -f 2`" != ${protoc_version} ]; then
|
||||
rm -rf $HOME/local/bin $HOME/local/include
|
||||
|
||||
mkdir -p $HOME/tmp $HOME/local
|
||||
cd $HOME/tmp
|
||||
wget https://github.com/google/protobuf/releases/download/v${protoc_version}/protoc-${protoc_version}-linux-x86_64.zip
|
||||
unzip protoc-${protoc_version}-linux-x86_64.zip
|
||||
mv bin $HOME/local/bin
|
||||
mv include $HOME/local/include
|
||||
fi
|
||||
|
||||
echo \$ $HOME/local/bin/protoc --version
|
||||
$HOME/local/bin/protoc --version
|
9
vendor/github.com/grpc-ecosystem/grpc-gateway/.travis/install-swagger-codegen.sh
generated
vendored
Executable file
9
vendor/github.com/grpc-ecosystem/grpc-gateway/.travis/install-swagger-codegen.sh
generated
vendored
Executable file
@ -0,0 +1,9 @@
|
||||
#!/bin/sh -eu
|
||||
codegen_version=$1
|
||||
if test -z "${codegen_version}"; then
|
||||
echo "Usage: .travis/install-swagger-codegen.sh codegen-version"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
wget http://repo1.maven.org/maven2/io/swagger/swagger-codegen-cli/${codegen_version}/swagger-codegen-cli-${codegen_version}.jar \
|
||||
-O $HOME/local/swagger-codegen-cli.jar
|
23
vendor/github.com/grpc-ecosystem/grpc-gateway/BUILD
generated
vendored
Executable file
23
vendor/github.com/grpc-ecosystem/grpc-gateway/BUILD
generated
vendored
Executable file
@ -0,0 +1,23 @@
|
||||
load("@bazel_gazelle//:def.bzl", "gazelle")
|
||||
|
||||
# gazelle:exclude third_party
|
||||
|
||||
gazelle(
|
||||
name = "gazelle_diff",
|
||||
mode = "diff",
|
||||
prefix = "github.com/grpc-ecosystem/grpc-gateway",
|
||||
)
|
||||
|
||||
gazelle(
|
||||
name = "gazelle_fix",
|
||||
mode = "fix",
|
||||
prefix = "github.com/grpc-ecosystem/grpc-gateway",
|
||||
)
|
||||
|
||||
package_group(
|
||||
name = "generators",
|
||||
packages = [
|
||||
"//protoc-gen-grpc-gateway/...",
|
||||
"//protoc-gen-swagger/...",
|
||||
],
|
||||
)
|
590
vendor/github.com/grpc-ecosystem/grpc-gateway/CHANGELOG.md
generated
vendored
Executable file
590
vendor/github.com/grpc-ecosystem/grpc-gateway/CHANGELOG.md
generated
vendored
Executable file
@ -0,0 +1,590 @@
|
||||
# Change Log
|
||||
|
||||
## [v1.4.1](https://grpc-ecosystem.github.io/grpc-gateway/grpc-ecosystem/grpc-gateway/tree/v1.4.1) (2018-05-23)
|
||||
[Full Changelog](https://grpc-ecosystem.github.io/grpc-gateway/grpc-ecosystem/grpc-gateway/compare/v1.4.0...v1.4.1)
|
||||
|
||||
**Closed issues:**
|
||||
|
||||
- Next release ? [\#605](https://github.com/grpc-ecosystem/grpc-gateway/issues/605)
|
||||
|
||||
**Merged pull requests:**
|
||||
|
||||
- Translate gRPC FailedPrecondition as HTTP PreconditionFailed [\#657](https://github.com/grpc-ecosystem/grpc-gateway/pull/657) ([slomek](https://github.com/slomek))
|
||||
|
||||
## [v1.4.0](https://grpc-ecosystem.github.io/grpc-gateway/grpc-ecosystem/grpc-gateway/tree/v1.4.0) (2018-05-20)
|
||||
[Full Changelog](https://grpc-ecosystem.github.io/grpc-gateway/grpc-ecosystem/grpc-gateway/compare/v1.3.1...v1.4.0)
|
||||
|
||||
**Implemented enhancements:**
|
||||
|
||||
- customize the error return [\#405](https://github.com/grpc-ecosystem/grpc-gateway/issues/405)
|
||||
- Support map type in query string [\#316](https://github.com/grpc-ecosystem/grpc-gateway/issues/316)
|
||||
- gRPC gateway Bazel build rules [\#66](https://github.com/grpc-ecosystem/grpc-gateway/issues/66)
|
||||
- Support bytes fields in path parameter [\#5](https://github.com/grpc-ecosystem/grpc-gateway/issues/5)
|
||||
|
||||
**Closed issues:**
|
||||
|
||||
- the protoc\_gen\_swagger bazel rule generates non working import path. [\#633](https://github.com/grpc-ecosystem/grpc-gateway/issues/633)
|
||||
- code.NotFound should return a 404 instead of a 405 [\#630](https://github.com/grpc-ecosystem/grpc-gateway/issues/630)
|
||||
- field in query path not found [\#629](https://github.com/grpc-ecosystem/grpc-gateway/issues/629)
|
||||
- how to use client pool in the gateway? [\#612](https://github.com/grpc-ecosystem/grpc-gateway/issues/612)
|
||||
- pass http request uri to grpc server [\#587](https://github.com/grpc-ecosystem/grpc-gateway/issues/587)
|
||||
- bidi streams have racy read caused by goroutine that closes over local variable [\#583](https://github.com/grpc-ecosystem/grpc-gateway/issues/583)
|
||||
- Streamed response is not valid json \(or: is this the expected format?\) [\#581](https://github.com/grpc-ecosystem/grpc-gateway/issues/581)
|
||||
- Import "google/api/annotations.proto" was not found or had errors. [\#574](https://github.com/grpc-ecosystem/grpc-gateway/issues/574)
|
||||
- is there has a way to let grpc-gateway server support multiple endpoints [\#573](https://github.com/grpc-ecosystem/grpc-gateway/issues/573)
|
||||
- would it be possible to avoid vendoring "third\_party/googleapis/" [\#572](https://github.com/grpc-ecosystem/grpc-gateway/issues/572)
|
||||
- Path parameters can't have URL encoded values [\#566](https://github.com/grpc-ecosystem/grpc-gateway/issues/566)
|
||||
- Is there anyway to output the access log of grpc gateway [\#556](https://github.com/grpc-ecosystem/grpc-gateway/issues/556)
|
||||
- proto: no slice oenc for \*reflect.rtype = \[\]\*reflect.rtype [\#551](https://github.com/grpc-ecosystem/grpc-gateway/issues/551)
|
||||
- autoreconf not found [\#549](https://github.com/grpc-ecosystem/grpc-gateway/issues/549)
|
||||
- \[feature\]combine expvar into grpc-gateway [\#542](https://github.com/grpc-ecosystem/grpc-gateway/issues/542)
|
||||
- Source code still imports "golang.org/x/net/context" [\#533](https://github.com/grpc-ecosystem/grpc-gateway/issues/533)
|
||||
- Incorrect error message when execute protoc-gen-grpc-gateway to HTTP GET method with BODY [\#531](https://github.com/grpc-ecosystem/grpc-gateway/issues/531)
|
||||
- add support for the google.api.HttpBody proto as a request [\#528](https://github.com/grpc-ecosystem/grpc-gateway/issues/528)
|
||||
- Prefixed model names in generated swagger spec [\#525](https://github.com/grpc-ecosystem/grpc-gateway/issues/525)
|
||||
- Better format for error.message in stream [\#519](https://github.com/grpc-ecosystem/grpc-gateway/issues/519)
|
||||
- Getting this on go get . in the src directory: HelloService.pb.go:20:8 - no Go files in \go\src\google\api [\#518](https://github.com/grpc-ecosystem/grpc-gateway/issues/518)
|
||||
- ci: set up codecov [\#513](https://github.com/grpc-ecosystem/grpc-gateway/issues/513)
|
||||
- protoc-gen-swagger not using description field of info swagger object [\#511](https://github.com/grpc-ecosystem/grpc-gateway/issues/511)
|
||||
- Cut a minor release for https://github.com/grpc-ecosystem/grpc-gateway/issues/495 [\#506](https://github.com/grpc-ecosystem/grpc-gateway/issues/506)
|
||||
- bug: uncapitalized service name causes runtime error unknown function in service.pb.gw.go [\#484](https://github.com/grpc-ecosystem/grpc-gateway/issues/484)
|
||||
- RESOURCE\_EXHAUSTED -\> 503 [\#431](https://github.com/grpc-ecosystem/grpc-gateway/issues/431)
|
||||
- Adding authentication definitions to generated swagger files [\#428](https://github.com/grpc-ecosystem/grpc-gateway/issues/428)
|
||||
- Move to stdlib context over x/net/context [\#326](https://github.com/grpc-ecosystem/grpc-gateway/issues/326)
|
||||
- deprecate 1.6 and embrace \(\*http.Request\).Context by default [\#313](https://github.com/grpc-ecosystem/grpc-gateway/issues/313)
|
||||
|
||||
**Merged pull requests:**
|
||||
|
||||
- Generate a single swagger definition on demand [\#658](https://github.com/grpc-ecosystem/grpc-gateway/pull/658) ([achew22](https://github.com/achew22))
|
||||
- Regenerate example files [\#656](https://github.com/grpc-ecosystem/grpc-gateway/pull/656) ([achew22](https://github.com/achew22))
|
||||
- Add v1.4.0 changelog [\#655](https://github.com/grpc-ecosystem/grpc-gateway/pull/655) ([achew22](https://github.com/achew22))
|
||||
- Add README.md for examples [\#645](https://github.com/grpc-ecosystem/grpc-gateway/pull/645) ([liukgg](https://github.com/liukgg))
|
||||
- JSONPb marshaler panics if input is nil interface [\#639](https://github.com/grpc-ecosystem/grpc-gateway/pull/639) ([jhump](https://github.com/jhump))
|
||||
- provide access to underlying \*json.Decoder from JSONPb.NewDecoder [\#637](https://github.com/grpc-ecosystem/grpc-gateway/pull/637) ([jhump](https://github.com/jhump))
|
||||
- fix compile errors caused by protobuf finally merging their dev branch to master [\#636](https://github.com/grpc-ecosystem/grpc-gateway/pull/636) ([jhump](https://github.com/jhump))
|
||||
- Generate import mappings. [\#635](https://github.com/grpc-ecosystem/grpc-gateway/pull/635) ([ensonic](https://github.com/ensonic))
|
||||
- Add support for the grpc\_api\_configuration option in the bazel rule. [\#632](https://github.com/grpc-ecosystem/grpc-gateway/pull/632) ([ensonic](https://github.com/ensonic))
|
||||
- Use repo relative labels in protoc-gen-swagger [\#631](https://github.com/grpc-ecosystem/grpc-gateway/pull/631) ([achew22](https://github.com/achew22))
|
||||
- Correct dependencies in Makefile [\#626](https://github.com/grpc-ecosystem/grpc-gateway/pull/626) ([yugui](https://github.com/yugui))
|
||||
- Avoid timing issues in the integration tests [\#624](https://github.com/grpc-ecosystem/grpc-gateway/pull/624) ([yugui](https://github.com/yugui))
|
||||
- Fix typos in gRPC API Configuration usage documentation [\#623](https://github.com/grpc-ecosystem/grpc-gateway/pull/623) ([hacst](https://github.com/hacst))
|
||||
- Skip unnecessary steps in USE\_BAZEL builds on TravisCI [\#622](https://github.com/grpc-ecosystem/grpc-gateway/pull/622) ([yugui](https://github.com/yugui))
|
||||
- Support param for field from Oneof definition. [\#621](https://github.com/grpc-ecosystem/grpc-gateway/pull/621) ([bonafideyan](https://github.com/bonafideyan))
|
||||
- Fixes file integrity errors on TravisCI [\#619](https://github.com/grpc-ecosystem/grpc-gateway/pull/619) ([yugui](https://github.com/yugui))
|
||||
- Reorganize examples [\#618](https://github.com/grpc-ecosystem/grpc-gateway/pull/618) ([yugui](https://github.com/yugui))
|
||||
- Update dependency declarations in the Makefile [\#617](https://github.com/grpc-ecosystem/grpc-gateway/pull/617) ([yugui](https://github.com/yugui))
|
||||
- Support delete method in swagger generator [\#616](https://github.com/grpc-ecosystem/grpc-gateway/pull/616) ([blackdahila](https://github.com/blackdahila))
|
||||
- feat\(bazel\): Add rule for generating .swagger.json files [\#613](https://github.com/grpc-ecosystem/grpc-gateway/pull/613) ([mrmeku](https://github.com/mrmeku))
|
||||
- Support UNIX domain socket in the example servers [\#609](https://github.com/grpc-ecosystem/grpc-gateway/pull/609) ([yugui](https://github.com/yugui))
|
||||
- misspelling [\#601](https://github.com/grpc-ecosystem/grpc-gateway/pull/601) ([chemidy](https://github.com/chemidy))
|
||||
- Pulled out parseReq func into a generic package + tests [\#600](https://github.com/grpc-ecosystem/grpc-gateway/pull/600) ([f0rmiga](https://github.com/f0rmiga))
|
||||
- Added Bazel support [\#599](https://github.com/grpc-ecosystem/grpc-gateway/pull/599) ([f0rmiga](https://github.com/f0rmiga))
|
||||
- Add basic docs section [\#597](https://github.com/grpc-ecosystem/grpc-gateway/pull/597) ([achew22](https://github.com/achew22))
|
||||
- Upgrade to go1.10 and regenerate [\#596](https://github.com/grpc-ecosystem/grpc-gateway/pull/596) ([achew22](https://github.com/achew22))
|
||||
- Support cases where the request is done with transfer-encoding chunked [\#589](https://github.com/grpc-ecosystem/grpc-gateway/pull/589) ([jacksontj](https://github.com/jacksontj))
|
||||
- Support multiple metadata annotators [\#586](https://github.com/grpc-ecosystem/grpc-gateway/pull/586) ([dmacthedestroyer](https://github.com/dmacthedestroyer))
|
||||
- Changed to use more appropriate http status code for ResourceExhausted [\#580](https://github.com/grpc-ecosystem/grpc-gateway/pull/580) ([eleniums](https://github.com/eleniums))
|
||||
- fix racy access of err variable [\#575](https://github.com/grpc-ecosystem/grpc-gateway/pull/575) ([jhump](https://github.com/jhump))
|
||||
- runtime: return 503 not 403 with ResourceExhausted. [\#569](https://github.com/grpc-ecosystem/grpc-gateway/pull/569) ([hexfusion](https://github.com/hexfusion))
|
||||
- \[\]byte in query now uses base64.StdEncoding [\#565](https://github.com/grpc-ecosystem/grpc-gateway/pull/565) ([lucasvo](https://github.com/lucasvo))
|
||||
- Add 3rd party rpc protos in order to have access to status and error [\#563](https://github.com/grpc-ecosystem/grpc-gateway/pull/563) ([rvegas](https://github.com/rvegas))
|
||||
- Add details to stream error response [\#561](https://github.com/grpc-ecosystem/grpc-gateway/pull/561) ([johanbrandhorst](https://github.com/johanbrandhorst))
|
||||
- fix noenc error by fixing Details error field [\#557](https://github.com/grpc-ecosystem/grpc-gateway/pull/557) ([srenatus](https://github.com/srenatus))
|
||||
- error details: add @type key by switching to any.Any [\#553](https://github.com/grpc-ecosystem/grpc-gateway/pull/553) ([srenatus](https://github.com/srenatus))
|
||||
- Add a FAQ [\#550](https://github.com/grpc-ecosystem/grpc-gateway/pull/550) ([achew22](https://github.com/achew22))
|
||||
- Add security fields support to protoc-gen-swagger [\#547](https://github.com/grpc-ecosystem/grpc-gateway/pull/547) ([ivucica](https://github.com/ivucica))
|
||||
- Omit well-known type definitions from swagger output [\#541](https://github.com/grpc-ecosystem/grpc-gateway/pull/541) ([alexleigh](https://github.com/alexleigh))
|
||||
- Use importPath to set package name rather than package path. [\#537](https://github.com/grpc-ecosystem/grpc-gateway/pull/537) ([rwlincoln](https://github.com/rwlincoln))
|
||||
- Support for map type in query string [\#535](https://github.com/grpc-ecosystem/grpc-gateway/pull/535) ([adamstruck](https://github.com/adamstruck))
|
||||
- Fix error message in protoc-gen-grpc-gateway \(for \#531\) [\#532](https://github.com/grpc-ecosystem/grpc-gateway/pull/532) ([budougumi0617](https://github.com/budougumi0617))
|
||||
- runtime: support FieldMask as query param [\#529](https://github.com/grpc-ecosystem/grpc-gateway/pull/529) ([glerchundi](https://github.com/glerchundi))
|
||||
- Fix decoding empty request body [\#527](https://github.com/grpc-ecosystem/grpc-gateway/pull/527) ([syhpoon](https://github.com/syhpoon))
|
||||
- Add description, summary and tags fields in operationObject \(swagger\) [\#526](https://github.com/grpc-ecosystem/grpc-gateway/pull/526) ([devnull-](https://github.com/devnull-))
|
||||
- Converts the first letter of service name to uppercase [\#522](https://github.com/grpc-ecosystem/grpc-gateway/pull/522) ([thurt](https://github.com/thurt))
|
||||
- Add support for basic gRPC API Configuration YAML files [\#521](https://github.com/grpc-ecosystem/grpc-gateway/pull/521) ([hacst](https://github.com/hacst))
|
||||
- Fix travis to only difftest on go 1.9 [\#520](https://github.com/grpc-ecosystem/grpc-gateway/pull/520) ([achew22](https://github.com/achew22))
|
||||
- add error details to error json [\#515](https://github.com/grpc-ecosystem/grpc-gateway/pull/515) ([srenatus](https://github.com/srenatus))
|
||||
- ci: add codecov [\#514](https://github.com/grpc-ecosystem/grpc-gateway/pull/514) ([tmc](https://github.com/tmc))
|
||||
- Generate "Description" and "TermsOfService" fields [\#512](https://github.com/grpc-ecosystem/grpc-gateway/pull/512) ([lukasmalkmus](https://github.com/lukasmalkmus))
|
||||
- Release 1.3.1 [\#509](https://github.com/grpc-ecosystem/grpc-gateway/pull/509) ([tmc](https://github.com/tmc))
|
||||
- Support mapping bytes to \[\]byte [\#489](https://github.com/grpc-ecosystem/grpc-gateway/pull/489) ([loderunner](https://github.com/loderunner))
|
||||
- properly respect file flag for protoc-gen-swagger [\#293](https://github.com/grpc-ecosystem/grpc-gateway/pull/293) ([tmc](https://github.com/tmc))
|
||||
|
||||
## [v1.3.1](https://grpc-ecosystem.github.io/grpc-gateway/grpc-ecosystem/grpc-gateway/tree/v1.3.1) (2017-12-23)
|
||||
[Full Changelog](https://grpc-ecosystem.github.io/grpc-gateway/grpc-ecosystem/grpc-gateway/compare/v1.3.0...v1.3.1)
|
||||
|
||||
**Implemented enhancements:**
|
||||
|
||||
- Support import\_path? [\#443](https://github.com/grpc-ecosystem/grpc-gateway/issues/443)
|
||||
|
||||
**Closed issues:**
|
||||
|
||||
- protoc-gen-swagger missing definition issue [\#504](https://github.com/grpc-ecosystem/grpc-gateway/issues/504)
|
||||
- Are gateway metrics available? [\#498](https://github.com/grpc-ecosystem/grpc-gateway/issues/498)
|
||||
- Backwards incompatible change to chunked encoding [\#495](https://github.com/grpc-ecosystem/grpc-gateway/issues/495)
|
||||
- Map of list [\#493](https://github.com/grpc-ecosystem/grpc-gateway/issues/493)
|
||||
- Repeated nested messages doesn't work in GET requests queries. [\#492](https://github.com/grpc-ecosystem/grpc-gateway/issues/492)
|
||||
- How to run `makefile` for this repo? [\#491](https://github.com/grpc-ecosystem/grpc-gateway/issues/491)
|
||||
- all SubConns are in TransientFailure [\#490](https://github.com/grpc-ecosystem/grpc-gateway/issues/490)
|
||||
- Appengine Standard Environment: "not an Appengine context" [\#487](https://github.com/grpc-ecosystem/grpc-gateway/issues/487)
|
||||
- Enum Path Parameter to Swagger [\#486](https://github.com/grpc-ecosystem/grpc-gateway/issues/486)
|
||||
- Should v1.3 be also tagged as v1.3.0? [\#483](https://github.com/grpc-ecosystem/grpc-gateway/issues/483)
|
||||
- HTTP response is not correct json encoded if the grpc return stream of objects. [\#481](https://github.com/grpc-ecosystem/grpc-gateway/issues/481)
|
||||
- Support JSON-RPCv2 [\#477](https://github.com/grpc-ecosystem/grpc-gateway/issues/477)
|
||||
- Naming convention? [\#475](https://github.com/grpc-ecosystem/grpc-gateway/issues/475)
|
||||
- Request context not being used [\#470](https://github.com/grpc-ecosystem/grpc-gateway/issues/470)
|
||||
- Generate Swagger documentation [\#469](https://github.com/grpc-ecosystem/grpc-gateway/issues/469)
|
||||
- Support Request | make: swagger-codegen: Command not found [\#468](https://github.com/grpc-ecosystem/grpc-gateway/issues/468)
|
||||
- How do you generate a swagger yaml file instead of json? [\#467](https://github.com/grpc-ecosystem/grpc-gateway/issues/467)
|
||||
- Add default support for proto over http [\#465](https://github.com/grpc-ecosystem/grpc-gateway/issues/465)
|
||||
- Allow compiling the gateway code to a different go package [\#463](https://github.com/grpc-ecosystem/grpc-gateway/issues/463)
|
||||
- support google.api.HttpBody [\#457](https://github.com/grpc-ecosystem/grpc-gateway/issues/457)
|
||||
- \[swagger bug\] with google/protobuf/wrappers.proto [\#453](https://github.com/grpc-ecosystem/grpc-gateway/issues/453)
|
||||
- The tensorflow serving support RESTful api:{"error":"json: cannot unmarshal object into Go value of type \[\]json.RawMessage","code":3} [\#444](https://github.com/grpc-ecosystem/grpc-gateway/issues/444)
|
||||
- choose some return fields omit or not omit by configure [\#439](https://github.com/grpc-ecosystem/grpc-gateway/issues/439)
|
||||
- swagger title and version hardcoded [\#437](https://github.com/grpc-ecosystem/grpc-gateway/issues/437)
|
||||
- Change the path though http header [\#424](https://github.com/grpc-ecosystem/grpc-gateway/issues/424)
|
||||
- google/protobuf/descriptor.proto: File not found [\#422](https://github.com/grpc-ecosystem/grpc-gateway/issues/422)
|
||||
- Output file will not compile if the .proto file does not contain a service with parameters in the url path [\#389](https://github.com/grpc-ecosystem/grpc-gateway/issues/389)
|
||||
- Scaling support [\#381](https://github.com/grpc-ecosystem/grpc-gateway/issues/381)
|
||||
- I cannot get the default value from client side [\#380](https://github.com/grpc-ecosystem/grpc-gateway/issues/380)
|
||||
- Problem with Generated annotations.proto file [\#377](https://github.com/grpc-ecosystem/grpc-gateway/issues/377)
|
||||
- Release 1.3.0 [\#357](https://github.com/grpc-ecosystem/grpc-gateway/issues/357)
|
||||
- swagger: Unclear comments' parser behaviour [\#352](https://github.com/grpc-ecosystem/grpc-gateway/issues/352)
|
||||
- Support semicolon syntax in go\_package protobuf option [\#341](https://github.com/grpc-ecosystem/grpc-gateway/issues/341)
|
||||
- Add SOAP proxy [\#339](https://github.com/grpc-ecosystem/grpc-gateway/issues/339)
|
||||
- Support combination of query params and body for POSTs [\#234](https://github.com/grpc-ecosystem/grpc-gateway/issues/234)
|
||||
- Interceptor [\#221](https://github.com/grpc-ecosystem/grpc-gateway/issues/221)
|
||||
|
||||
**Merged pull requests:**
|
||||
|
||||
- Add support for --Import\_path [\#507](https://github.com/grpc-ecosystem/grpc-gateway/pull/507) ([achew22](https://github.com/achew22))
|
||||
- Fix \#504 Missing Definitions [\#505](https://github.com/grpc-ecosystem/grpc-gateway/pull/505) ([warmans](https://github.com/warmans))
|
||||
- Maintain default delimiter of newline [\#497](https://github.com/grpc-ecosystem/grpc-gateway/pull/497) ([jacksontj](https://github.com/jacksontj))
|
||||
- Fix gen-swagger to support more well known types [\#496](https://github.com/grpc-ecosystem/grpc-gateway/pull/496) ([shouichi](https://github.com/shouichi))
|
||||
- Use golang/protobuf instead of gogo/protobuf [\#494](https://github.com/grpc-ecosystem/grpc-gateway/pull/494) ([shouichi](https://github.com/shouichi))
|
||||
- Fix stream delimiters [\#488](https://github.com/grpc-ecosystem/grpc-gateway/pull/488) ([afking](https://github.com/afking))
|
||||
- ForwardResponseStream status code errors [\#482](https://github.com/grpc-ecosystem/grpc-gateway/pull/482) ([afking](https://github.com/afking))
|
||||
- protoc-gen-grpc-gateway: flip request\_context default to true [\#474](https://github.com/grpc-ecosystem/grpc-gateway/pull/474) ([srenatus](https://github.com/srenatus))
|
||||
- grpc-gateway/generator: respect full package [\#462](https://github.com/grpc-ecosystem/grpc-gateway/pull/462) ([glerchundi](https://github.com/glerchundi))
|
||||
- Add proto marshaller for proto-over-http [\#459](https://github.com/grpc-ecosystem/grpc-gateway/pull/459) ([MatthewDolan](https://github.com/MatthewDolan))
|
||||
|
||||
## [v1.3.0](https://grpc-ecosystem.github.io/grpc-gateway/grpc-ecosystem/grpc-gateway/tree/v1.3.0) (2017-11-03)
|
||||
[Full Changelog](https://grpc-ecosystem.github.io/grpc-gateway/grpc-ecosystem/grpc-gateway/compare/v1.3...v1.3.0)
|
||||
|
||||
## [v1.3](https://grpc-ecosystem.github.io/grpc-gateway/grpc-ecosystem/grpc-gateway/tree/v1.3) (2017-11-03)
|
||||
[Full Changelog](https://grpc-ecosystem.github.io/grpc-gateway/grpc-ecosystem/grpc-gateway/compare/v1.2.2...v1.3)
|
||||
|
||||
**Closed issues:**
|
||||
|
||||
- Extract basic auth from URL [\#480](https://github.com/grpc-ecosystem/grpc-gateway/issues/480)
|
||||
- Lack of "google/protobuf/descriptor.proto" [\#476](https://github.com/grpc-ecosystem/grpc-gateway/issues/476)
|
||||
- question: how to indicate whether call is through grpc gateway [\#456](https://github.com/grpc-ecosystem/grpc-gateway/issues/456)
|
||||
- How to define this restful api using pb? [\#452](https://github.com/grpc-ecosystem/grpc-gateway/issues/452)
|
||||
- how to output field as an array of json values? [\#449](https://github.com/grpc-ecosystem/grpc-gateway/issues/449)
|
||||
- How do I override maxMsgSize? [\#445](https://github.com/grpc-ecosystem/grpc-gateway/issues/445)
|
||||
- OpenAPI spec is generated with duplicated operation IDs. [\#442](https://github.com/grpc-ecosystem/grpc-gateway/issues/442)
|
||||
- This process seems to generate conflicting code with go-micro [\#440](https://github.com/grpc-ecosystem/grpc-gateway/issues/440)
|
||||
- any way to let int64 marshal to int not string? [\#438](https://github.com/grpc-ecosystem/grpc-gateway/issues/438)
|
||||
- Support streaming [\#435](https://github.com/grpc-ecosystem/grpc-gateway/issues/435)
|
||||
- Update DO NOT EDIT header in generated files [\#433](https://github.com/grpc-ecosystem/grpc-gateway/issues/433)
|
||||
- generate code use context not "golang.org/x/net/context" [\#430](https://github.com/grpc-ecosystem/grpc-gateway/issues/430)
|
||||
- Replace \n with spaces in swagger definitions [\#426](https://github.com/grpc-ecosystem/grpc-gateway/issues/426)
|
||||
- \[question\]Is there any example for http headers process? [\#420](https://github.com/grpc-ecosystem/grpc-gateway/issues/420)
|
||||
- Is there any way to support a multipart form request? [\#410](https://github.com/grpc-ecosystem/grpc-gateway/issues/410)
|
||||
- Not able to pass allow\_delete\_body to protoc-gen-grpc-gateway. [\#402](https://github.com/grpc-ecosystem/grpc-gateway/issues/402)
|
||||
- returned errors should conform to google.rpc.Status [\#399](https://github.com/grpc-ecosystem/grpc-gateway/issues/399)
|
||||
- Is there any way to generate python gateway code? [\#398](https://github.com/grpc-ecosystem/grpc-gateway/issues/398)
|
||||
- how to handle arbitrary \(json\) structs [\#395](https://github.com/grpc-ecosystem/grpc-gateway/issues/395)
|
||||
- \[question\]can give a url with query sting demo? [\#394](https://github.com/grpc-ecosystem/grpc-gateway/issues/394)
|
||||
- \[question\]the swagger url generated is what? [\#393](https://github.com/grpc-ecosystem/grpc-gateway/issues/393)
|
||||
- \[Question\] How do I use semantic versions? [\#392](https://github.com/grpc-ecosystem/grpc-gateway/issues/392)
|
||||
- \[question\]how to run examples? [\#391](https://github.com/grpc-ecosystem/grpc-gateway/issues/391)
|
||||
- Why does gateway use ServerMetadata? [\#388](https://github.com/grpc-ecosystem/grpc-gateway/issues/388)
|
||||
- Can't generate code with last version [\#384](https://github.com/grpc-ecosystem/grpc-gateway/issues/384)
|
||||
- is it ready for production use? [\#382](https://github.com/grpc-ecosystem/grpc-gateway/issues/382)
|
||||
- Support Google Flatbuffers [\#376](https://github.com/grpc-ecosystem/grpc-gateway/issues/376)
|
||||
- calling Enum by string name in requests using gogo/protobuf results in error. [\#372](https://github.com/grpc-ecosystem/grpc-gateway/issues/372)
|
||||
- Definitions containing URLs with trailing slashes won't compile [\#370](https://github.com/grpc-ecosystem/grpc-gateway/issues/370)
|
||||
- Should metadata annotator include the headers from incoming matcher? [\#368](https://github.com/grpc-ecosystem/grpc-gateway/issues/368)
|
||||
- metadata.NewOutgoingContext is undefined [\#364](https://github.com/grpc-ecosystem/grpc-gateway/issues/364)
|
||||
- Why does not gateway forward headers as-is? [\#311](https://github.com/grpc-ecosystem/grpc-gateway/issues/311)
|
||||
- Question: Why passing context to RegisterMyServiceHandler is required? [\#301](https://github.com/grpc-ecosystem/grpc-gateway/issues/301)
|
||||
- Allow whitelisting of particular HTTP headers to map to metadata. [\#253](https://github.com/grpc-ecosystem/grpc-gateway/issues/253)
|
||||
- Swagger definitions don't handle parameters that are not explicitly required in the url [\#159](https://github.com/grpc-ecosystem/grpc-gateway/issues/159)
|
||||
|
||||
**Merged pull requests:**
|
||||
|
||||
- Fix wrong method names [\#603](https://github.com/grpc-ecosystem/grpc-gateway/pull/603) ([yugui](https://github.com/yugui))
|
||||
- Streaming forward handler fix chunk encoding [\#479](https://github.com/grpc-ecosystem/grpc-gateway/pull/479) ([afking](https://github.com/afking))
|
||||
- Fix logic handling primitive wrapper in URL params [\#478](https://github.com/grpc-ecosystem/grpc-gateway/pull/478) ([tgeng](https://github.com/tgeng))
|
||||
- runtime: use r.Context\(\) [\#473](https://github.com/grpc-ecosystem/grpc-gateway/pull/473) ([srenatus](https://github.com/srenatus))
|
||||
- Optional SourceCodeInfo [\#466](https://github.com/grpc-ecosystem/grpc-gateway/pull/466) ([afking](https://github.com/afking))
|
||||
- Some steps to fix Travis CI [\#461](https://github.com/grpc-ecosystem/grpc-gateway/pull/461) ([AlekSi](https://github.com/AlekSi))
|
||||
- fix 2 typos in Registry.SetPrefix's comment [\#455](https://github.com/grpc-ecosystem/grpc-gateway/pull/455) ([hectorj](https://github.com/hectorj))
|
||||
- Add Handler method to pass in client [\#454](https://github.com/grpc-ecosystem/grpc-gateway/pull/454) ([jacksontj](https://github.com/jacksontj))
|
||||
- Fallback to JSON name when matching URL parameter. [\#450](https://github.com/grpc-ecosystem/grpc-gateway/pull/450) ([tgeng](https://github.com/tgeng))
|
||||
- Update DO NOT EDIT template. [\#434](https://github.com/grpc-ecosystem/grpc-gateway/pull/434) ([AlekSi](https://github.com/AlekSi))
|
||||
- Memoise calls to fullyQualifiedNameToSwaggerName to speed it up for large registries [\#421](https://github.com/grpc-ecosystem/grpc-gateway/pull/421) ([peterebden](https://github.com/peterebden))
|
||||
- Update Swagger Codegen from 2.1.6 to 2.2.2 [\#415](https://github.com/grpc-ecosystem/grpc-gateway/pull/415) ([yugui](https://github.com/yugui))
|
||||
- Return codes.InvalidArgument to rather return HTTP 400 instead of HTTP 500 [\#409](https://github.com/grpc-ecosystem/grpc-gateway/pull/409) ([vaporz](https://github.com/vaporz))
|
||||
- improve {incoming,outgoing}HeaderMatcher logic [\#408](https://github.com/grpc-ecosystem/grpc-gateway/pull/408) ([flisky](https://github.com/flisky))
|
||||
- improve WKT handling in gateway and openapi output [\#404](https://github.com/grpc-ecosystem/grpc-gateway/pull/404) ([tmc](https://github.com/tmc))
|
||||
- Return if runtime.AnnotateContext gave error [\#403](https://github.com/grpc-ecosystem/grpc-gateway/pull/403) ([tamalsaha](https://github.com/tamalsaha))
|
||||
- jsonpb: update tests to reflect new jsonpb behavior [\#401](https://github.com/grpc-ecosystem/grpc-gateway/pull/401) ([tmc](https://github.com/tmc))
|
||||
- Reference import grpc Status to suppress unused errors. [\#387](https://github.com/grpc-ecosystem/grpc-gateway/pull/387) ([tamalsaha](https://github.com/tamalsaha))
|
||||
- ci: regen with current protoc-gen-go [\#385](https://github.com/grpc-ecosystem/grpc-gateway/pull/385) ([tmc](https://github.com/tmc))
|
||||
- Use status package for error and introduce WithProtoErrorHandler option [\#378](https://github.com/grpc-ecosystem/grpc-gateway/pull/378) ([kazegusuri](https://github.com/kazegusuri))
|
||||
- Return response headers from grpc server [\#374](https://github.com/grpc-ecosystem/grpc-gateway/pull/374) ([tamalsaha](https://github.com/tamalsaha))
|
||||
- Skip unreferenced messages in definitions. [\#371](https://github.com/grpc-ecosystem/grpc-gateway/pull/371) ([Lantame](https://github.com/Lantame))
|
||||
- Use canonical header form in default header matcher. [\#369](https://github.com/grpc-ecosystem/grpc-gateway/pull/369) ([tamalsaha](https://github.com/tamalsaha))
|
||||
- support allow\_delete\_body for protoc-gen-grpc-gateway [\#318](https://github.com/grpc-ecosystem/grpc-gateway/pull/318) ([flisky](https://github.com/flisky))
|
||||
- fixes package name override doesn't work [\#277](https://github.com/grpc-ecosystem/grpc-gateway/pull/277) ([favadi](https://github.com/favadi))
|
||||
- add custom options to allow more control of swagger/openapi output [\#145](https://github.com/grpc-ecosystem/grpc-gateway/pull/145) ([ivucica](https://github.com/ivucica))
|
||||
|
||||
## [v1.2.2](https://grpc-ecosystem.github.io/grpc-gateway/grpc-ecosystem/grpc-gateway/tree/v1.2.2) (2017-04-17)
|
||||
[Full Changelog](https://grpc-ecosystem.github.io/grpc-gateway/grpc-ecosystem/grpc-gateway/compare/v1.2.1...v1.2.2)
|
||||
|
||||
**Merged pull requests:**
|
||||
|
||||
- Add changelog for 1.2.2 [\#363](https://github.com/grpc-ecosystem/grpc-gateway/pull/363) ([tmc](https://github.com/tmc))
|
||||
- metadata: fix properly and change to Outgoing [\#361](https://github.com/grpc-ecosystem/grpc-gateway/pull/361) ([tmc](https://github.com/tmc))
|
||||
|
||||
## [v1.2.1](https://grpc-ecosystem.github.io/grpc-gateway/grpc-ecosystem/grpc-gateway/tree/v1.2.1) (2017-04-17)
|
||||
[Full Changelog](https://grpc-ecosystem.github.io/grpc-gateway/grpc-ecosystem/grpc-gateway/compare/v1.2.0...v1.2.1)
|
||||
|
||||
**Fixed bugs:**
|
||||
|
||||
- reflect upstream grpc metadata api change [\#358](https://github.com/grpc-ecosystem/grpc-gateway/issues/358)
|
||||
|
||||
**Closed issues:**
|
||||
|
||||
- Empty value omitted [\#355](https://github.com/grpc-ecosystem/grpc-gateway/issues/355)
|
||||
- Must generate reverse proxy in same package? [\#353](https://github.com/grpc-ecosystem/grpc-gateway/issues/353)
|
||||
- Release 1.2.0 [\#340](https://github.com/grpc-ecosystem/grpc-gateway/issues/340)
|
||||
- Cut another release [\#278](https://github.com/grpc-ecosystem/grpc-gateway/issues/278)
|
||||
|
||||
**Merged pull requests:**
|
||||
|
||||
- Add changelog for 1.2.1 [\#360](https://github.com/grpc-ecosystem/grpc-gateway/pull/360) ([tmc](https://github.com/tmc))
|
||||
- bugfix: reflect upstream api change. [\#359](https://github.com/grpc-ecosystem/grpc-gateway/pull/359) ([tmc](https://github.com/tmc))
|
||||
|
||||
## [v1.2.0](https://grpc-ecosystem.github.io/grpc-gateway/grpc-ecosystem/grpc-gateway/tree/v1.2.0) (2017-03-31)
|
||||
[Full Changelog](https://grpc-ecosystem.github.io/grpc-gateway/grpc-ecosystem/grpc-gateway/compare/v1.2.0.rc1...v1.2.0)
|
||||
|
||||
**Closed issues:**
|
||||
|
||||
- Problem with \*.proto as "no buildable Go source files" [\#338](https://github.com/grpc-ecosystem/grpc-gateway/issues/338)
|
||||
- Invalid import during code generation [\#337](https://github.com/grpc-ecosystem/grpc-gateway/issues/337)
|
||||
|
||||
**Merged pull requests:**
|
||||
|
||||
- Add changelog for 1.2.0 [\#342](https://github.com/grpc-ecosystem/grpc-gateway/pull/342) ([tmc](https://github.com/tmc))
|
||||
|
||||
## [v1.2.0.rc1](https://grpc-ecosystem.github.io/grpc-gateway/grpc-ecosystem/grpc-gateway/tree/v1.2.0.rc1) (2017-03-24)
|
||||
[Full Changelog](https://grpc-ecosystem.github.io/grpc-gateway/grpc-ecosystem/grpc-gateway/compare/v1.1.0...v1.2.0.rc1)
|
||||
|
||||
**Implemented enhancements:**
|
||||
|
||||
- Support for Any types [\#80](https://github.com/grpc-ecosystem/grpc-gateway/issues/80)
|
||||
- improve\(genswagger:template\):added support for google.protobuf.Timestamp [\#209](https://github.com/grpc-ecosystem/grpc-gateway/pull/209) ([EranAvidor](https://github.com/EranAvidor))
|
||||
|
||||
**Fixed bugs:**
|
||||
|
||||
- Support for multi-segment elements [\#122](https://github.com/grpc-ecosystem/grpc-gateway/issues/122)
|
||||
|
||||
**Closed issues:**
|
||||
|
||||
- Go get breaks with autogenerated code [\#331](https://github.com/grpc-ecosystem/grpc-gateway/issues/331)
|
||||
- Fresh install no longer generates necessary `google/api/annotations.pb.go` & `google/api/http.pb.go` files. [\#327](https://github.com/grpc-ecosystem/grpc-gateway/issues/327)
|
||||
- Panic with query parameters [\#324](https://github.com/grpc-ecosystem/grpc-gateway/issues/324)
|
||||
- Swagger-UI query parameters for enum types are sent as strings [\#320](https://github.com/grpc-ecosystem/grpc-gateway/issues/320)
|
||||
- hide the object name in the response [\#317](https://github.com/grpc-ecosystem/grpc-gateway/issues/317)
|
||||
- Package imported but not used [\#310](https://github.com/grpc-ecosystem/grpc-gateway/issues/310)
|
||||
- Authorization headers aren't specified in Swagger.json [\#309](https://github.com/grpc-ecosystem/grpc-gateway/issues/309)
|
||||
- Generating swagger version, contact name etc in generated docs [\#303](https://github.com/grpc-ecosystem/grpc-gateway/issues/303)
|
||||
- Feature request: custom content type per service and rpc [\#302](https://github.com/grpc-ecosystem/grpc-gateway/issues/302)
|
||||
- Reference: another RESTful api-gateway [\#299](https://github.com/grpc-ecosystem/grpc-gateway/issues/299)
|
||||
- Integration with other languages is partially broken [\#298](https://github.com/grpc-ecosystem/grpc-gateway/issues/298)
|
||||
- jsonpb convert int64 to integer instead of string [\#296](https://github.com/grpc-ecosystem/grpc-gateway/issues/296)
|
||||
- default enum value is omitted [\#294](https://github.com/grpc-ecosystem/grpc-gateway/issues/294)
|
||||
- Advice: could we simplify the flow as the below [\#292](https://github.com/grpc-ecosystem/grpc-gateway/issues/292)
|
||||
- examples/browser test failure: TypeError: undefined is not a function \(evaluating 'window.location.protocol.startsWith\('chrome-extension'\)'\) [\#287](https://github.com/grpc-ecosystem/grpc-gateway/issues/287)
|
||||
- ./entrypoint.go:25: undefined: api.RegisterYourServiceHandlerFromEndpoint [\#285](https://github.com/grpc-ecosystem/grpc-gateway/issues/285)
|
||||
- Query params not handled in swagger file [\#284](https://github.com/grpc-ecosystem/grpc-gateway/issues/284)
|
||||
- Please help: google/api/annotations.proto: File not found. [\#283](https://github.com/grpc-ecosystem/grpc-gateway/issues/283)
|
||||
- Option to Allow Swagger for DELETEs with a body [\#279](https://github.com/grpc-ecosystem/grpc-gateway/issues/279)
|
||||
- client declared and not used compilation error, after recent upgrade [\#276](https://github.com/grpc-ecosystem/grpc-gateway/issues/276)
|
||||
- feature request / idea: generating JSONRPC2 client proxies from GRPC [\#272](https://github.com/grpc-ecosystem/grpc-gateway/issues/272)
|
||||
- protoc-swagger-generator messes up the comments if there is rpc method that does not have rest [\#263](https://github.com/grpc-ecosystem/grpc-gateway/issues/263)
|
||||
- Swagger Gen: underscores -\> lowerCamelCase field names and refs [\#261](https://github.com/grpc-ecosystem/grpc-gateway/issues/261)
|
||||
- Timestamp as URL param causes bad request error [\#260](https://github.com/grpc-ecosystem/grpc-gateway/issues/260)
|
||||
- "proto: no coders for int" printed whenever a gRPC error is returned over grpc-gateway. [\#259](https://github.com/grpc-ecosystem/grpc-gateway/issues/259)
|
||||
- Compatibility with grpc.SupportPackageIsVersion4 [\#258](https://github.com/grpc-ecosystem/grpc-gateway/issues/258)
|
||||
- How to use circuit breaker in this grpc gateway? [\#257](https://github.com/grpc-ecosystem/grpc-gateway/issues/257)
|
||||
- cannot use example code to generate [\#255](https://github.com/grpc-ecosystem/grpc-gateway/issues/255)
|
||||
- tests fail on go tip due to importing of main packages in test [\#250](https://github.com/grpc-ecosystem/grpc-gateway/issues/250)
|
||||
- Add NGINX support [\#249](https://github.com/grpc-ecosystem/grpc-gateway/issues/249)
|
||||
- Error when reverse proxy to gRPC server \(which is impl with Node.js\) [\#246](https://github.com/grpc-ecosystem/grpc-gateway/issues/246)
|
||||
- Error output titlecase instead of lowercase [\#243](https://github.com/grpc-ecosystem/grpc-gateway/issues/243)
|
||||
- Option field "\(google.api.http\)" is not a field or extension of message "ServiceOptions" [\#241](https://github.com/grpc-ecosystem/grpc-gateway/issues/241)
|
||||
- Implement credentials handler in-box [\#238](https://github.com/grpc-ecosystem/grpc-gateway/issues/238)
|
||||
- Proposal: Support WKT structs for URL params [\#237](https://github.com/grpc-ecosystem/grpc-gateway/issues/237)
|
||||
- Example of /} in path template [\#232](https://github.com/grpc-ecosystem/grpc-gateway/issues/232)
|
||||
- Serving swagger.json from runtime mux? [\#230](https://github.com/grpc-ecosystem/grpc-gateway/issues/230)
|
||||
- ETCDclientv3 build error with the latest changes - github.com/grpc-ecosystem/grpc-gateway/runtime/marshal\_jsonpb.go:114: undefined: jsonpb.Unmarshaler [\#226](https://github.com/grpc-ecosystem/grpc-gateway/issues/226)
|
||||
- Map in GET request [\#223](https://github.com/grpc-ecosystem/grpc-gateway/issues/223)
|
||||
- HTTPS no longer works [\#220](https://github.com/grpc-ecosystem/grpc-gateway/issues/220)
|
||||
- --swagger\_out plugin translates proto type int64 to string in Swagger specification [\#219](https://github.com/grpc-ecosystem/grpc-gateway/issues/219)
|
||||
- Response body as a single field [\#217](https://github.com/grpc-ecosystem/grpc-gateway/issues/217)
|
||||
- documentation of semantics of endpoint declarations [\#212](https://github.com/grpc-ecosystem/grpc-gateway/issues/212)
|
||||
- gen-swagger does not generate PATCH method endpoints [\#211](https://github.com/grpc-ecosystem/grpc-gateway/issues/211)
|
||||
- protoc-gen-grpc-gateway doesn't work correctly with option go\_package [\#207](https://github.com/grpc-ecosystem/grpc-gateway/issues/207)
|
||||
- Browser Side Streaming Best Practices [\#206](https://github.com/grpc-ecosystem/grpc-gateway/issues/206)
|
||||
- Does grpc-gateway support App Engine? [\#204](https://github.com/grpc-ecosystem/grpc-gateway/issues/204)
|
||||
- "use of internal package" error, after moving to grpc-ecosystem [\#203](https://github.com/grpc-ecosystem/grpc-gateway/issues/203)
|
||||
- Move to google.golang.org/genproto instead of shipping annotations.proto. [\#202](https://github.com/grpc-ecosystem/grpc-gateway/issues/202)
|
||||
- Release v1.1.0 [\#196](https://github.com/grpc-ecosystem/grpc-gateway/issues/196)
|
||||
- marshaler runtime.Marshaler does not handle io.EOF when decoding [\#195](https://github.com/grpc-ecosystem/grpc-gateway/issues/195)
|
||||
- protobuf enumerated values now returned as strings instead of numbers. [\#186](https://github.com/grpc-ecosystem/grpc-gateway/issues/186)
|
||||
- support annotating fields as required \(in swagger/oapi generation\)? [\#175](https://github.com/grpc-ecosystem/grpc-gateway/issues/175)
|
||||
- architectural question: Can i codegen the client code for talking to the server ? [\#167](https://github.com/grpc-ecosystem/grpc-gateway/issues/167)
|
||||
- Passing ENUM value as URL parameter throws error [\#166](https://github.com/grpc-ecosystem/grpc-gateway/issues/166)
|
||||
- Support specifying which schemes should be output in swagger.json [\#161](https://github.com/grpc-ecosystem/grpc-gateway/issues/161)
|
||||
- Use headers for routing [\#157](https://github.com/grpc-ecosystem/grpc-gateway/issues/157)
|
||||
- ENUM in swagger.json makes client code failed to parse response from gateway [\#153](https://github.com/grpc-ecosystem/grpc-gateway/issues/153)
|
||||
- Support map types [\#140](https://github.com/grpc-ecosystem/grpc-gateway/issues/140)
|
||||
- generate OpenAPI/swagger documentation at run time? [\#138](https://github.com/grpc-ecosystem/grpc-gateway/issues/138)
|
||||
- After the 1.7 release, update .travis.yaml to check the compiled proto output [\#137](https://github.com/grpc-ecosystem/grpc-gateway/issues/137)
|
||||
- Getting parsed runtime.Pattern from server mux [\#127](https://github.com/grpc-ecosystem/grpc-gateway/issues/127)
|
||||
- REST API without proxying [\#46](https://github.com/grpc-ecosystem/grpc-gateway/issues/46)
|
||||
|
||||
**Merged pull requests:**
|
||||
|
||||
- Remove an obsolete custom option [\#604](https://github.com/grpc-ecosystem/grpc-gateway/pull/604) ([yugui](https://github.com/yugui))
|
||||
- Support user configurable header forwarding & context metadata [\#336](https://github.com/grpc-ecosystem/grpc-gateway/pull/336) ([tamalsaha](https://github.com/tamalsaha))
|
||||
- Update go\_out parameter to remove comma [\#333](https://github.com/grpc-ecosystem/grpc-gateway/pull/333) ([tmc](https://github.com/tmc))
|
||||
- Update stale path in README [\#332](https://github.com/grpc-ecosystem/grpc-gateway/pull/332) ([tmc](https://github.com/tmc))
|
||||
- improve documentation regarding external dependencies [\#330](https://github.com/grpc-ecosystem/grpc-gateway/pull/330) ([CaptTofu](https://github.com/CaptTofu))
|
||||
- Return an error on invalid nested query parameters. [\#329](https://github.com/grpc-ecosystem/grpc-gateway/pull/329) ([fische](https://github.com/fische))
|
||||
- Update upstream proto files and add google.golang.org/genproto support. [\#325](https://github.com/grpc-ecosystem/grpc-gateway/pull/325) ([tmc](https://github.com/tmc))
|
||||
- Support oneof fields in query params [\#321](https://github.com/grpc-ecosystem/grpc-gateway/pull/321) ([nilium](https://github.com/nilium))
|
||||
- Do not ignore the error coming from http.ListenAndServe in examples [\#319](https://github.com/grpc-ecosystem/grpc-gateway/pull/319) ([campoy](https://github.com/campoy))
|
||||
- Look up enum value maps by their proto name [\#315](https://github.com/grpc-ecosystem/grpc-gateway/pull/315) ([nilium](https://github.com/nilium))
|
||||
- enable parsing enums from query parameters [\#314](https://github.com/grpc-ecosystem/grpc-gateway/pull/314) ([tzneal](https://github.com/tzneal))
|
||||
- Do not add imports from methods with no bindings. [\#312](https://github.com/grpc-ecosystem/grpc-gateway/pull/312) ([fische](https://github.com/fische))
|
||||
- Convert the first letter of method name to upper [\#300](https://github.com/grpc-ecosystem/grpc-gateway/pull/300) ([lipixun](https://github.com/lipixun))
|
||||
- write query parameters to swagger definition [\#297](https://github.com/grpc-ecosystem/grpc-gateway/pull/297) ([t-yuki](https://github.com/t-yuki))
|
||||
- Bump swagger-client to 2.1.28 for examples/browser [\#290](https://github.com/grpc-ecosystem/grpc-gateway/pull/290) ([tmc](https://github.com/tmc))
|
||||
- pin to version before es6ism [\#289](https://github.com/grpc-ecosystem/grpc-gateway/pull/289) ([tmc](https://github.com/tmc))
|
||||
- Prevent lack of http bindings from generating non-building output [\#286](https://github.com/grpc-ecosystem/grpc-gateway/pull/286) ([tmc](https://github.com/tmc))
|
||||
- Added support for Timestamp in URL. [\#281](https://github.com/grpc-ecosystem/grpc-gateway/pull/281) ([johansja](https://github.com/johansja))
|
||||
- add plugin param 'allow\_delete\_body' [\#280](https://github.com/grpc-ecosystem/grpc-gateway/pull/280) ([msample](https://github.com/msample))
|
||||
- Fix ruby gen command [\#275](https://github.com/grpc-ecosystem/grpc-gateway/pull/275) ([bluehallu](https://github.com/bluehallu))
|
||||
- Make grpc-gateway support enum fields in path parameter [\#273](https://github.com/grpc-ecosystem/grpc-gateway/pull/273) ([linuxerwang](https://github.com/linuxerwang))
|
||||
- remove unnecessary make\(\) [\#271](https://github.com/grpc-ecosystem/grpc-gateway/pull/271) ([tmc](https://github.com/tmc))
|
||||
- preserve field order in swagger spec [\#270](https://github.com/grpc-ecosystem/grpc-gateway/pull/270) ([tmc](https://github.com/tmc))
|
||||
- Merge \#228 [\#268](https://github.com/grpc-ecosystem/grpc-gateway/pull/268) ([tmc](https://github.com/tmc))
|
||||
- Handle methods with no bindings more carefully [\#267](https://github.com/grpc-ecosystem/grpc-gateway/pull/267) ([tmc](https://github.com/tmc))
|
||||
- describe default marshaler in README.md [\#266](https://github.com/grpc-ecosystem/grpc-gateway/pull/266) ([tmc](https://github.com/tmc))
|
||||
- Add request\_context flag to utilize \(\*http.Request\).Context\(\) in handlers [\#265](https://github.com/grpc-ecosystem/grpc-gateway/pull/265) ([tmc](https://github.com/tmc))
|
||||
- Regenerate examples [\#264](https://github.com/grpc-ecosystem/grpc-gateway/pull/264) ([tmc](https://github.com/tmc))
|
||||
- Correct runtime.errorBody protobuf field tag [\#256](https://github.com/grpc-ecosystem/grpc-gateway/pull/256) ([tmc](https://github.com/tmc))
|
||||
- Pass permanent HTTP request headers [\#252](https://github.com/grpc-ecosystem/grpc-gateway/pull/252) ([tmc](https://github.com/tmc))
|
||||
- regenerate examples, fix tests for go tip [\#248](https://github.com/grpc-ecosystem/grpc-gateway/pull/248) ([tmc](https://github.com/tmc))
|
||||
- Render the swagger request body properly [\#247](https://github.com/grpc-ecosystem/grpc-gateway/pull/247) ([dprotaso](https://github.com/dprotaso))
|
||||
- Error output should have lowercase attribute names [\#244](https://github.com/grpc-ecosystem/grpc-gateway/pull/244) ([nathanborror](https://github.com/nathanborror))
|
||||
- runtime - export prefix constants [\#236](https://github.com/grpc-ecosystem/grpc-gateway/pull/236) ([philipithomas](https://github.com/philipithomas))
|
||||
- README - Add CoreOS example [\#231](https://github.com/grpc-ecosystem/grpc-gateway/pull/231) ([philipithomas](https://github.com/philipithomas))
|
||||
- Docs - Add section about how HTTP maps to gRPC [\#227](https://github.com/grpc-ecosystem/grpc-gateway/pull/227) ([philipithomas](https://github.com/philipithomas))
|
||||
- readme: added links to additional documentation [\#222](https://github.com/grpc-ecosystem/grpc-gateway/pull/222) ([sdemos](https://github.com/sdemos))
|
||||
- Use a released version of protoc [\#216](https://github.com/grpc-ecosystem/grpc-gateway/pull/216) ([yugui](https://github.com/yugui))
|
||||
- Add contribution guideline [\#210](https://github.com/grpc-ecosystem/grpc-gateway/pull/210) ([yugui](https://github.com/yugui))
|
||||
- Allowing unknown fields to be dropped instead of returning error from… [\#208](https://github.com/grpc-ecosystem/grpc-gateway/pull/208) ([sriniven](https://github.com/sriniven))
|
||||
- Avoid Internal Server Error on zero-length input for bidi streaming [\#200](https://github.com/grpc-ecosystem/grpc-gateway/pull/200) ([yugui](https://github.com/yugui))
|
||||
|
||||
## [v1.1.0](https://grpc-ecosystem.github.io/grpc-gateway/grpc-ecosystem/grpc-gateway/tree/v1.1.0) (2016-07-23)
|
||||
[Full Changelog](https://grpc-ecosystem.github.io/grpc-gateway/grpc-ecosystem/grpc-gateway/compare/v1.0.0...v1.1.0)
|
||||
|
||||
**Implemented enhancements:**
|
||||
|
||||
- Support oneof types of fields [\#82](https://github.com/grpc-ecosystem/grpc-gateway/issues/82)
|
||||
- allow use of jsonpb for marshaling [\#79](https://github.com/grpc-ecosystem/grpc-gateway/issues/79)
|
||||
|
||||
**Closed issues:**
|
||||
|
||||
- Generating a gRPC stub using Gateway generates a gRPC internal error [\#198](https://github.com/grpc-ecosystem/grpc-gateway/issues/198)
|
||||
- Build fails with error: use of internal package not allowed [\#197](https://github.com/grpc-ecosystem/grpc-gateway/issues/197)
|
||||
- google/protobuf/descriptor.proto: File not found. [\#194](https://github.com/grpc-ecosystem/grpc-gateway/issues/194)
|
||||
- please tag releases [\#189](https://github.com/grpc-ecosystem/grpc-gateway/issues/189)
|
||||
- Support for path collapsing for embedded structs? [\#187](https://github.com/grpc-ecosystem/grpc-gateway/issues/187)
|
||||
- \[ACTION Required\] Moving to grpc-ecosystem [\#179](https://github.com/grpc-ecosystem/grpc-gateway/issues/179)
|
||||
- Ading grpc-timeout support [\#107](https://github.com/grpc-ecosystem/grpc-gateway/issues/107)
|
||||
- Generation of one swagger file out of multiple protos? [\#99](https://github.com/grpc-ecosystem/grpc-gateway/issues/99)
|
||||
|
||||
**Merged pull requests:**
|
||||
|
||||
- Rename packages to follow the repository transfer [\#192](https://github.com/grpc-ecosystem/grpc-gateway/pull/192) ([yugui](https://github.com/yugui))
|
||||
- return err early if EOF to prevent logging in normal conditions [\#191](https://github.com/grpc-ecosystem/grpc-gateway/pull/191) ([tmc](https://github.com/tmc))
|
||||
- send Trailer header on error [\#188](https://github.com/grpc-ecosystem/grpc-gateway/pull/188) ([kazegusuri](https://github.com/kazegusuri))
|
||||
- generate swagger output for streaming endpoints with a basic note [\#183](https://github.com/grpc-ecosystem/grpc-gateway/pull/183) ([tmc](https://github.com/tmc))
|
||||
|
||||
## [v1.0.0](https://grpc-ecosystem.github.io/grpc-gateway/grpc-ecosystem/grpc-gateway/tree/v1.0.0) (2016-06-15)
|
||||
**Implemented enhancements:**
|
||||
|
||||
- support protobuf-over-HTTP [\#124](https://github.com/grpc-ecosystem/grpc-gateway/issues/124)
|
||||
- Static mapping from proto field names to golang field names [\#86](https://github.com/grpc-ecosystem/grpc-gateway/issues/86)
|
||||
- Format Errors to JSON [\#25](https://github.com/grpc-ecosystem/grpc-gateway/issues/25)
|
||||
- Emit API definition in Swagger schema format [\#9](https://github.com/grpc-ecosystem/grpc-gateway/issues/9)
|
||||
- Method parameter in query string [\#6](https://github.com/grpc-ecosystem/grpc-gateway/issues/6)
|
||||
- Integrate authentication [\#4](https://github.com/grpc-ecosystem/grpc-gateway/issues/4)
|
||||
- Add swagger support [\#68](https://github.com/grpc-ecosystem/grpc-gateway/pull/68) ([achew22](https://github.com/achew22))
|
||||
- Add runtime.WithForwardResponseOption [\#53](https://github.com/grpc-ecosystem/grpc-gateway/pull/53) ([peter-edge](https://github.com/peter-edge))
|
||||
|
||||
**Fixed bugs:**
|
||||
|
||||
- recent annotation change requires req.RemoteAddr to be populated [\#177](https://github.com/grpc-ecosystem/grpc-gateway/issues/177)
|
||||
- Runtime panic with CloseNotify [\#115](https://github.com/grpc-ecosystem/grpc-gateway/issues/115)
|
||||
- Gateway code generation broken when rpc method with a streaming response has an input paramter [\#35](https://github.com/grpc-ecosystem/grpc-gateway/issues/35)
|
||||
- URL usage of nested messages causes nil pointer in proto3 [\#32](https://github.com/grpc-ecosystem/grpc-gateway/issues/32)
|
||||
- Multiple .proto files generates invalid import statements. [\#22](https://github.com/grpc-ecosystem/grpc-gateway/issues/22)
|
||||
|
||||
**Closed issues:**
|
||||
|
||||
- remote peer address is lost in ctx - always resolves to localhost [\#173](https://github.com/grpc-ecosystem/grpc-gateway/issues/173)
|
||||
- Bidirectional streams don't concurrently Send and Recv [\#169](https://github.com/grpc-ecosystem/grpc-gateway/issues/169)
|
||||
- Error: failed to import google/api/annotations.proto [\#165](https://github.com/grpc-ecosystem/grpc-gateway/issues/165)
|
||||
- Test datarace in controlapi [\#163](https://github.com/grpc-ecosystem/grpc-gateway/issues/163)
|
||||
- not enough arguments in call to runtime.HTTPError [\#162](https://github.com/grpc-ecosystem/grpc-gateway/issues/162)
|
||||
- String-values for Enums in request object are not recognized. [\#150](https://github.com/grpc-ecosystem/grpc-gateway/issues/150)
|
||||
- Handling of import public "file.proto" [\#139](https://github.com/grpc-ecosystem/grpc-gateway/issues/139)
|
||||
- Does grpc-gateway support http middleware? [\#132](https://github.com/grpc-ecosystem/grpc-gateway/issues/132)
|
||||
- push to web clients using WS or SSE ? [\#131](https://github.com/grpc-ecosystem/grpc-gateway/issues/131)
|
||||
- protoc-gen-swagger comment parsing for documentation gen [\#128](https://github.com/grpc-ecosystem/grpc-gateway/issues/128)
|
||||
- generated code has a data race [\#123](https://github.com/grpc-ecosystem/grpc-gateway/issues/123)
|
||||
- panic: net/http: CloseNotify called after ServeHTTP finished [\#121](https://github.com/grpc-ecosystem/grpc-gateway/issues/121)
|
||||
- CloseNotify race with ServeHTTP [\#119](https://github.com/grpc-ecosystem/grpc-gateway/issues/119)
|
||||
- echo service example does not compile [\#117](https://github.com/grpc-ecosystem/grpc-gateway/issues/117)
|
||||
- go vet issues in template\_test.go [\#113](https://github.com/grpc-ecosystem/grpc-gateway/issues/113)
|
||||
- undefined: proto.SizeVarint [\#103](https://github.com/grpc-ecosystem/grpc-gateway/issues/103)
|
||||
- Closing the HTTP connection does not cancel the Context [\#101](https://github.com/grpc-ecosystem/grpc-gateway/issues/101)
|
||||
- Logging [\#92](https://github.com/grpc-ecosystem/grpc-gateway/issues/92)
|
||||
- Missing default values in JSON output? [\#91](https://github.com/grpc-ecosystem/grpc-gateway/issues/91)
|
||||
- Better grpc error strings [\#87](https://github.com/grpc-ecosystem/grpc-gateway/issues/87)
|
||||
- Fields aren't named in the same manner as golang/protobuf [\#84](https://github.com/grpc-ecosystem/grpc-gateway/issues/84)
|
||||
- Header Forwarding from server. [\#73](https://github.com/grpc-ecosystem/grpc-gateway/issues/73)
|
||||
- No pattern specified in google.api.HttpRule [\#70](https://github.com/grpc-ecosystem/grpc-gateway/issues/70)
|
||||
- cannot find package "google/api" [\#67](https://github.com/grpc-ecosystem/grpc-gateway/issues/67)
|
||||
- Generated .pb.go with services no longer works with latest version of grpc-go. [\#62](https://github.com/grpc-ecosystem/grpc-gateway/issues/62)
|
||||
- JavaScript Proxy [\#61](https://github.com/grpc-ecosystem/grpc-gateway/issues/61)
|
||||
- Add HTTP error code, error status to responseStreamChunk Error [\#58](https://github.com/grpc-ecosystem/grpc-gateway/issues/58)
|
||||
- Reverse the code gen idea [\#44](https://github.com/grpc-ecosystem/grpc-gateway/issues/44)
|
||||
- array of maps in json [\#43](https://github.com/grpc-ecosystem/grpc-gateway/issues/43)
|
||||
- Examples break with 1.5 because of import of "main" examples package [\#37](https://github.com/grpc-ecosystem/grpc-gateway/issues/37)
|
||||
- Breaks with 1.5rc1 due to "internal" package name. [\#36](https://github.com/grpc-ecosystem/grpc-gateway/issues/36)
|
||||
- Feature Request: Support for non-nullable nested messages. [\#20](https://github.com/grpc-ecosystem/grpc-gateway/issues/20)
|
||||
- Is PascalFromSnake the right conversion to be doing? [\#19](https://github.com/grpc-ecosystem/grpc-gateway/issues/19)
|
||||
- Infinite loop in generator when package name conflicts [\#17](https://github.com/grpc-ecosystem/grpc-gateway/issues/17)
|
||||
- google.api.http options in multi-line format not supported [\#16](https://github.com/grpc-ecosystem/grpc-gateway/issues/16)
|
||||
- Is there any plan to developing a C++ version? [\#15](https://github.com/grpc-ecosystem/grpc-gateway/issues/15)
|
||||
|
||||
**Merged pull requests:**
|
||||
|
||||
- Regenerate files with the latest protoc-gen-go [\#185](https://github.com/grpc-ecosystem/grpc-gateway/pull/185) ([yugui](https://github.com/yugui))
|
||||
- Add browser examples [\#184](https://github.com/grpc-ecosystem/grpc-gateway/pull/184) ([yugui](https://github.com/yugui))
|
||||
- Fix golint and go vet errors [\#182](https://github.com/grpc-ecosystem/grpc-gateway/pull/182) ([yugui](https://github.com/yugui))
|
||||
- Add integration with clients generated by swagger-codegen [\#181](https://github.com/grpc-ecosystem/grpc-gateway/pull/181) ([yugui](https://github.com/yugui))
|
||||
- Simplify example services [\#180](https://github.com/grpc-ecosystem/grpc-gateway/pull/180) ([yugui](https://github.com/yugui))
|
||||
- Avoid errors when req.RemoteAddr is empty [\#178](https://github.com/grpc-ecosystem/grpc-gateway/pull/178) ([yugui](https://github.com/yugui))
|
||||
- Feature/headers [\#176](https://github.com/grpc-ecosystem/grpc-gateway/pull/176) ([yugui](https://github.com/yugui))
|
||||
- Include HTTP req.remoteAddr in gRPC ctx [\#174](https://github.com/grpc-ecosystem/grpc-gateway/pull/174) ([mikeatlas](https://github.com/mikeatlas))
|
||||
- Update dependencies [\#171](https://github.com/grpc-ecosystem/grpc-gateway/pull/171) ([yugui](https://github.com/yugui))
|
||||
- Add bidirectional streaming support by running Send\(\) and Recv\(\) concurrently [\#170](https://github.com/grpc-ecosystem/grpc-gateway/pull/170) ([tmc](https://github.com/tmc))
|
||||
- make Authorization header check case-insensitive to comply with RFC 2616 4.2 [\#164](https://github.com/grpc-ecosystem/grpc-gateway/pull/164) ([tmc](https://github.com/tmc))
|
||||
- jsonpb: avoid duplicating upstream's struct [\#158](https://github.com/grpc-ecosystem/grpc-gateway/pull/158) ([tamird](https://github.com/tamird))
|
||||
- Generate Swagger description for service methods using proto comments. [\#156](https://github.com/grpc-ecosystem/grpc-gateway/pull/156) ([t-yuki](https://github.com/t-yuki))
|
||||
- Implement gRPC timeout support for inbound HTTP headers [\#155](https://github.com/grpc-ecosystem/grpc-gateway/pull/155) ([mwitkow](https://github.com/mwitkow))
|
||||
- Add more examples to marshalers [\#154](https://github.com/grpc-ecosystem/grpc-gateway/pull/154) ([yugui](https://github.com/yugui))
|
||||
- custom marshaler: handle `Accept` headers correctly [\#152](https://github.com/grpc-ecosystem/grpc-gateway/pull/152) ([tamird](https://github.com/tamird))
|
||||
- Simplify custom marshaler API [\#151](https://github.com/grpc-ecosystem/grpc-gateway/pull/151) ([yugui](https://github.com/yugui))
|
||||
- Fix camel case path parameter handling in swagger [\#149](https://github.com/grpc-ecosystem/grpc-gateway/pull/149) ([yugui](https://github.com/yugui))
|
||||
- Swagger dot in path template [\#148](https://github.com/grpc-ecosystem/grpc-gateway/pull/148) ([yugui](https://github.com/yugui))
|
||||
- Support map types in swagger generator [\#147](https://github.com/grpc-ecosystem/grpc-gateway/pull/147) ([yugui](https://github.com/yugui))
|
||||
- Cleanup custom marshaler [\#146](https://github.com/grpc-ecosystem/grpc-gateway/pull/146) ([yugui](https://github.com/yugui))
|
||||
- Implement custom Marshaler support, add jsonpb implemention. [\#144](https://github.com/grpc-ecosystem/grpc-gateway/pull/144) ([tmc](https://github.com/tmc))
|
||||
- Allow period in path URL templates when generating Swagger templates. [\#143](https://github.com/grpc-ecosystem/grpc-gateway/pull/143) ([ivucica](https://github.com/ivucica))
|
||||
- Link to LICENSE.txt [\#142](https://github.com/grpc-ecosystem/grpc-gateway/pull/142) ([sunkuet02](https://github.com/sunkuet02))
|
||||
- Support map types in swagger generator [\#141](https://github.com/grpc-ecosystem/grpc-gateway/pull/141) ([t-yuki](https://github.com/t-yuki))
|
||||
- Conditionally stops checking if generated file are up-to-date [\#136](https://github.com/grpc-ecosystem/grpc-gateway/pull/136) ([yugui](https://github.com/yugui))
|
||||
- Generate Swagger description for service methods using proto comments. [\#134](https://github.com/grpc-ecosystem/grpc-gateway/pull/134) ([ivucica](https://github.com/ivucica))
|
||||
- Swagger definitions now have `type` set to `object`. [\#133](https://github.com/grpc-ecosystem/grpc-gateway/pull/133) ([ivucica](https://github.com/ivucica))
|
||||
- go\_package option as go import path [\#129](https://github.com/grpc-ecosystem/grpc-gateway/pull/129) ([kazegusuri](https://github.com/kazegusuri))
|
||||
- Fix govet errors [\#126](https://github.com/grpc-ecosystem/grpc-gateway/pull/126) ([yugui](https://github.com/yugui))
|
||||
- Fix data-race in generated codes [\#125](https://github.com/grpc-ecosystem/grpc-gateway/pull/125) ([yugui](https://github.com/yugui))
|
||||
- Fix \#119 - CloseNotify race with ServeHTTP [\#120](https://github.com/grpc-ecosystem/grpc-gateway/pull/120) ([cuongdo](https://github.com/cuongdo))
|
||||
- Replace glog with grpclog [\#118](https://github.com/grpc-ecosystem/grpc-gateway/pull/118) ([cuongdo](https://github.com/cuongdo))
|
||||
- Fix a goroutine-leak in HTTP keep-alive [\#116](https://github.com/grpc-ecosystem/grpc-gateway/pull/116) ([yugui](https://github.com/yugui))
|
||||
- Fix camel case path parameter handling in swagger [\#114](https://github.com/grpc-ecosystem/grpc-gateway/pull/114) ([t-yuki](https://github.com/t-yuki))
|
||||
- gofmt -s [\#112](https://github.com/grpc-ecosystem/grpc-gateway/pull/112) ([shawnps](https://github.com/shawnps))
|
||||
- fix typo [\#111](https://github.com/grpc-ecosystem/grpc-gateway/pull/111) ([shawnps](https://github.com/shawnps))
|
||||
- fix typo [\#110](https://github.com/grpc-ecosystem/grpc-gateway/pull/110) ([shawnps](https://github.com/shawnps))
|
||||
- fixes missing swagger operation objects [\#109](https://github.com/grpc-ecosystem/grpc-gateway/pull/109) ([t-yuki](https://github.com/t-yuki))
|
||||
- Add parser and swagger support for enum, no gengateway yet [\#108](https://github.com/grpc-ecosystem/grpc-gateway/pull/108) ([t-yuki](https://github.com/t-yuki))
|
||||
- README: add protoc-gen-swagger too [\#105](https://github.com/grpc-ecosystem/grpc-gateway/pull/105) ([philips](https://github.com/philips))
|
||||
- README: Suggest go get -u by default. [\#104](https://github.com/grpc-ecosystem/grpc-gateway/pull/104) ([shurcooL](https://github.com/shurcooL))
|
||||
- Cancel context when HTTP connection is closed [\#102](https://github.com/grpc-ecosystem/grpc-gateway/pull/102) ([floridoo](https://github.com/floridoo))
|
||||
- wait test server up [\#100](https://github.com/grpc-ecosystem/grpc-gateway/pull/100) ([kazegusuri](https://github.com/kazegusuri))
|
||||
- Fix the swagger section of the README.md [\#98](https://github.com/grpc-ecosystem/grpc-gateway/pull/98) ([naibaf0](https://github.com/naibaf0))
|
||||
- Add documentation for using Swagger [\#97](https://github.com/grpc-ecosystem/grpc-gateway/pull/97) ([achew22](https://github.com/achew22))
|
||||
- Better compatibility to field names generated by protoc-gen-go [\#96](https://github.com/grpc-ecosystem/grpc-gateway/pull/96) ([yugui](https://github.com/yugui))
|
||||
- Update protoc from 3.0.0-beta1 to 3.0.0-beta2 [\#95](https://github.com/grpc-ecosystem/grpc-gateway/pull/95) ([yugui](https://github.com/yugui))
|
||||
- Better grpc error strings [\#94](https://github.com/grpc-ecosystem/grpc-gateway/pull/94) ([floridoo](https://github.com/floridoo))
|
||||
- make available header and trailer metadata [\#93](https://github.com/grpc-ecosystem/grpc-gateway/pull/93) ([kazegusuri](https://github.com/kazegusuri))
|
||||
- make grpc.DialOption configurable [\#89](https://github.com/grpc-ecosystem/grpc-gateway/pull/89) ([kazegusuri](https://github.com/kazegusuri))
|
||||
- Add request in error handlers [\#88](https://github.com/grpc-ecosystem/grpc-gateway/pull/88) ([daniellowtw](https://github.com/daniellowtw))
|
||||
- Improve PascalFromSnake behavior [\#85](https://github.com/grpc-ecosystem/grpc-gateway/pull/85) ([tmc](https://github.com/tmc))
|
||||
- Typo grcp -\> grpc [\#81](https://github.com/grpc-ecosystem/grpc-gateway/pull/81) ([daniellowtw](https://github.com/daniellowtw))
|
||||
- Add abstraction of code generator implementation [\#78](https://github.com/grpc-ecosystem/grpc-gateway/pull/78) ([yugui](https://github.com/yugui))
|
||||
- Support multivalue of metadata [\#77](https://github.com/grpc-ecosystem/grpc-gateway/pull/77) ([yugui](https://github.com/yugui))
|
||||
- Fix broken test [\#76](https://github.com/grpc-ecosystem/grpc-gateway/pull/76) ([yugui](https://github.com/yugui))
|
||||
- Added missing instruction line in README [\#75](https://github.com/grpc-ecosystem/grpc-gateway/pull/75) ([betrcode](https://github.com/betrcode))
|
||||
- Fix a complie error in generated go files [\#71](https://github.com/grpc-ecosystem/grpc-gateway/pull/71) ([yugui](https://github.com/yugui))
|
||||
- Update generated .pb.go files in third\_party [\#69](https://github.com/grpc-ecosystem/grpc-gateway/pull/69) ([peter-edge](https://github.com/peter-edge))
|
||||
- Bugfix/handling headers for `Authorization` and `Host` [\#65](https://github.com/grpc-ecosystem/grpc-gateway/pull/65) ([mwitkow](https://github.com/mwitkow))
|
||||
- Fix `error` field always in chunk response [\#64](https://github.com/grpc-ecosystem/grpc-gateway/pull/64) ([mwitkow](https://github.com/mwitkow))
|
||||
- Update .pb.go to latest version. [\#63](https://github.com/grpc-ecosystem/grpc-gateway/pull/63) ([johansja](https://github.com/johansja))
|
||||
- Run more tests in Travis CI [\#60](https://github.com/grpc-ecosystem/grpc-gateway/pull/60) ([yugui](https://github.com/yugui))
|
||||
- Added http error code and error status for responseStreamChunk error [\#59](https://github.com/grpc-ecosystem/grpc-gateway/pull/59) ([kdima](https://github.com/kdima))
|
||||
- Fix parsing of verb and final path component. [\#55](https://github.com/grpc-ecosystem/grpc-gateway/pull/55) ([hbchai](https://github.com/hbchai))
|
||||
- add grpc.WithInsecure\(\) as option for grpc.Dial call in template [\#52](https://github.com/grpc-ecosystem/grpc-gateway/pull/52) ([peter-edge](https://github.com/peter-edge))
|
||||
- update .pb.go files for latest golang proto generation [\#51](https://github.com/grpc-ecosystem/grpc-gateway/pull/51) ([peter-edge](https://github.com/peter-edge))
|
||||
- Fix a build error with the latest protoc-gen-go [\#50](https://github.com/grpc-ecosystem/grpc-gateway/pull/50) ([yugui](https://github.com/yugui))
|
||||
- Configure Travis CI [\#49](https://github.com/grpc-ecosystem/grpc-gateway/pull/49) ([yugui](https://github.com/yugui))
|
||||
- Follow a change of go package name convention in protoc-gen-go [\#48](https://github.com/grpc-ecosystem/grpc-gateway/pull/48) ([yugui](https://github.com/yugui))
|
||||
- Consider tail segments after deep wildcard [\#47](https://github.com/grpc-ecosystem/grpc-gateway/pull/47) ([yugui](https://github.com/yugui))
|
||||
- Fix typo in README [\#45](https://github.com/grpc-ecosystem/grpc-gateway/pull/45) ([jonboulle](https://github.com/jonboulle))
|
||||
- Fix undefined variable error in generated codes [\#42](https://github.com/grpc-ecosystem/grpc-gateway/pull/42) ([yugui](https://github.com/yugui))
|
||||
- Follow changes in protoc-gen-go and grpc-go [\#41](https://github.com/grpc-ecosystem/grpc-gateway/pull/41) ([yugui](https://github.com/yugui))
|
||||
- Fixes \#4 [\#40](https://github.com/grpc-ecosystem/grpc-gateway/pull/40) ([AmandaCameron](https://github.com/AmandaCameron))
|
||||
- fix examples to work with go1.5 [\#39](https://github.com/grpc-ecosystem/grpc-gateway/pull/39) ([tmc](https://github.com/tmc))
|
||||
- rename internal to utilties for 1.5 compatibility [\#38](https://github.com/grpc-ecosystem/grpc-gateway/pull/38) ([tmc](https://github.com/tmc))
|
||||
- Reflection fix of proto3 nested messages. [\#34](https://github.com/grpc-ecosystem/grpc-gateway/pull/34) ([mwitkow](https://github.com/mwitkow))
|
||||
- \[Experimental\] Make the response forwarder function customizable [\#31](https://github.com/grpc-ecosystem/grpc-gateway/pull/31) ([yugui](https://github.com/yugui))
|
||||
- Add f.Flush\(\) to runtime.ForwardResponseStream [\#30](https://github.com/grpc-ecosystem/grpc-gateway/pull/30) ([vvakame](https://github.com/vvakame))
|
||||
- Format error message in JSON [\#29](https://github.com/grpc-ecosystem/grpc-gateway/pull/29) ([yugui](https://github.com/yugui))
|
||||
- Update examples with HTTP header context annotation [\#28](https://github.com/grpc-ecosystem/grpc-gateway/pull/28) ([yugui](https://github.com/yugui))
|
||||
- Report semantic errors in the source to protoc [\#27](https://github.com/grpc-ecosystem/grpc-gateway/pull/27) ([yugui](https://github.com/yugui))
|
||||
- Add support for non-nullable nested messages. [\#21](https://github.com/grpc-ecosystem/grpc-gateway/pull/21) ([shurcooL](https://github.com/shurcooL))
|
||||
- Receive GRPC metadata from HTTP headers. [\#18](https://github.com/grpc-ecosystem/grpc-gateway/pull/18) ([crast](https://github.com/crast))
|
||||
- Implement detailed specs of google.api.http [\#14](https://github.com/grpc-ecosystem/grpc-gateway/pull/14) ([yugui](https://github.com/yugui))
|
||||
- Configure travis CI [\#13](https://github.com/grpc-ecosystem/grpc-gateway/pull/13) ([yugui](https://github.com/yugui))
|
||||
- Replace our own custom option with the one defined by Google [\#12](https://github.com/grpc-ecosystem/grpc-gateway/pull/12) ([yugui](https://github.com/yugui))
|
||||
- Remove useless context setup [\#11](https://github.com/grpc-ecosystem/grpc-gateway/pull/11) ([iamqizhao](https://github.com/iamqizhao))
|
||||
- Fix typo, path, missing semicolon. [\#10](https://github.com/grpc-ecosystem/grpc-gateway/pull/10) ([shurcooL](https://github.com/shurcooL))
|
||||
- Use a globally unique id for the custom option [\#3](https://github.com/grpc-ecosystem/grpc-gateway/pull/3) ([yugui](https://github.com/yugui))
|
||||
- implement ABitOfEverythingService [\#2](https://github.com/grpc-ecosystem/grpc-gateway/pull/2) ([mattn](https://github.com/mattn))
|
||||
- support streaming API calls [\#1](https://github.com/grpc-ecosystem/grpc-gateway/pull/1) ([yugui](https://github.com/yugui))
|
||||
|
||||
|
||||
|
||||
\* *This Change Log was automatically generated by [github_changelog_generator](https://github.com/skywinder/Github-Changelog-Generator)*
|
20
vendor/github.com/grpc-ecosystem/grpc-gateway/CONTRIBUTING.md
generated
vendored
Executable file
20
vendor/github.com/grpc-ecosystem/grpc-gateway/CONTRIBUTING.md
generated
vendored
Executable file
@ -0,0 +1,20 @@
|
||||
# How to contribute
|
||||
|
||||
Thank you for your contribution to grpc-gateway.
|
||||
Here's the recommended process of contribution.
|
||||
|
||||
1. `go get github.com/grpc-ecosystem/grpc-gateway/protoc-gen-grpc-gateway`
|
||||
2. `cd $GOPATH/src/github.com/grpc-ecosystem/grpc-gateway`
|
||||
3. hack, hack, hack...
|
||||
4. Make sure that your change follows best practices in Go
|
||||
* [Effective Go](https://golang.org/doc/effective_go.html)
|
||||
* [Go Code Review Comments](https://golang.org/wiki/CodeReviewComments)
|
||||
5. Make sure that `make test` passes. (use swagger-codegen 2.2.2, not newer versions)
|
||||
6. Sign [a Contributor License Agreement](https://cla.developers.google.com/clas)
|
||||
7. Open a pull request in Github
|
||||
|
||||
When you work on a larger contribution, it is also recommended that you get in touch
|
||||
with us through the issue tracker.
|
||||
|
||||
### Code reviews
|
||||
All submissions, including submissions by project members, require review.
|
41
vendor/github.com/grpc-ecosystem/grpc-gateway/ISSUE_TEMPLATE.md
generated
vendored
Executable file
41
vendor/github.com/grpc-ecosystem/grpc-gateway/ISSUE_TEMPLATE.md
generated
vendored
Executable file
@ -0,0 +1,41 @@
|
||||
|
||||
# Please follow the general troubleshooting steps first:
|
||||
|
||||
- [ ] Update your protoc to the [latest version](https://github.com/google/protobuf/releases)
|
||||
- [ ] Update your copy of `grpc-gateway` to the latest version from github. with
|
||||
`git fetch https://github.com/grpc-ecosystem/grpc-gateway master && git reset --hard FETCH_HEAD`
|
||||
- [ ] Delete the `protoc-gen-grpc-gateway` and `protoc-gen-swagger` binary from your `PATH`,
|
||||
and install locally built binaries.
|
||||
|
||||
### Bug reports:
|
||||
|
||||
Fill in the following sections with explanations of what's gone wrong.
|
||||
|
||||
Steps you follow to reproduce the error:
|
||||
|
||||
<!-- Example steps
|
||||
1. I grab my catapult
|
||||
2. I load it with lettuce
|
||||
3. Press the fire button
|
||||
4. It falls over
|
||||
-->
|
||||
|
||||
Your steps here.
|
||||
|
||||
What did you expect to happen instead:
|
||||
|
||||
<!-- Example answer
|
||||
1. It would have rained lettuce from the sky bringing forth a cuddly army of bunnies we could
|
||||
play with
|
||||
-->
|
||||
|
||||
Your answer here.
|
||||
|
||||
What's your theory on why it isn't working:
|
||||
|
||||
<!-- Example answer
|
||||
Evil wizards are hoarding the bunnies and don't want to share. The wizards are casting
|
||||
lettuce protection spells so the cattapult won't work.
|
||||
-->
|
||||
|
||||
Your theory here.
|
27
vendor/github.com/grpc-ecosystem/grpc-gateway/LICENSE.txt
generated
vendored
Executable file
27
vendor/github.com/grpc-ecosystem/grpc-gateway/LICENSE.txt
generated
vendored
Executable file
@ -0,0 +1,27 @@
|
||||
Copyright (c) 2015, Gengo, Inc.
|
||||
All rights reserved.
|
||||
|
||||
Redistribution and use in source and binary forms, with or without modification,
|
||||
are permitted provided that the following conditions are met:
|
||||
|
||||
* Redistributions of source code must retain the above copyright notice,
|
||||
this list of conditions and the following disclaimer.
|
||||
|
||||
* Redistributions in binary form must reproduce the above copyright notice,
|
||||
this list of conditions and the following disclaimer in the documentation
|
||||
and/or other materials provided with the distribution.
|
||||
|
||||
* Neither the name of Gengo, Inc. nor the names of its
|
||||
contributors may be used to endorse or promote products derived from this
|
||||
software without specific prior written permission.
|
||||
|
||||
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
||||
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
|
||||
ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
|
||||
ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
206
vendor/github.com/grpc-ecosystem/grpc-gateway/Makefile
generated
vendored
Executable file
206
vendor/github.com/grpc-ecosystem/grpc-gateway/Makefile
generated
vendored
Executable file
@ -0,0 +1,206 @@
|
||||
# This is a Makefile which maintains files automatically generated but to be
|
||||
# shipped together with other files.
|
||||
# You don't have to rebuild these targets by yourself unless you develop
|
||||
# grpc-gateway itself.
|
||||
|
||||
PKG=github.com/grpc-ecosystem/grpc-gateway
|
||||
GO_PLUGIN=bin/protoc-gen-go
|
||||
GO_PROTOBUF_REPO=github.com/golang/protobuf
|
||||
GO_PLUGIN_PKG=$(GO_PROTOBUF_REPO)/protoc-gen-go
|
||||
GO_PTYPES_ANY_PKG=$(GO_PROTOBUF_REPO)/ptypes/any
|
||||
SWAGGER_PLUGIN=bin/protoc-gen-swagger
|
||||
SWAGGER_PLUGIN_SRC= utilities/doc.go \
|
||||
utilities/pattern.go \
|
||||
utilities/trie.go \
|
||||
protoc-gen-swagger/genswagger/generator.go \
|
||||
protoc-gen-swagger/genswagger/template.go \
|
||||
protoc-gen-swagger/main.go
|
||||
SWAGGER_PLUGIN_PKG=$(PKG)/protoc-gen-swagger
|
||||
GATEWAY_PLUGIN=bin/protoc-gen-grpc-gateway
|
||||
GATEWAY_PLUGIN_PKG=$(PKG)/protoc-gen-grpc-gateway
|
||||
GATEWAY_PLUGIN_SRC= utilities/doc.go \
|
||||
utilities/pattern.go \
|
||||
utilities/trie.go \
|
||||
protoc-gen-grpc-gateway \
|
||||
protoc-gen-grpc-gateway/descriptor \
|
||||
protoc-gen-grpc-gateway/descriptor/registry.go \
|
||||
protoc-gen-grpc-gateway/descriptor/services.go \
|
||||
protoc-gen-grpc-gateway/descriptor/types.go \
|
||||
protoc-gen-grpc-gateway/descriptor/grpc_api_configuration.go \
|
||||
protoc-gen-grpc-gateway/descriptor/grpc_api_service.go \
|
||||
protoc-gen-grpc-gateway/generator \
|
||||
protoc-gen-grpc-gateway/generator/generator.go \
|
||||
protoc-gen-grpc-gateway/gengateway \
|
||||
protoc-gen-grpc-gateway/gengateway/doc.go \
|
||||
protoc-gen-grpc-gateway/gengateway/generator.go \
|
||||
protoc-gen-grpc-gateway/gengateway/template.go \
|
||||
protoc-gen-grpc-gateway/httprule \
|
||||
protoc-gen-grpc-gateway/httprule/compile.go \
|
||||
protoc-gen-grpc-gateway/httprule/parse.go \
|
||||
protoc-gen-grpc-gateway/httprule/types.go \
|
||||
protoc-gen-grpc-gateway/main.go
|
||||
GATEWAY_PLUGIN_FLAGS?=
|
||||
SWAGGER_PLUGIN_FLAGS?=
|
||||
|
||||
GOOGLEAPIS_DIR=third_party/googleapis
|
||||
OUTPUT_DIR=_output
|
||||
|
||||
RUNTIME_PROTO=runtime/internal/stream_chunk.proto
|
||||
RUNTIME_GO=$(RUNTIME_PROTO:.proto=.pb.go)
|
||||
|
||||
OPENAPIV2_PROTO=protoc-gen-swagger/options/openapiv2.proto protoc-gen-swagger/options/annotations.proto
|
||||
OPENAPIV2_GO=$(OPENAPIV2_PROTO:.proto=.pb.go)
|
||||
|
||||
PKGMAP=Mgoogle/protobuf/descriptor.proto=$(GO_PLUGIN_PKG)/descriptor,Mexamples/proto/sub/message.proto=$(PKG)/examples/proto/sub
|
||||
ADDITIONAL_GW_FLAGS=
|
||||
ifneq "$(GATEWAY_PLUGIN_FLAGS)" ""
|
||||
ADDITIONAL_GW_FLAGS=,$(GATEWAY_PLUGIN_FLAGS)
|
||||
endif
|
||||
ADDITIONAL_SWG_FLAGS=
|
||||
ifneq "$(SWAGGER_PLUGIN_FLAGS)" ""
|
||||
ADDITIONAL_SWG_FLAGS=,$(SWAGGER_PLUGIN_FLAGS)
|
||||
endif
|
||||
SWAGGER_EXAMPLES=examples/proto/examplepb/echo_service.proto \
|
||||
examples/proto/examplepb/a_bit_of_everything.proto \
|
||||
examples/proto/examplepb/wrappers.proto \
|
||||
examples/proto/examplepb/unannotated_echo_service.proto
|
||||
EXAMPLES=examples/proto/examplepb/echo_service.proto \
|
||||
examples/proto/examplepb/a_bit_of_everything.proto \
|
||||
examples/proto/examplepb/stream.proto \
|
||||
examples/proto/examplepb/flow_combination.proto \
|
||||
examples/proto/examplepb/wrappers.proto \
|
||||
examples/proto/examplepb/unannotated_echo_service.proto
|
||||
EXAMPLE_SVCSRCS=$(EXAMPLES:.proto=.pb.go)
|
||||
EXAMPLE_GWSRCS=$(EXAMPLES:.proto=.pb.gw.go)
|
||||
EXAMPLE_SWAGGERSRCS=$(SWAGGER_EXAMPLES:.proto=.swagger.json)
|
||||
EXAMPLE_DEPS=examples/proto/sub/message.proto examples/proto/sub2/message.proto
|
||||
EXAMPLE_DEPSRCS=$(EXAMPLE_DEPS:.proto=.pb.go)
|
||||
|
||||
EXAMPLE_CLIENT_DIR=examples/clients
|
||||
ECHO_EXAMPLE_SPEC=examples/proto/examplepb/echo_service.swagger.json
|
||||
ECHO_EXAMPLE_SRCS=$(EXAMPLE_CLIENT_DIR)/echo/api_client.go \
|
||||
$(EXAMPLE_CLIENT_DIR)/echo/api_response.go \
|
||||
$(EXAMPLE_CLIENT_DIR)/echo/configuration.go \
|
||||
$(EXAMPLE_CLIENT_DIR)/echo/echo_service_api.go \
|
||||
$(EXAMPLE_CLIENT_DIR)/echo/examplepb_simple_message.go \
|
||||
$(EXAMPLE_CLIENT_DIR)/echo/examplepb_embedded.go
|
||||
ABE_EXAMPLE_SPEC=examples/proto/examplepb/a_bit_of_everything.swagger.json
|
||||
ABE_EXAMPLE_SRCS=$(EXAMPLE_CLIENT_DIR)/abe/a_bit_of_everything_nested.go \
|
||||
$(EXAMPLE_CLIENT_DIR)/abe/a_bit_of_everything_service_api.go \
|
||||
$(EXAMPLE_CLIENT_DIR)/abe/api_client.go \
|
||||
$(EXAMPLE_CLIENT_DIR)/abe/api_response.go \
|
||||
$(EXAMPLE_CLIENT_DIR)/abe/camel_case_service_name_api.go \
|
||||
$(EXAMPLE_CLIENT_DIR)/abe/configuration.go \
|
||||
$(EXAMPLE_CLIENT_DIR)/abe/echo_rpc_api.go \
|
||||
$(EXAMPLE_CLIENT_DIR)/abe/echo_service_api.go \
|
||||
$(EXAMPLE_CLIENT_DIR)/abe/examplepb_a_bit_of_everything.go \
|
||||
$(EXAMPLE_CLIENT_DIR)/abe/examplepb_body.go \
|
||||
$(EXAMPLE_CLIENT_DIR)/abe/examplepb_numeric_enum.go \
|
||||
$(EXAMPLE_CLIENT_DIR)/abe/nested_deep_enum.go \
|
||||
$(EXAMPLE_CLIENT_DIR)/abe/protobuf_empty.go \
|
||||
$(EXAMPLE_CLIENT_DIR)/abe/sub_string_message.go
|
||||
UNANNOTATED_ECHO_EXAMPLE_SPEC=examples/proto/examplepb/unannotated_echo_service.swagger.json
|
||||
UNANNOTATED_ECHO_EXAMPLE_SRCS=$(EXAMPLE_CLIENT_DIR)/unannotatedecho/api_client.go \
|
||||
$(EXAMPLE_CLIENT_DIR)/unannotatedecho/api_response.go \
|
||||
$(EXAMPLE_CLIENT_DIR)/unannotatedecho/configuration.go \
|
||||
$(EXAMPLE_CLIENT_DIR)/unannotatedecho/examplepb_unannotated_simple_message.go \
|
||||
$(EXAMPLE_CLIENT_DIR)/unannotatedecho/unannotated_echo_service_api.go
|
||||
EXAMPLE_CLIENT_SRCS=$(ECHO_EXAMPLE_SRCS) $(ABE_EXAMPLE_SRCS) $(UNANNOTATED_ECHO_EXAMPLE_SRCS)
|
||||
SWAGGER_CODEGEN=swagger-codegen
|
||||
|
||||
PROTOC_INC_PATH=$(dir $(shell which protoc))/../include
|
||||
|
||||
generate: $(RUNTIME_GO)
|
||||
|
||||
.SUFFIXES: .go .proto
|
||||
|
||||
$(GO_PLUGIN):
|
||||
go get $(GO_PLUGIN_PKG)
|
||||
go build -o $@ $(GO_PLUGIN_PKG)
|
||||
|
||||
$(RUNTIME_GO): $(RUNTIME_PROTO) $(GO_PLUGIN)
|
||||
protoc -I $(PROTOC_INC_PATH) --plugin=$(GO_PLUGIN) -I $(GOPATH)/src/$(GO_PTYPES_ANY_PKG) -I. --go_out=$(PKGMAP):. $(RUNTIME_PROTO)
|
||||
|
||||
$(OPENAPIV2_GO): $(OPENAPIV2_PROTO) $(GO_PLUGIN)
|
||||
protoc -I $(PROTOC_INC_PATH) --plugin=$(GO_PLUGIN) -I. --go_out=$(PKGMAP):$(GOPATH)/src $(OPENAPIV2_PROTO)
|
||||
|
||||
$(GATEWAY_PLUGIN): $(RUNTIME_GO) $(GATEWAY_PLUGIN_SRC)
|
||||
go build -o $@ $(GATEWAY_PLUGIN_PKG)
|
||||
|
||||
$(SWAGGER_PLUGIN): $(SWAGGER_PLUGIN_SRC) $(OPENAPIV2_GO)
|
||||
go build -o $@ $(SWAGGER_PLUGIN_PKG)
|
||||
|
||||
$(EXAMPLE_SVCSRCS): $(GO_PLUGIN) $(EXAMPLES)
|
||||
protoc -I $(PROTOC_INC_PATH) -I. -I$(GOOGLEAPIS_DIR) --plugin=$(GO_PLUGIN) --go_out=$(PKGMAP),plugins=grpc:. $(EXAMPLES)
|
||||
$(EXAMPLE_DEPSRCS): $(GO_PLUGIN) $(EXAMPLE_DEPS)
|
||||
mkdir -p $(OUTPUT_DIR)
|
||||
protoc -I $(PROTOC_INC_PATH) -I. --plugin=$(GO_PLUGIN) --go_out=$(PKGMAP),plugins=grpc:$(OUTPUT_DIR) $(@:.pb.go=.proto)
|
||||
cp $(OUTPUT_DIR)/$(PKG)/$@ $@ || cp $(OUTPUT_DIR)/$@ $@
|
||||
|
||||
$(EXAMPLE_GWSRCS): ADDITIONAL_GW_FLAGS:=$(ADDITIONAL_GW_FLAGS),grpc_api_configuration=examples/proto/examplepb/unannotated_echo_service.yaml
|
||||
$(EXAMPLE_GWSRCS): $(GATEWAY_PLUGIN) $(EXAMPLES)
|
||||
protoc -I $(PROTOC_INC_PATH) -I. -I$(GOOGLEAPIS_DIR) --plugin=$(GATEWAY_PLUGIN) --grpc-gateway_out=logtostderr=true,$(PKGMAP)$(ADDITIONAL_GW_FLAGS):. $(EXAMPLES)
|
||||
|
||||
$(EXAMPLE_SWAGGERSRCS): ADDITIONAL_SWG_FLAGS:=$(ADDITIONAL_SWG_FLAGS),grpc_api_configuration=examples/proto/examplepb/unannotated_echo_service.yaml
|
||||
$(EXAMPLE_SWAGGERSRCS): $(SWAGGER_PLUGIN) $(SWAGGER_EXAMPLES)
|
||||
protoc -I $(PROTOC_INC_PATH) -I. -I$(GOOGLEAPIS_DIR) --plugin=$(SWAGGER_PLUGIN) --swagger_out=logtostderr=true,$(PKGMAP)$(ADDITIONAL_SWG_FLAGS):. $(SWAGGER_EXAMPLES)
|
||||
|
||||
$(ECHO_EXAMPLE_SRCS): $(ECHO_EXAMPLE_SPEC)
|
||||
$(SWAGGER_CODEGEN) generate -i $(ECHO_EXAMPLE_SPEC) \
|
||||
-l go -o examples/clients/echo --additional-properties packageName=echo
|
||||
@rm -f $(EXAMPLE_CLIENT_DIR)/echo/README.md \
|
||||
$(EXAMPLE_CLIENT_DIR)/echo/git_push.sh \
|
||||
$(EXAMPLE_CLIENT_DIR)/echo/.travis.yml
|
||||
$(ABE_EXAMPLE_SRCS): $(ABE_EXAMPLE_SPEC)
|
||||
$(SWAGGER_CODEGEN) generate -i $(ABE_EXAMPLE_SPEC) \
|
||||
-l go -o examples/clients/abe --additional-properties packageName=abe
|
||||
@rm -f $(EXAMPLE_CLIENT_DIR)/abe/README.md \
|
||||
$(EXAMPLE_CLIENT_DIR)/abe/git_push.sh \
|
||||
$(EXAMPLE_CLIENT_DIR)/abe/.travis.yml
|
||||
$(UNANNOTATED_ECHO_EXAMPLE_SRCS): $(UNANNOTATED_ECHO_EXAMPLE_SPEC)
|
||||
$(SWAGGER_CODEGEN) generate -i $(UNANNOTATED_ECHO_EXAMPLE_SPEC) \
|
||||
-l go -o examples/clients/unannotatedecho --additional-properties packageName=unannotatedecho
|
||||
@rm -f $(EXAMPLE_CLIENT_DIR)/unannotatedecho/README.md \
|
||||
$(EXAMPLE_CLIENT_DIR)/unannotatedecho/git_push.sh \
|
||||
$(EXAMPLE_CLIENT_DIR)/unannotatedecho/.travis.yml
|
||||
|
||||
examples: $(EXAMPLE_SVCSRCS) $(EXAMPLE_GWSRCS) $(EXAMPLE_DEPSRCS) $(EXAMPLE_SWAGGERSRCS) $(EXAMPLE_CLIENT_SRCS)
|
||||
test: examples
|
||||
go test -race $(PKG)/...
|
||||
go test -race $(PKG)/examples/integration -args -network=unix -endpoint=test.sock
|
||||
changelog:
|
||||
docker run --rm \
|
||||
--interactive \
|
||||
--tty \
|
||||
-e "CHANGELOG_GITHUB_TOKEN=${CHANGELOG_GITHUB_TOKEN}" \
|
||||
-v "$(PWD):/usr/local/src/your-app" \
|
||||
ferrarimarco/github-changelog-generator \
|
||||
-u grpc-ecosystem \
|
||||
-p grpc-gateway \
|
||||
--author \
|
||||
--compare-link \
|
||||
--github-site=https://grpc-ecosystem.github.io/grpc-gateway \
|
||||
--unreleased-label "**Next release**" \
|
||||
--future-release=v1.4.1
|
||||
lint:
|
||||
golint --set_exit_status $(PKG)/runtime
|
||||
golint --set_exit_status $(PKG)/utilities/...
|
||||
golint --set_exit_status $(PKG)/protoc-gen-grpc-gateway/...
|
||||
golint --set_exit_status $(PKG)/protoc-gen-swagger/...
|
||||
go vet $(PKG)/runtime || true
|
||||
go vet $(PKG)/utilities/...
|
||||
go vet $(PKG)/protoc-gen-grpc-gateway/...
|
||||
go vet $(PKG)/protoc-gen-swagger/...
|
||||
|
||||
clean:
|
||||
rm -f $(GATEWAY_PLUGIN) $(SWAGGER_PLUGIN)
|
||||
distclean: clean
|
||||
rm -f $(GO_PLUGIN)
|
||||
realclean: distclean
|
||||
rm -f $(EXAMPLE_SVCSRCS) $(EXAMPLE_DEPSRCS)
|
||||
rm -f $(EXAMPLE_GWSRCS)
|
||||
rm -f $(EXAMPLE_SWAGGERSRCS)
|
||||
rm -f $(EXAMPLE_CLIENT_SRCS)
|
||||
rm -f $(OPENAPIV2_GO)
|
||||
|
||||
.PHONY: generate examples test lint clean distclean realclean
|
252
vendor/github.com/grpc-ecosystem/grpc-gateway/README.md
generated
vendored
Executable file
252
vendor/github.com/grpc-ecosystem/grpc-gateway/README.md
generated
vendored
Executable file
@ -0,0 +1,252 @@
|
||||
# grpc-gateway
|
||||
|
||||
[](https://travis-ci.org/grpc-ecosystem/grpc-gateway)
|
||||
|
||||
grpc-gateway is a plugin of [protoc](http://github.com/google/protobuf).
|
||||
It reads [gRPC](http://github.com/grpc/grpc-common) service definition,
|
||||
and generates a reverse-proxy server which translates a RESTful JSON API into gRPC.
|
||||
This server is generated according to [custom options](https://cloud.google.com/service-management/reference/rpc/google.api#http) in your gRPC definition.
|
||||
|
||||
It helps you to provide your APIs in both gRPC and RESTful style at the same time.
|
||||
|
||||

|
||||
|
||||
## Check out our [documentation](https://grpc-ecosystem.github.io/grpc-gateway/)!
|
||||
|
||||
## Background
|
||||
gRPC is great -- it generates API clients and server stubs in many programming languages, it is fast, easy-to-use, bandwidth-efficient and its design is combat-proven by Google.
|
||||
However, you might still want to provide a traditional RESTful API as well. Reasons can range from maintaining backwards-compatibility, supporting languages or clients not well supported by gRPC to simply maintaining the aesthetics and tooling involved with a RESTful architecture.
|
||||
|
||||
This project aims to provide that HTTP+JSON interface to your gRPC service. A small amount of configuration in your service to attach HTTP semantics is all that's needed to generate a reverse-proxy with this library.
|
||||
|
||||
## Installation
|
||||
First you need to install ProtocolBuffers 3.0.0-beta-3 or later.
|
||||
|
||||
```sh
|
||||
mkdir tmp
|
||||
cd tmp
|
||||
git clone https://github.com/google/protobuf
|
||||
cd protobuf
|
||||
./autogen.sh
|
||||
./configure
|
||||
make
|
||||
make check
|
||||
sudo make install
|
||||
```
|
||||
|
||||
Then, `go get -u` as usual the following packages:
|
||||
|
||||
```sh
|
||||
go get -u github.com/grpc-ecosystem/grpc-gateway/protoc-gen-grpc-gateway
|
||||
go get -u github.com/grpc-ecosystem/grpc-gateway/protoc-gen-swagger
|
||||
go get -u github.com/golang/protobuf/protoc-gen-go
|
||||
```
|
||||
|
||||
## Usage
|
||||
Make sure that your `$GOPATH/bin` is in your `$PATH`.
|
||||
|
||||
1. Define your service in gRPC
|
||||
|
||||
your_service.proto:
|
||||
```protobuf
|
||||
syntax = "proto3";
|
||||
package example;
|
||||
message StringMessage {
|
||||
string value = 1;
|
||||
}
|
||||
|
||||
service YourService {
|
||||
rpc Echo(StringMessage) returns (StringMessage) {}
|
||||
}
|
||||
```
|
||||
2. Add a [custom option](https://cloud.google.com/service-management/reference/rpc/google.api#http) to the .proto file
|
||||
|
||||
your_service.proto:
|
||||
```diff
|
||||
syntax = "proto3";
|
||||
package example;
|
||||
+
|
||||
+import "google/api/annotations.proto";
|
||||
+
|
||||
message StringMessage {
|
||||
string value = 1;
|
||||
}
|
||||
|
||||
service YourService {
|
||||
- rpc Echo(StringMessage) returns (StringMessage) {}
|
||||
+ rpc Echo(StringMessage) returns (StringMessage) {
|
||||
+ option (google.api.http) = {
|
||||
+ post: "/v1/example/echo"
|
||||
+ body: "*"
|
||||
+ };
|
||||
+ }
|
||||
}
|
||||
```
|
||||
|
||||
If you do not want to modify the proto file for use with grpc-gateway you can alternatively use an external [gRPC API Configuration](https://cloud.google.com/endpoints/docs/grpc/grpc-service-config) file. [Check our documentation](https://grpc-ecosystem.github.io/grpc-gateway/docs/grpcapiconfiguration.html) for more information.
|
||||
|
||||
3. Generate gRPC stub
|
||||
|
||||
```sh
|
||||
protoc -I/usr/local/include -I. \
|
||||
-I$GOPATH/src \
|
||||
-I$GOPATH/src/github.com/grpc-ecosystem/grpc-gateway/third_party/googleapis \
|
||||
--go_out=plugins=grpc:. \
|
||||
path/to/your_service.proto
|
||||
```
|
||||
|
||||
It will generate a stub file `path/to/your_service.pb.go`.
|
||||
4. Implement your service in gRPC as usual
|
||||
1. (Optional) Generate gRPC stub in the language you want.
|
||||
|
||||
e.g.
|
||||
```sh
|
||||
protoc -I/usr/local/include -I. \
|
||||
-I$GOPATH/src \
|
||||
-I$GOPATH/src/github.com/grpc-ecosystem/grpc-gateway/third_party/googleapis \
|
||||
--ruby_out=. \
|
||||
path/to/your/service_proto
|
||||
|
||||
protoc -I/usr/local/include -I. \
|
||||
-I$GOPATH/src \
|
||||
-I$GOPATH/src/github.com/grpc-ecosystem/grpc-gateway/third_party/googleapis \
|
||||
--plugin=protoc-gen-grpc=grpc_ruby_plugin \
|
||||
--grpc-ruby_out=. \
|
||||
path/to/your/service.proto
|
||||
```
|
||||
2. Add the googleapis-common-protos gem (or your language equivalent) as a dependency to your project.
|
||||
3. Implement your service
|
||||
|
||||
5. Generate reverse-proxy
|
||||
|
||||
```sh
|
||||
protoc -I/usr/local/include -I. \
|
||||
-I$GOPATH/src \
|
||||
-I$GOPATH/src/github.com/grpc-ecosystem/grpc-gateway/third_party/googleapis \
|
||||
--grpc-gateway_out=logtostderr=true:. \
|
||||
path/to/your_service.proto
|
||||
```
|
||||
|
||||
It will generate a reverse proxy `path/to/your_service.pb.gw.go`.
|
||||
|
||||
Note: After generating the code for each of the stubs, in order to build the code, you will want to run ```go get .``` from the directory containing the stubs.
|
||||
|
||||
6. Write an entrypoint
|
||||
|
||||
Now you need to write an entrypoint of the proxy server.
|
||||
```go
|
||||
package main
|
||||
|
||||
import (
|
||||
"flag"
|
||||
"net/http"
|
||||
|
||||
"github.com/golang/glog"
|
||||
"golang.org/x/net/context"
|
||||
"github.com/grpc-ecosystem/grpc-gateway/runtime"
|
||||
"google.golang.org/grpc"
|
||||
|
||||
gw "path/to/your_service_package"
|
||||
)
|
||||
|
||||
var (
|
||||
echoEndpoint = flag.String("echo_endpoint", "localhost:9090", "endpoint of YourService")
|
||||
)
|
||||
|
||||
func run() error {
|
||||
ctx := context.Background()
|
||||
ctx, cancel := context.WithCancel(ctx)
|
||||
defer cancel()
|
||||
|
||||
mux := runtime.NewServeMux()
|
||||
opts := []grpc.DialOption{grpc.WithInsecure()}
|
||||
err := gw.RegisterYourServiceHandlerFromEndpoint(ctx, mux, *echoEndpoint, opts)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
return http.ListenAndServe(":8080", mux)
|
||||
}
|
||||
|
||||
func main() {
|
||||
flag.Parse()
|
||||
defer glog.Flush()
|
||||
|
||||
if err := run(); err != nil {
|
||||
glog.Fatal(err)
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
7. (Optional) Generate swagger definitions
|
||||
|
||||
```sh
|
||||
protoc -I/usr/local/include -I. \
|
||||
-I$GOPATH/src \
|
||||
-I$GOPATH/src/github.com/grpc-ecosystem/grpc-gateway/third_party/googleapis \
|
||||
--swagger_out=logtostderr=true:. \
|
||||
path/to/your_service.proto
|
||||
```
|
||||
|
||||
## Parameters and flags
|
||||
`protoc-gen-grpc-gateway` supports custom mapping from Protobuf `import` to Golang import path.
|
||||
They are compatible to [the parameters with same names in `protoc-gen-go`](https://github.com/golang/protobuf#parameters).
|
||||
|
||||
In addition we also support the `request_context` parameter in order to use the `http.Request`'s Context (only for Go 1.7 and above).
|
||||
This parameter can be useful to pass request scoped context between the gateway and the gRPC service.
|
||||
|
||||
`protoc-gen-grpc-gateway` also supports some more command line flags to control logging. You can give these flags together with parameters above. Run `protoc-gen-grpc-gateway --help` for more details about the flags.
|
||||
|
||||
## More Examples
|
||||
More examples are available under `examples` directory.
|
||||
* `proto/examplepb/echo_service.proto`, `proto/examplepb/a_bit_of_everything.proto`, `proto/examplepb/unannotated_echo_service.proto`: service definition
|
||||
* `proto/examplepb/echo_service.pb.go`, `proto/examplepb/a_bit_of_everything.pb.go`, `proto/examplepb/unannotated_echo_service.pb.go`: [generated] stub of the service
|
||||
* `proto/examplepb/echo_service.pb.gw.go`, `proto/examplepb/a_bit_of_everything.pb.gw.go`, `proto/examplepb/uannotated_echo_service.pb.gw.go`: [generated] reverse proxy for the service
|
||||
* `proto/examplepb/unannotated_echo_service.yaml`: gRPC API Configuration for ```unannotated_echo_service.proto```
|
||||
* `server/main.go`: service implementation
|
||||
* `main.go`: entrypoint of the generated reverse proxy
|
||||
|
||||
To use the same port for custom HTTP handlers (e.g. serving `swagger.json`), gRPC-gateway, and a gRPC server, see [this code example by CoreOS](https://github.com/philips/grpc-gateway-example/blob/master/cmd/serve.go) (and its accompanying [blog post](https://coreos.com/blog/gRPC-protobufs-swagger.html))
|
||||
|
||||
## Features
|
||||
### Supported
|
||||
* Generating JSON API handlers
|
||||
* Method parameters in request body
|
||||
* Method parameters in request path
|
||||
* Method parameters in query string
|
||||
* Enum fields in path parameter (including repeated enum fields).
|
||||
* Mapping streaming APIs to newline-delimited JSON streams
|
||||
* Mapping HTTP headers with `Grpc-Metadata-` prefix to gRPC metadata (prefixed with `grpcgateway-`)
|
||||
* Optionally emitting API definition for [Swagger](http://swagger.io).
|
||||
* Setting [gRPC timeouts](http://www.grpc.io/docs/guides/wire.html) through inbound HTTP `Grpc-Timeout` header.
|
||||
* Partial support for [gRPC API Configuration]((https://cloud.google.com/endpoints/docs/grpc/grpc-service-config)) files as an alternative to annotation.
|
||||
|
||||
### Want to support
|
||||
But not yet.
|
||||
* Optionally generating the entrypoint. #8
|
||||
* `import_path` parameter
|
||||
|
||||
### No plan to support
|
||||
But patch is welcome.
|
||||
* Method parameters in HTTP headers
|
||||
* Handling trailer metadata
|
||||
* Encoding request/response body in XML
|
||||
* True bi-directional streaming. (Probably impossible?)
|
||||
|
||||
# Mapping gRPC to HTTP
|
||||
|
||||
* [How gRPC error codes map to HTTP status codes in the response](https://github.com/grpc-ecosystem/grpc-gateway/blob/master/runtime/errors.go#L15)
|
||||
* HTTP request source IP is added as `X-Forwarded-For` gRPC request header
|
||||
* HTTP request host is added as `X-Forwarded-Host` gRPC request header
|
||||
* HTTP `Authorization` header is added as `authorization` gRPC request header
|
||||
* Remaining Permanent HTTP header keys (as specified by the IANA [here](http://www.iana.org/assignments/message-headers/message-headers.xhtml) are prefixed with `grpcgateway-` and added with their values to gRPC request header
|
||||
* HTTP headers that start with 'Grpc-Metadata-' are mapped to gRPC metadata (prefixed with `grpcgateway-`)
|
||||
* While configurable, the default {un,}marshaling uses [jsonpb](https://godoc.org/github.com/golang/protobuf/jsonpb) with `OrigName: true`.
|
||||
|
||||
|
||||
# Contribution
|
||||
See [CONTRIBUTING.md](http://github.com/grpc-ecosystem/grpc-gateway/blob/master/CONTRIBUTING.md).
|
||||
|
||||
# License
|
||||
grpc-gateway is licensed under the BSD 3-Clause License.
|
||||
See [LICENSE.txt](https://github.com/grpc-ecosystem/grpc-gateway/blob/master/LICENSE.txt) for more details.
|
53
vendor/github.com/grpc-ecosystem/grpc-gateway/WORKSPACE
generated
vendored
Executable file
53
vendor/github.com/grpc-ecosystem/grpc-gateway/WORKSPACE
generated
vendored
Executable file
@ -0,0 +1,53 @@
|
||||
workspace(name = "grpc_ecosystem_grpc_gateway")
|
||||
|
||||
http_archive(
|
||||
name = "io_bazel_rules_go",
|
||||
url = "https://github.com/bazelbuild/rules_go/releases/download/0.10.3/rules_go-0.10.3.tar.gz",
|
||||
sha256 = "feba3278c13cde8d67e341a837f69a029f698d7a27ddbb2a202be7a10b22142a",
|
||||
)
|
||||
|
||||
http_archive(
|
||||
name = "bazel_gazelle",
|
||||
url = "https://github.com/bazelbuild/bazel-gazelle/releases/download/0.10.1/bazel-gazelle-0.10.1.tar.gz",
|
||||
sha256 = "d03625db67e9fb0905bbd206fa97e32ae9da894fe234a493e7517fd25faec914",
|
||||
)
|
||||
|
||||
load("@io_bazel_rules_go//go:def.bzl", "go_rules_dependencies", "go_register_toolchains")
|
||||
|
||||
go_rules_dependencies()
|
||||
|
||||
go_register_toolchains()
|
||||
|
||||
load("@bazel_gazelle//:deps.bzl", "gazelle_dependencies")
|
||||
|
||||
gazelle_dependencies()
|
||||
|
||||
load("@io_bazel_rules_go//go:def.bzl", "go_repository")
|
||||
|
||||
go_repository(
|
||||
name = "com_github_rogpeppe_fastuuid",
|
||||
commit = "6724a57986aff9bff1a1770e9347036def7c89f6",
|
||||
importpath = "github.com/rogpeppe/fastuuid",
|
||||
)
|
||||
|
||||
go_repository(
|
||||
name = "com_github_go_resty_resty",
|
||||
commit = "f8815663de1e64d57cdd4ee9e2b2fa96977a030e",
|
||||
importpath = "github.com/go-resty/resty",
|
||||
)
|
||||
|
||||
go_repository(
|
||||
name = "com_github_ghodss_yaml",
|
||||
commit = "0ca9ea5df5451ffdf184b4428c902747c2c11cd7",
|
||||
importpath = "github.com/ghodss/yaml",
|
||||
)
|
||||
|
||||
go_repository(
|
||||
name = "in_gopkg_yaml_v2",
|
||||
commit = "eb3733d160e74a9c7e442f435eb3bea458e1d19f",
|
||||
importpath = "gopkg.in/yaml.v2",
|
||||
)
|
||||
|
||||
load("//:repositories.bzl", "repositories")
|
||||
|
||||
repositories()
|
3
vendor/github.com/grpc-ecosystem/grpc-gateway/bin/.gitignore
generated
vendored
Executable file
3
vendor/github.com/grpc-ecosystem/grpc-gateway/bin/.gitignore
generated
vendored
Executable file
@ -0,0 +1,3 @@
|
||||
/protoc-gen-go
|
||||
/protoc-gen-grpc-gateway
|
||||
/protoc-gen-swagger
|
17
vendor/github.com/grpc-ecosystem/grpc-gateway/bin/coverage
generated
vendored
Executable file
17
vendor/github.com/grpc-ecosystem/grpc-gateway/bin/coverage
generated
vendored
Executable file
@ -0,0 +1,17 @@
|
||||
#!/bin/bash
|
||||
set -euo pipefail
|
||||
USE_BAZEL=${USE_BAZEL:-false}
|
||||
> coverage.txt
|
||||
|
||||
if [ "${USE_BAZEL}" = true ]; then
|
||||
# TODO(yugui) Support bazel
|
||||
exit 0
|
||||
fi
|
||||
|
||||
for d in $(go list ./... | grep -v vendor); do
|
||||
go test -race -coverprofile=profile.out -covermode=atomic $d
|
||||
if [ -f profile.out ]; then
|
||||
cat profile.out >> coverage.txt
|
||||
rm profile.out
|
||||
fi
|
||||
done
|
26
vendor/github.com/grpc-ecosystem/grpc-gateway/codegenerator/BUILD.bazel
generated
vendored
Executable file
26
vendor/github.com/grpc-ecosystem/grpc-gateway/codegenerator/BUILD.bazel
generated
vendored
Executable file
@ -0,0 +1,26 @@
|
||||
load("@io_bazel_rules_go//go:def.bzl", "go_library", "go_test")
|
||||
|
||||
package(default_visibility = ["//:generators"])
|
||||
|
||||
go_library(
|
||||
name = "go_default_library",
|
||||
srcs = [
|
||||
"doc.go",
|
||||
"parse_req.go",
|
||||
],
|
||||
importpath = "github.com/grpc-ecosystem/grpc-gateway/codegenerator",
|
||||
deps = [
|
||||
"@com_github_golang_protobuf//proto:go_default_library",
|
||||
"@com_github_golang_protobuf//protoc-gen-go/plugin:go_default_library",
|
||||
],
|
||||
)
|
||||
|
||||
go_test(
|
||||
name = "go_default_xtest",
|
||||
srcs = ["parse_req_test.go"],
|
||||
deps = [
|
||||
":go_default_library",
|
||||
"@com_github_golang_protobuf//proto:go_default_library",
|
||||
"@com_github_golang_protobuf//protoc-gen-go/plugin:go_default_library",
|
||||
],
|
||||
)
|
4
vendor/github.com/grpc-ecosystem/grpc-gateway/codegenerator/doc.go
generated
vendored
Executable file
4
vendor/github.com/grpc-ecosystem/grpc-gateway/codegenerator/doc.go
generated
vendored
Executable file
@ -0,0 +1,4 @@
|
||||
/*
|
||||
Package codegenerator contains reusable functions used by the code generators.
|
||||
*/
|
||||
package codegenerator
|
23
vendor/github.com/grpc-ecosystem/grpc-gateway/codegenerator/parse_req.go
generated
vendored
Executable file
23
vendor/github.com/grpc-ecosystem/grpc-gateway/codegenerator/parse_req.go
generated
vendored
Executable file
@ -0,0 +1,23 @@
|
||||
package codegenerator
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"io"
|
||||
"io/ioutil"
|
||||
|
||||
"github.com/golang/protobuf/proto"
|
||||
plugin "github.com/golang/protobuf/protoc-gen-go/plugin"
|
||||
)
|
||||
|
||||
// ParseRequest parses a code generator request from a proto Message.
|
||||
func ParseRequest(r io.Reader) (*plugin.CodeGeneratorRequest, error) {
|
||||
input, err := ioutil.ReadAll(r)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("failed to read code generator request: %v", err)
|
||||
}
|
||||
req := new(plugin.CodeGeneratorRequest)
|
||||
if err = proto.Unmarshal(input, req); err != nil {
|
||||
return nil, fmt.Errorf("failed to unmarshal code generator request: %v", err)
|
||||
}
|
||||
return req, nil
|
||||
}
|
69
vendor/github.com/grpc-ecosystem/grpc-gateway/codegenerator/parse_req_test.go
generated
vendored
Executable file
69
vendor/github.com/grpc-ecosystem/grpc-gateway/codegenerator/parse_req_test.go
generated
vendored
Executable file
@ -0,0 +1,69 @@
|
||||
package codegenerator_test
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"fmt"
|
||||
"io"
|
||||
"reflect"
|
||||
"strings"
|
||||
"testing"
|
||||
|
||||
"github.com/golang/protobuf/proto"
|
||||
plugin "github.com/golang/protobuf/protoc-gen-go/plugin"
|
||||
"github.com/grpc-ecosystem/grpc-gateway/codegenerator"
|
||||
)
|
||||
|
||||
var parseReqTests = []struct {
|
||||
name string
|
||||
in io.Reader
|
||||
out *plugin.CodeGeneratorRequest
|
||||
err error
|
||||
}{
|
||||
{
|
||||
"Empty input should produce empty output",
|
||||
mustGetReader(&plugin.CodeGeneratorRequest{}),
|
||||
&plugin.CodeGeneratorRequest{},
|
||||
nil,
|
||||
},
|
||||
{
|
||||
"Invalid reader should produce error",
|
||||
&invalidReader{},
|
||||
nil,
|
||||
fmt.Errorf("failed to read code generator request: invalid reader"),
|
||||
},
|
||||
{
|
||||
"Invalid proto message should produce error",
|
||||
strings.NewReader("{}"),
|
||||
nil,
|
||||
fmt.Errorf("failed to unmarshal code generator request: unexpected EOF"),
|
||||
},
|
||||
}
|
||||
|
||||
func TestParseRequest(t *testing.T) {
|
||||
for _, tt := range parseReqTests {
|
||||
t.Run(tt.name, func(t *testing.T) {
|
||||
out, err := codegenerator.ParseRequest(tt.in)
|
||||
if !reflect.DeepEqual(err, tt.err) {
|
||||
t.Errorf("got %v, want %v", err, tt.err)
|
||||
}
|
||||
if err == nil && !reflect.DeepEqual(*out, *tt.out) {
|
||||
t.Errorf("got %v, want %v", *out, *tt.out)
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
func mustGetReader(pb proto.Message) io.Reader {
|
||||
b, err := proto.Marshal(pb)
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
return bytes.NewBuffer(b)
|
||||
}
|
||||
|
||||
type invalidReader struct {
|
||||
}
|
||||
|
||||
func (*invalidReader) Read(p []byte) (int, error) {
|
||||
return 0, fmt.Errorf("invalid reader")
|
||||
}
|
1
vendor/github.com/grpc-ecosystem/grpc-gateway/docs/.gitignore
generated
vendored
Executable file
1
vendor/github.com/grpc-ecosystem/grpc-gateway/docs/.gitignore
generated
vendored
Executable file
@ -0,0 +1 @@
|
||||
_site
|
9
vendor/github.com/grpc-ecosystem/grpc-gateway/docs/Gemfile
generated
vendored
Executable file
9
vendor/github.com/grpc-ecosystem/grpc-gateway/docs/Gemfile
generated
vendored
Executable file
@ -0,0 +1,9 @@
|
||||
source 'https://rubygems.org'
|
||||
|
||||
group :development, :test do
|
||||
gem "github-pages", group: :jekyll_plugins
|
||||
gem 'jekyll', '~> 3.7.0'
|
||||
gem 'jekyll-redirect-from', '~> 0.13.0'
|
||||
gem 'jekyll-sitemap', '~> 1.2.0'
|
||||
gem 'jekyll-toc', '~> 0.5.1'
|
||||
end
|
256
vendor/github.com/grpc-ecosystem/grpc-gateway/docs/Gemfile.lock
generated
vendored
Executable file
256
vendor/github.com/grpc-ecosystem/grpc-gateway/docs/Gemfile.lock
generated
vendored
Executable file
@ -0,0 +1,256 @@
|
||||
GEM
|
||||
remote: https://rubygems.org/
|
||||
specs:
|
||||
activesupport (4.2.9)
|
||||
i18n (~> 0.7)
|
||||
minitest (~> 5.1)
|
||||
thread_safe (~> 0.3, >= 0.3.4)
|
||||
tzinfo (~> 1.1)
|
||||
addressable (2.5.2)
|
||||
public_suffix (>= 2.0.2, < 4.0)
|
||||
coffee-script (2.4.1)
|
||||
coffee-script-source
|
||||
execjs
|
||||
coffee-script-source (1.11.1)
|
||||
colorator (1.1.0)
|
||||
commonmarker (0.17.9)
|
||||
ruby-enum (~> 0.5)
|
||||
concurrent-ruby (1.0.5)
|
||||
em-websocket (0.5.1)
|
||||
eventmachine (>= 0.12.9)
|
||||
http_parser.rb (~> 0.6.0)
|
||||
ethon (0.11.0)
|
||||
ffi (>= 1.3.0)
|
||||
eventmachine (1.2.5)
|
||||
execjs (2.7.0)
|
||||
faraday (0.14.0)
|
||||
multipart-post (>= 1.2, < 3)
|
||||
ffi (1.9.23)
|
||||
forwardable-extended (2.6.0)
|
||||
gemoji (3.0.0)
|
||||
github-pages (182)
|
||||
activesupport (= 4.2.9)
|
||||
github-pages-health-check (= 1.4.0)
|
||||
jekyll (= 3.7.3)
|
||||
jekyll-avatar (= 0.5.0)
|
||||
jekyll-coffeescript (= 1.1.1)
|
||||
jekyll-commonmark-ghpages (= 0.1.5)
|
||||
jekyll-default-layout (= 0.1.4)
|
||||
jekyll-feed (= 0.9.3)
|
||||
jekyll-gist (= 1.5.0)
|
||||
jekyll-github-metadata (= 2.9.4)
|
||||
jekyll-mentions (= 1.3.0)
|
||||
jekyll-optional-front-matter (= 0.3.0)
|
||||
jekyll-paginate (= 1.1.0)
|
||||
jekyll-readme-index (= 0.2.0)
|
||||
jekyll-redirect-from (= 0.13.0)
|
||||
jekyll-relative-links (= 0.5.3)
|
||||
jekyll-remote-theme (= 0.2.3)
|
||||
jekyll-sass-converter (= 1.5.2)
|
||||
jekyll-seo-tag (= 2.4.0)
|
||||
jekyll-sitemap (= 1.2.0)
|
||||
jekyll-swiss (= 0.4.0)
|
||||
jekyll-theme-architect (= 0.1.1)
|
||||
jekyll-theme-cayman (= 0.1.1)
|
||||
jekyll-theme-dinky (= 0.1.1)
|
||||
jekyll-theme-hacker (= 0.1.1)
|
||||
jekyll-theme-leap-day (= 0.1.1)
|
||||
jekyll-theme-merlot (= 0.1.1)
|
||||
jekyll-theme-midnight (= 0.1.1)
|
||||
jekyll-theme-minimal (= 0.1.1)
|
||||
jekyll-theme-modernist (= 0.1.1)
|
||||
jekyll-theme-primer (= 0.5.3)
|
||||
jekyll-theme-slate (= 0.1.1)
|
||||
jekyll-theme-tactile (= 0.1.1)
|
||||
jekyll-theme-time-machine (= 0.1.1)
|
||||
jekyll-titles-from-headings (= 0.5.1)
|
||||
jemoji (= 0.9.0)
|
||||
kramdown (= 1.16.2)
|
||||
liquid (= 4.0.0)
|
||||
listen (= 3.1.5)
|
||||
mercenary (~> 0.3)
|
||||
minima (= 2.4.1)
|
||||
nokogiri (>= 1.8.1, < 2.0)
|
||||
rouge (= 2.2.1)
|
||||
terminal-table (~> 1.4)
|
||||
github-pages-health-check (1.4.0)
|
||||
addressable (~> 2.3)
|
||||
net-dns (~> 0.8)
|
||||
octokit (~> 4.0)
|
||||
public_suffix (~> 2.0)
|
||||
typhoeus (~> 1.3)
|
||||
html-pipeline (2.7.1)
|
||||
activesupport (>= 2)
|
||||
nokogiri (>= 1.4)
|
||||
http_parser.rb (0.6.0)
|
||||
i18n (0.9.5)
|
||||
concurrent-ruby (~> 1.0)
|
||||
jekyll (3.7.3)
|
||||
addressable (~> 2.4)
|
||||
colorator (~> 1.0)
|
||||
em-websocket (~> 0.5)
|
||||
i18n (~> 0.7)
|
||||
jekyll-sass-converter (~> 1.0)
|
||||
jekyll-watch (~> 2.0)
|
||||
kramdown (~> 1.14)
|
||||
liquid (~> 4.0)
|
||||
mercenary (~> 0.3.3)
|
||||
pathutil (~> 0.9)
|
||||
rouge (>= 1.7, < 4)
|
||||
safe_yaml (~> 1.0)
|
||||
jekyll-avatar (0.5.0)
|
||||
jekyll (~> 3.0)
|
||||
jekyll-coffeescript (1.1.1)
|
||||
coffee-script (~> 2.2)
|
||||
coffee-script-source (~> 1.11.1)
|
||||
jekyll-commonmark (1.2.0)
|
||||
commonmarker (~> 0.14)
|
||||
jekyll (>= 3.0, < 4.0)
|
||||
jekyll-commonmark-ghpages (0.1.5)
|
||||
commonmarker (~> 0.17.6)
|
||||
jekyll-commonmark (~> 1)
|
||||
rouge (~> 2)
|
||||
jekyll-default-layout (0.1.4)
|
||||
jekyll (~> 3.0)
|
||||
jekyll-feed (0.9.3)
|
||||
jekyll (~> 3.3)
|
||||
jekyll-gist (1.5.0)
|
||||
octokit (~> 4.2)
|
||||
jekyll-github-metadata (2.9.4)
|
||||
jekyll (~> 3.1)
|
||||
octokit (~> 4.0, != 4.4.0)
|
||||
jekyll-mentions (1.3.0)
|
||||
activesupport (~> 4.0)
|
||||
html-pipeline (~> 2.3)
|
||||
jekyll (~> 3.0)
|
||||
jekyll-optional-front-matter (0.3.0)
|
||||
jekyll (~> 3.0)
|
||||
jekyll-paginate (1.1.0)
|
||||
jekyll-readme-index (0.2.0)
|
||||
jekyll (~> 3.0)
|
||||
jekyll-redirect-from (0.13.0)
|
||||
jekyll (~> 3.3)
|
||||
jekyll-relative-links (0.5.3)
|
||||
jekyll (~> 3.3)
|
||||
jekyll-remote-theme (0.2.3)
|
||||
jekyll (~> 3.5)
|
||||
rubyzip (>= 1.2.1, < 3.0)
|
||||
typhoeus (>= 0.7, < 2.0)
|
||||
jekyll-sass-converter (1.5.2)
|
||||
sass (~> 3.4)
|
||||
jekyll-seo-tag (2.4.0)
|
||||
jekyll (~> 3.3)
|
||||
jekyll-sitemap (1.2.0)
|
||||
jekyll (~> 3.3)
|
||||
jekyll-swiss (0.4.0)
|
||||
jekyll-theme-architect (0.1.1)
|
||||
jekyll (~> 3.5)
|
||||
jekyll-seo-tag (~> 2.0)
|
||||
jekyll-theme-cayman (0.1.1)
|
||||
jekyll (~> 3.5)
|
||||
jekyll-seo-tag (~> 2.0)
|
||||
jekyll-theme-dinky (0.1.1)
|
||||
jekyll (~> 3.5)
|
||||
jekyll-seo-tag (~> 2.0)
|
||||
jekyll-theme-hacker (0.1.1)
|
||||
jekyll (~> 3.5)
|
||||
jekyll-seo-tag (~> 2.0)
|
||||
jekyll-theme-leap-day (0.1.1)
|
||||
jekyll (~> 3.5)
|
||||
jekyll-seo-tag (~> 2.0)
|
||||
jekyll-theme-merlot (0.1.1)
|
||||
jekyll (~> 3.5)
|
||||
jekyll-seo-tag (~> 2.0)
|
||||
jekyll-theme-midnight (0.1.1)
|
||||
jekyll (~> 3.5)
|
||||
jekyll-seo-tag (~> 2.0)
|
||||
jekyll-theme-minimal (0.1.1)
|
||||
jekyll (~> 3.5)
|
||||
jekyll-seo-tag (~> 2.0)
|
||||
jekyll-theme-modernist (0.1.1)
|
||||
jekyll (~> 3.5)
|
||||
jekyll-seo-tag (~> 2.0)
|
||||
jekyll-theme-primer (0.5.3)
|
||||
jekyll (~> 3.5)
|
||||
jekyll-github-metadata (~> 2.9)
|
||||
jekyll-seo-tag (~> 2.0)
|
||||
jekyll-theme-slate (0.1.1)
|
||||
jekyll (~> 3.5)
|
||||
jekyll-seo-tag (~> 2.0)
|
||||
jekyll-theme-tactile (0.1.1)
|
||||
jekyll (~> 3.5)
|
||||
jekyll-seo-tag (~> 2.0)
|
||||
jekyll-theme-time-machine (0.1.1)
|
||||
jekyll (~> 3.5)
|
||||
jekyll-seo-tag (~> 2.0)
|
||||
jekyll-titles-from-headings (0.5.1)
|
||||
jekyll (~> 3.3)
|
||||
jekyll-toc (0.5.2)
|
||||
nokogiri (~> 1.6)
|
||||
jekyll-watch (2.0.0)
|
||||
listen (~> 3.0)
|
||||
jemoji (0.9.0)
|
||||
activesupport (~> 4.0, >= 4.2.9)
|
||||
gemoji (~> 3.0)
|
||||
html-pipeline (~> 2.2)
|
||||
jekyll (~> 3.0)
|
||||
kramdown (1.16.2)
|
||||
liquid (4.0.0)
|
||||
listen (3.1.5)
|
||||
rb-fsevent (~> 0.9, >= 0.9.4)
|
||||
rb-inotify (~> 0.9, >= 0.9.7)
|
||||
ruby_dep (~> 1.2)
|
||||
mercenary (0.3.6)
|
||||
mini_portile2 (2.3.0)
|
||||
minima (2.4.1)
|
||||
jekyll (~> 3.5)
|
||||
jekyll-feed (~> 0.9)
|
||||
jekyll-seo-tag (~> 2.1)
|
||||
minitest (5.11.3)
|
||||
multipart-post (2.0.0)
|
||||
net-dns (0.8.0)
|
||||
nokogiri (1.8.2)
|
||||
mini_portile2 (~> 2.3.0)
|
||||
octokit (4.8.0)
|
||||
sawyer (~> 0.8.0, >= 0.5.3)
|
||||
pathutil (0.16.1)
|
||||
forwardable-extended (~> 2.6)
|
||||
public_suffix (2.0.5)
|
||||
rb-fsevent (0.10.3)
|
||||
rb-inotify (0.9.10)
|
||||
ffi (>= 0.5.0, < 2)
|
||||
rouge (2.2.1)
|
||||
ruby-enum (0.7.2)
|
||||
i18n
|
||||
ruby_dep (1.5.0)
|
||||
rubyzip (1.2.1)
|
||||
safe_yaml (1.0.4)
|
||||
sass (3.5.6)
|
||||
sass-listen (~> 4.0.0)
|
||||
sass-listen (4.0.0)
|
||||
rb-fsevent (~> 0.9, >= 0.9.4)
|
||||
rb-inotify (~> 0.9, >= 0.9.7)
|
||||
sawyer (0.8.1)
|
||||
addressable (>= 2.3.5, < 2.6)
|
||||
faraday (~> 0.8, < 1.0)
|
||||
terminal-table (1.8.0)
|
||||
unicode-display_width (~> 1.1, >= 1.1.1)
|
||||
thread_safe (0.3.6)
|
||||
typhoeus (1.3.0)
|
||||
ethon (>= 0.9.0)
|
||||
tzinfo (1.2.5)
|
||||
thread_safe (~> 0.1)
|
||||
unicode-display_width (1.3.0)
|
||||
|
||||
PLATFORMS
|
||||
ruby
|
||||
|
||||
DEPENDENCIES
|
||||
github-pages
|
||||
jekyll (~> 3.7.0)
|
||||
jekyll-redirect-from (~> 0.13.0)
|
||||
jekyll-sitemap (~> 1.2.0)
|
||||
jekyll-toc (~> 0.5.1)
|
||||
|
||||
BUNDLED WITH
|
||||
1.15.4
|
19
vendor/github.com/grpc-ecosystem/grpc-gateway/docs/_config.yaml
generated
vendored
Executable file
19
vendor/github.com/grpc-ecosystem/grpc-gateway/docs/_config.yaml
generated
vendored
Executable file
@ -0,0 +1,19 @@
|
||||
theme: jekyll-theme-architect
|
||||
|
||||
repository: grpc-ecosystem/grpc-gateway
|
||||
|
||||
collections:
|
||||
docs:
|
||||
output: true
|
||||
|
||||
defaults:
|
||||
- scope:
|
||||
path: ""
|
||||
values:
|
||||
layout: "default"
|
||||
|
||||
plugins:
|
||||
- jekyll-toc
|
||||
|
||||
exclude:
|
||||
- run.sh
|
11
vendor/github.com/grpc-ecosystem/grpc-gateway/docs/_docs/background.md
generated
vendored
Executable file
11
vendor/github.com/grpc-ecosystem/grpc-gateway/docs/_docs/background.md
generated
vendored
Executable file
@ -0,0 +1,11 @@
|
||||
---
|
||||
category: documentation
|
||||
---
|
||||
|
||||
# Background
|
||||
|
||||
gRPC is great -- it generates API clients and server stubs in many programming languages, it is fast, easy-to-use, bandwidth-efficient and its design is combat-proven by Google.
|
||||
However, you might still want to provide a traditional RESTful API as well. Reasons can range from maintaining backwards-compatibility, supporting languages or clients not well supported by gRPC to simply maintaining the aesthetics and tooling involved with a RESTful architecture.
|
||||
|
||||
This project aims to provide that HTTP+JSON interface to your gRPC service. A small amount of configuration in your service to attach HTTP semantics is all that's needed to generate a reverse-proxy with this library.
|
||||
|
94
vendor/github.com/grpc-ecosystem/grpc-gateway/docs/_docs/customizingyourgateway.md
generated
vendored
Executable file
94
vendor/github.com/grpc-ecosystem/grpc-gateway/docs/_docs/customizingyourgateway.md
generated
vendored
Executable file
@ -0,0 +1,94 @@
|
||||
---
|
||||
title: Customizing your gateway
|
||||
category: documentation
|
||||
order: 101
|
||||
---
|
||||
|
||||
# Customizing your gateway
|
||||
|
||||
## Message serialization
|
||||
|
||||
You might want to serialize request/response messages in MessagePack instead of JSON, for example.
|
||||
|
||||
1. Write a custom implementation of [`Marshaler`](http://godoc.org/github.com/grpc-ecosystem/grpc-gateway/runtime#Marshaler)
|
||||
2. Register your marshaler with [`WithMarshalerOption`](http://godoc.org/github.com/grpc-ecosystem/grpc-gateway/runtime#WithMarshalerOption)
|
||||
e.g.
|
||||
```go
|
||||
var m your.MsgPackMarshaler
|
||||
mux := runtime.NewServeMux(runtime.WithMarshalerOption("application/x-msgpack", m))
|
||||
```
|
||||
|
||||
You can see [the default implementation for JSON](https://github.com/grpc-ecosystem/grpc-gateway/blob/master/runtime/marshal_jsonpb.go) for reference.
|
||||
|
||||
## Mapping from HTTP request headers to gRPC client metadata
|
||||
You might not like [the default mapping rule](http://godoc.org/github.com/grpc-ecosystem/grpc-gateway/runtime#DefaultHeaderMatcher) and might want to pass through all the HTTP headers, for example.
|
||||
|
||||
1. Write a [`HeaderMatcherFunc`](http://godoc.org/github.com/grpc-ecosystem/grpc-gateway/runtime#HeaderMatcherFunc).
|
||||
2. Register the function with [`WithIncomingHeaderMatcher`](http://godoc.org/github.com/grpc-ecosystem/grpc-gateway/runtime#WithIncomingHeaderMatcher)
|
||||
|
||||
e.g.
|
||||
```go
|
||||
func yourMatcher(headerName string) (mdName string, ok bool) {
|
||||
...
|
||||
}
|
||||
...
|
||||
mux := runtime.NewServeMux(runtime.WithIncomingHeaderMatcher(yourMatcher))
|
||||
|
||||
```
|
||||
|
||||
## Mapping from gRPC server metadata to HTTP response headers
|
||||
ditto. Use [`WithOutgoingHeaderMatcher`](http://godoc.org/github.com/grpc-ecosystem/grpc-gateway/runtime#WithOutgoingHeaderMatcher)
|
||||
|
||||
## Mutate response messages or set response headers
|
||||
You might want to return a subset of response fields as HTTP response headers;
|
||||
You might want to simply set an application-specific token in a header.
|
||||
Or you might want to mutate the response messages to be returned.
|
||||
|
||||
1. Write a filter function.
|
||||
```go
|
||||
func myFilter(ctx context.Context, w http.ResponseWriter, resp proto.Message) error {
|
||||
w.Header().Set("X-My-Tracking-Token", resp.Token)
|
||||
resp.Token = ""
|
||||
return nil
|
||||
}
|
||||
```
|
||||
2. Register the filter with [`WithForwardResponseOption`](http://godoc.org/github.com/grpc-ecosystem/grpc-gateway/runtime#WithForwardResponseOption)
|
||||
|
||||
e.g.
|
||||
```go
|
||||
mux := runtime.NewServeMux(runtime.WithForwardResponseOption(myFilter))
|
||||
```
|
||||
|
||||
## Error handler
|
||||
http://mycodesmells.com/post/grpc-gateway-error-handler
|
||||
|
||||
## Replace a response forwarder per method
|
||||
You might want to keep the behavior of the current marshaler but change only a message forwarding of a certain API method.
|
||||
|
||||
1. write a custom forwarder which is compatible to [`ForwardResponseMessage`](http://godoc.org/github.com/grpc-ecosystem/grpc-gateway/runtime#ForwardResponseMessage) or [`ForwardResponseStream`](http://godoc.org/github.com/grpc-ecosystem/grpc-gateway/runtime#ForwardResponseStream).
|
||||
2. replace the default forwarder of the method with your one.
|
||||
|
||||
e.g. add `forwarder_overwrite.go` into the go package of the generated code,
|
||||
```go
|
||||
package generated
|
||||
|
||||
import (
|
||||
"net/http"
|
||||
|
||||
"github.com/grpc-ecosystem/grpc-gateway/runtime"
|
||||
"github.com/golang/protobuf/proto"
|
||||
"golang.org/x/net/context"
|
||||
)
|
||||
|
||||
func forwardCheckoutResp(ctx context.Context, mux *runtime.ServeMux, marshaler runtime.Marshaler, w http.ResponseWriter, req *http.Request, resp proto.Message, opts ...func(context.Context, http.ResponseWriter, proto.Message) error) {
|
||||
if someCondition(resp) {
|
||||
http.Error(w, "not enough credit", http. StatusPaymentRequired)
|
||||
return
|
||||
}
|
||||
runtime.ForwardResponseMessage(ctx, mux, marshaler, w, req, resp, opts...)
|
||||
}
|
||||
|
||||
func init() {
|
||||
forward_MyService_Checkout_0 = forwardCheckoutResp
|
||||
}
|
||||
```
|
83
vendor/github.com/grpc-ecosystem/grpc-gateway/docs/_docs/cygwin.md
generated
vendored
Executable file
83
vendor/github.com/grpc-ecosystem/grpc-gateway/docs/_docs/cygwin.md
generated
vendored
Executable file
@ -0,0 +1,83 @@
|
||||
---
|
||||
category: documentation
|
||||
title: Installation for Cygwin
|
||||
order: 1000
|
||||
---
|
||||
|
||||
#Installation for Cygwin
|
||||
|
||||

|
||||
## Installation
|
||||
First you need to install the [Go language](https://golang.org/dl/). Please install the latest version, not the one that is listed here.
|
||||
|
||||
wget -N https://storage.googleapis.com/golang/go1.8.1.windows-amd64.msi
|
||||
msiexec /i go1.8.1.windows-amd64.msi /passive /promptrestart
|
||||
|
||||
Then you need to install [ProtocolBuffers 3.0.0-beta-3](https://github.com/google/protobuf/releases) or later. Use the windows release while no native cygwin protoc with version 3 is available yet.
|
||||
|
||||
wget -N https://github.com/google/protobuf/releases/download/v3.2.0/protoc-3.2.0-win32.zip`
|
||||
7z x protoc-3.2.0-win32.zip -o/usr/local/
|
||||
|
||||
Then you need to setup your Go workspace. Create the workspace dir.
|
||||
|
||||
mkdir /home/user/go
|
||||
mkdir /home/user/go/bin
|
||||
mkdir /home/user/go/pkg
|
||||
mkdir /home/user/go/src
|
||||
|
||||
From an elevated cmd.exe prompt set the GOPATH variable in windows and add the `$GOPATH/bin` directory to your path using `reg add` instead of `setx` because [setx can truncated your PATH variable to 1024 characters](https://encrypted.google.com/search?hl=en&q=setx%20truncates%20PATH%201024#safe=off&hl=en&q=setx+truncated+PATH+1024).
|
||||
|
||||
setx GOPATH c:\path\to\your\cygwin\home\user\go /M
|
||||
set pathkey="HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Session Manager\Environment"
|
||||
for /F "usebackq skip=2 tokens=2*" %A IN (`reg query %pathkey% /v Path`) do (reg add %pathkey% /f /v Path /t REG_SZ /d "%B;c:\path\to\your\cygwin\home\user\go\bin")
|
||||
|
||||
Then `go get -u -v` the following packages:
|
||||
|
||||
go get -u -v github.com/grpc-ecosystem/grpc-gateway/protoc-gen-grpc-gateway
|
||||
go get -u -v github.com/grpc-ecosystem/grpc-gateway/protoc-gen-swagger
|
||||
go get -u -v github.com/golang/protobuf/protoc-gen-go
|
||||
|
||||
This will probably fail with similar output.
|
||||
|
||||
github.com/grpc-ecosystem/grpc-gateway (download)
|
||||
# cd .; git clone https://github.com/grpc-ecosystem/grpc-gateway C:\path\to\your\cygwin\home\user\go\src\github.com\grpc-ecosystem\grpc-gateway
|
||||
Cloning into 'C:\path\to\your\cygwin\home\user\go\src\github.com\grpc-ecosystem\grpc-gateway'...
|
||||
fatal: Invalid path '/home/user/go/C:\path\to\your\cygwin\home\user\go\src\github.com\grpc-ecosystem\grpc-gateway': No such file or directory
|
||||
package github.com/grpc-ecosystem/grpc-gateway/protoc-gen-grpc-gateway: exit status 128
|
||||
|
||||
To fix this you need to run the `go get -u -v` commands and look for all lines starting with `# cd .; `.
|
||||
Copy and paste these lines into your shell and change the clone destination directories.
|
||||
|
||||
git clone https://github.com/grpc-ecosystem/grpc-gateway $(cygpath -u $GOPATH)/src/github.com/grpc-ecosystem/grpc-gateway
|
||||
git clone https://github.com/golang/glog $(cygpath -u $GOPATH)/src/github.com/golang/glog
|
||||
git clone https://github.com/golang/protobuf $(cygpath -u $GOPATH)/src/github.com/golang/protobuf
|
||||
git clone https://github.com/google/go-genproto $(cygpath -u $GOPATH)/src/google.golang.org/genproto
|
||||
|
||||
Once the clone operations are finished the `go get -u -v` commands shouldn't give you an error anymore.
|
||||
|
||||
## Usage
|
||||
Follow the [instuctions](https://github.com/grpc-ecosystem/grpc-gateway#usage) in the [README](https://github.com/grpc-ecosystem/grpc-gateway).
|
||||
|
||||
Adjust steps 3, 5 and 7 like this. protoc expects native windows paths.
|
||||
|
||||
protoc -I. -I$(cygpath -w /usr/local/include) -I${GOPATH}/src -I${GOPATH}/src/github.com/grpc-ecosystem/grpc-gateway/third_party/googleapis --go_out=plugins=grpc:. ./path/to/your_service.proto
|
||||
protoc -I. -I$(cygpath -w /usr/local/include) -I${GOPATH}/src -I${GOPATH}/src/github.com/grpc-ecosystem/grpc-gateway/third_party/googleapis --grpc-gateway_out=logtostderr=true:. ./path/to/your_service.proto
|
||||
protoc -I. -I$(cygpath -w /usr/local/include) -I${GOPATH}/src -I${GOPATH}/src/github.com/grpc-ecosystem/grpc-gateway/third_party/googleapis --swagger_out=logtostderr=true:. ./path/to/your_service.proto
|
||||
|
||||
Then `cd` into the directory where your entry-point `main.go` file is located and run
|
||||
|
||||
go get -v
|
||||
|
||||
This will fail like during the Installation. Look for all lines starting with `# cd .; ` and copy and paste these lines into your shell and change the clone destination directories.
|
||||
|
||||
git clone https://go.googlesource.com/net $(cygpath -u $GOPATH)/src/golang.org/x/net
|
||||
git clone https://go.googlesource.com/text $(cygpath -u $GOPATH)/src/golang.org/x/text
|
||||
git clone https://github.com/grpc/grpc-go $(cygpath -u $GOPATH)/src/google.golang.org/grpc
|
||||
|
||||
Once the clone operations are finished the `go get -v` commands shouldn't give you an error anymore.
|
||||
|
||||
Then run
|
||||
|
||||
go install
|
||||
|
||||
to compile and install your grpc-gateway service into `$GOPATH/bin`.
|
17
vendor/github.com/grpc-ecosystem/grpc-gateway/docs/_docs/examples.md
generated
vendored
Executable file
17
vendor/github.com/grpc-ecosystem/grpc-gateway/docs/_docs/examples.md
generated
vendored
Executable file
@ -0,0 +1,17 @@
|
||||
---
|
||||
category: documentation
|
||||
---
|
||||
|
||||
# Examples
|
||||
|
||||
Examples are available under `examples` directory.
|
||||
* `proto/examplepb/echo_service.proto`, `proto/examplepb/a_bit_of_everything.proto`, `proto/examplepb/unannotated_echo_service.proto`: service definition
|
||||
* `proto/examplepb/echo_service.pb.go`, `proto/examplepb/a_bit_of_everything.pb.go`, `proto/examplepb/unannotated_echo_service.pb.go`: [generated] stub of the service
|
||||
* `proto/examplepb/echo_service.pb.gw.go`, `proto/examplepb/a_bit_of_everything.pb.gw.go`, `proto/examplepb/uannotated_echo_service.pb.gw.go`: [generated] reverse proxy for the service
|
||||
* `proto/examplepb/unannotated_echo_service.yaml`: gRPC API Configuration for ```unannotated_echo_service.proto```
|
||||
* `server/main.go`: service implementation
|
||||
* `main.go`: entrypoint of the generated reverse proxy
|
||||
|
||||
To use the same port for custom HTTP handlers (e.g. serving `swagger.json`), gRPC-gateway, and a gRPC server, see [this code example by CoreOS](https://github.com/philips/grpc-gateway-example/blob/master/cmd/serve.go) (and its accompanying [blog post](https://coreos.com/blog/gRPC-protobufs-swagger.html))
|
||||
|
||||
|
32
vendor/github.com/grpc-ecosystem/grpc-gateway/docs/_docs/faq.md
generated
vendored
Executable file
32
vendor/github.com/grpc-ecosystem/grpc-gateway/docs/_docs/faq.md
generated
vendored
Executable file
@ -0,0 +1,32 @@
|
||||
---
|
||||
category: documentation
|
||||
title: FAQ
|
||||
---
|
||||
|
||||
# FAQ
|
||||
|
||||
## How can I write the annotations which grpc-gateway requires?
|
||||
Grpc-gateway follows the spec of [`google.api.HttpRule`](https://github.com/googleapis/googleapis/blob/master/google/api/http.proto).
|
||||
So first check out the documentation if it is feasible in the spec.
|
||||
|
||||
See also [a past discussion](https://groups.google.com/d/msg/grpc-io/Xqx80hG0D44/VNCDHjeE6pUJ) in grpc-io mailing list.
|
||||
|
||||
## I want to support a certain style of HTTP request but the code generated by grpc-gateway does not. How can I support this style?
|
||||
See the question above at first.
|
||||
|
||||
Grpc-gateway is intended to cover 80% of use cases without forcing you to write comprehensive but complicated annotations. So grpc-gateway itself does not always cover all the use cases you have by design. In other words, grpc-gateway automates typical boring boilerplate mapping between gRPC and HTTP/1 communication, but it does not do arbitrarily complex custom mappings for you.
|
||||
|
||||
On the other hand, you can still add whatever you want as a middleware which wraps [`runtime.ServeMux`](http://godoc.org/github.com/grpc-ecosystem/grpc-gateway/runtime#ServeMux). Since `runtime.ServeMux` is just a standard [`http.Handler`](http://golang.org/pkg/http#Handler), you can easily write a custom wrapper of `runtime.ServeMux`, leveraged with existing third-party libraries in Go.
|
||||
e.g. https://github.com/grpc-ecosystem/grpc-gateway/blob/master/examples/main.go
|
||||
|
||||
## My gRPC server is written in (Scala|C++|Ruby|Haskell|....). Is there a (Scala|C++|Ruby|Haskell|....) version of grpc-gateway?
|
||||
|
||||
AFAIK, no. But it should not be a big issue because the reverse-proxy which grpc-gateway generates usually works as an independent process and communicates with your gRPC server over TCP or a unix-domain socket.
|
||||
|
||||
## Why are the models in the swagger specification prefixed with the last part of the proto package name?
|
||||
|
||||
The reason to generate the prefixes is that we don't have a guaranteed unique namespace. If two packages produce different Foo messages then we will have trouble.
|
||||
|
||||
## Why not strip the prefix?
|
||||
|
||||
When a message is added which happens to conflict with another message (e.g. by importing a message with the same name from a different package) it will break code that is very far away from the code that changed. This is in an effort to adhere to the [principle of least astonishment](https://en.wikipedia.org/wiki/Principle_of_least_astonishment).
|
30
vendor/github.com/grpc-ecosystem/grpc-gateway/docs/_docs/features.md
generated
vendored
Executable file
30
vendor/github.com/grpc-ecosystem/grpc-gateway/docs/_docs/features.md
generated
vendored
Executable file
@ -0,0 +1,30 @@
|
||||
---
|
||||
category: documentation
|
||||
---
|
||||
|
||||
# Features
|
||||
|
||||
## Supported
|
||||
* Generating JSON API handlers
|
||||
* Method parameters in request body
|
||||
* Method parameters in request path
|
||||
* Method parameters in query string
|
||||
* Enum fields in path parameter (including repeated enum fields).
|
||||
* Mapping streaming APIs to newline-delimited JSON streams
|
||||
* Mapping HTTP headers with `Grpc-Metadata-` prefix to gRPC metadata (prefixed with `grpcgateway-`)
|
||||
* Optionally emitting API definition for [Swagger](http://swagger.io).
|
||||
* Setting [gRPC timeouts](http://www.grpc.io/docs/guides/wire.html) through inbound HTTP `Grpc-Timeout` header.
|
||||
* Partial support for [gRPC API Configuration](https://cloud.google.com/endpoints/docs/grpc/grpc-service-config) files as an alternative to annotation.
|
||||
|
||||
## Want to support
|
||||
But not yet.
|
||||
* Optionally generating the entrypoint. #8
|
||||
* `import_path` parameter
|
||||
|
||||
## No plan to support
|
||||
But patch is welcome.
|
||||
* Method parameters in HTTP headers
|
||||
* Handling trailer metadata
|
||||
* Encoding request/response body in XML
|
||||
* True bi-directional streaming. (Probably impossible?)
|
||||
|
149
vendor/github.com/grpc-ecosystem/grpc-gateway/docs/_docs/grpcapiconfiguration.md
generated
vendored
Executable file
149
vendor/github.com/grpc-ecosystem/grpc-gateway/docs/_docs/grpcapiconfiguration.md
generated
vendored
Executable file
@ -0,0 +1,149 @@
|
||||
---
|
||||
title: Usage without annotations (gRPC API Configuration)
|
||||
category: documentation
|
||||
order: 100
|
||||
---
|
||||
|
||||
# gRPC API Configuration
|
||||
In some sitations annotating the .proto file of a service is not an option. For example you might not have control over the .proto file or you might want to expose the same gRPC API multiple times in completely different ways.
|
||||
|
||||
Google Cloud Platform offers a way to do this for services hosted with them called ["gRPC API Configuration"](https://cloud.google.com/endpoints/docs/grpc/grpc-service-config). It can be used to define the behavior of a gRPC API service without modifications to the service itself in the form of [YAML](https://en.wikipedia.org/wiki/YAML) configuration files.
|
||||
|
||||
grpc-gateway generators implement the [HTTP rules part](https://cloud.google.com/endpoints/docs/grpc-service-config/reference/rpc/google.api#httprule) of this specification. This allows you to take a completely unannotated service proto file, add a YAML file describing its HTTP endpoints and use them together like a annotated proto file with the grpc-gateway generators.
|
||||
|
||||
## Usage of gRPC API Configuration YAML files
|
||||
The following is equivalent to the basic [usage example](usage.html) but without direct annotation for grpc-gateway in the .proto file. Only some steps require minor changes to use a gRPC API Configuration YAML file instead:
|
||||
|
||||
1. Define your service in gRPC as usual
|
||||
|
||||
your_service.proto:
|
||||
```protobuf
|
||||
syntax = "proto3";
|
||||
package example;
|
||||
message StringMessage {
|
||||
string value = 1;
|
||||
}
|
||||
|
||||
service YourService {
|
||||
rpc Echo(StringMessage) returns (StringMessage) {}
|
||||
}
|
||||
```
|
||||
|
||||
2. Instead of annotating the .proto file in this step leave it untouched and create a `your_service.yaml` with the following content:
|
||||
```yaml
|
||||
type: google.api.Service
|
||||
config_version: 3
|
||||
|
||||
http:
|
||||
rules:
|
||||
- selector: example.YourService.Echo
|
||||
post: /v1/example/echo
|
||||
body: "*"
|
||||
```
|
||||
Use a [linter](http://www.yamllint.com/) to validate your YAML.
|
||||
|
||||
3. Generate gRPC stub as before
|
||||
|
||||
```sh
|
||||
protoc -I/usr/local/include -I. \
|
||||
-I$GOPATH/src \
|
||||
-I$GOPATH/src/github.com/grpc-ecosystem/grpc-gateway/third_party/googleapis \
|
||||
--go_out=plugins=grpc:. \
|
||||
path/to/your_service.proto
|
||||
```
|
||||
|
||||
It will generate a stub file `path/to/your_service.pb.go`.
|
||||
4. Implement your service in gRPC as usual
|
||||
1. (Optional) Generate gRPC stub in the language you want.
|
||||
|
||||
e.g.
|
||||
```sh
|
||||
protoc -I/usr/local/include -I. \
|
||||
-I$GOPATH/src \
|
||||
-I$GOPATH/src/github.com/grpc-ecosystem/grpc-gateway/third_party/googleapis \
|
||||
--ruby_out=. \
|
||||
path/to/your/service_proto
|
||||
|
||||
protoc -I/usr/local/include -I. \
|
||||
-I$GOPATH/src \
|
||||
-I$GOPATH/src/github.com/grpc-ecosystem/grpc-gateway/third_party/googleapis \
|
||||
--plugin=protoc-gen-grpc=grpc_ruby_plugin \
|
||||
--grpc-ruby_out=. \
|
||||
path/to/your/service.proto
|
||||
```
|
||||
2. Add the googleapis-common-protos gem (or your language equivalent) as a dependency to your project.
|
||||
3. Implement your service
|
||||
|
||||
5. Generate reverse-proxy. Here we have to pass the path to the `your_service.yaml` in addition to the .proto file:
|
||||
```sh
|
||||
protoc -I/usr/local/include -I. \
|
||||
-I$GOPATH/src \
|
||||
-I$GOPATH/src/github.com/grpc-ecosystem/grpc-gateway/third_party/googleapis \
|
||||
--grpc-gateway_out=logtostderr=true,grpc_api_configuration=path/to/your_service.yaml:. \
|
||||
path/to/your_service.proto
|
||||
```
|
||||
|
||||
This will generate a reverse proxy `path/to/your_service.pb.gw.go` that is identical to the one produced for the annotated proto.
|
||||
|
||||
Note: After generating the code for each of the stubs, in order to build the code, you will want to run ```go get .``` from the directory containing the stubs.
|
||||
|
||||
6. Write an entrypoint
|
||||
|
||||
Now you need to write an entrypoint of the proxy server. This step is the same whether the file is annotated or not.
|
||||
```go
|
||||
package main
|
||||
|
||||
import (
|
||||
"flag"
|
||||
"net/http"
|
||||
|
||||
"github.com/golang/glog"
|
||||
"golang.org/x/net/context"
|
||||
"github.com/grpc-ecosystem/grpc-gateway/runtime"
|
||||
"google.golang.org/grpc"
|
||||
|
||||
gw "path/to/your_service_package"
|
||||
)
|
||||
|
||||
var (
|
||||
echoEndpoint = flag.String("echo_endpoint", "localhost:9090", "endpoint of YourService")
|
||||
)
|
||||
|
||||
func run() error {
|
||||
ctx := context.Background()
|
||||
ctx, cancel := context.WithCancel(ctx)
|
||||
defer cancel()
|
||||
|
||||
mux := runtime.NewServeMux()
|
||||
opts := []grpc.DialOption{grpc.WithInsecure()}
|
||||
err := gw.RegisterYourServiceHandlerFromEndpoint(ctx, mux, *echoEndpoint, opts)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
return http.ListenAndServe(":8080", mux)
|
||||
}
|
||||
|
||||
func main() {
|
||||
flag.Parse()
|
||||
defer glog.Flush()
|
||||
|
||||
if err := run(); err != nil {
|
||||
glog.Fatal(err)
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
7. (Optional) Generate swagger definitions
|
||||
|
||||
Swagger generation in this step is equivalent to gateway generation. Again pass the path to the yaml file in addition to the proto:
|
||||
|
||||
```sh
|
||||
protoc -I/usr/local/include -I. \
|
||||
-I$GOPATH/src \
|
||||
-I$GOPATH/src/github.com/grpc-ecosystem/grpc-gateway/third_party/googleapis \
|
||||
--swagger_out=logtostderr=true,grpc_api_configuration=path/to/your_service.yaml:. \
|
||||
path/to/your_service.proto
|
||||
```
|
||||
|
||||
All other steps work as before. If you want you can remove the googleapis include path in step 3 and 4 as the unannotated proto no longer requires them.
|
194
vendor/github.com/grpc-ecosystem/grpc-gateway/docs/_docs/usage.md
generated
vendored
Executable file
194
vendor/github.com/grpc-ecosystem/grpc-gateway/docs/_docs/usage.md
generated
vendored
Executable file
@ -0,0 +1,194 @@
|
||||
---
|
||||
category: documentation
|
||||
---
|
||||
|
||||
# How do I use this?
|
||||
|
||||
## Installation
|
||||
First you need to install ProtocolBuffers 3.0.0-beta-3 or later.
|
||||
|
||||
```sh
|
||||
mkdir tmp
|
||||
cd tmp
|
||||
git clone https://github.com/google/protobuf
|
||||
cd protobuf
|
||||
./autogen.sh
|
||||
./configure
|
||||
make
|
||||
make check
|
||||
sudo make install
|
||||
```
|
||||
|
||||
Then, `go get -u` as usual the following packages:
|
||||
|
||||
```sh
|
||||
go get -u github.com/grpc-ecosystem/grpc-gateway/protoc-gen-grpc-gateway
|
||||
go get -u github.com/grpc-ecosystem/grpc-gateway/protoc-gen-swagger
|
||||
go get -u github.com/golang/protobuf/protoc-gen-go
|
||||
```
|
||||
|
||||
## Usage
|
||||
Make sure that your `$GOPATH/bin` is in your `$PATH`.
|
||||
|
||||
1. Define your service in gRPC
|
||||
|
||||
your_service.proto:
|
||||
```protobuf
|
||||
syntax = "proto3";
|
||||
package example;
|
||||
message StringMessage {
|
||||
string value = 1;
|
||||
}
|
||||
|
||||
service YourService {
|
||||
rpc Echo(StringMessage) returns (StringMessage) {}
|
||||
}
|
||||
```
|
||||
2. Add a [custom option](https://cloud.google.com/service-management/reference/rpc/google.api#http) to the .proto file
|
||||
|
||||
your_service.proto:
|
||||
```diff
|
||||
syntax = "proto3";
|
||||
package example;
|
||||
+
|
||||
+import "google/api/annotations.proto";
|
||||
+
|
||||
message StringMessage {
|
||||
string value = 1;
|
||||
}
|
||||
|
||||
service YourService {
|
||||
- rpc Echo(StringMessage) returns (StringMessage) {}
|
||||
+ rpc Echo(StringMessage) returns (StringMessage) {
|
||||
+ option (google.api.http) = {
|
||||
+ post: "/v1/example/echo"
|
||||
+ body: "*"
|
||||
+ };
|
||||
+ }
|
||||
}
|
||||
```
|
||||
|
||||
If you do not want to modify the proto file for use with grpc-gateway you can alternatively use an external [gRPC API Configuration](https://cloud.google.com/endpoints/docs/grpc/grpc-service-config) file. [Check our documentation](grpcapiconfiguration.html) for more information.
|
||||
|
||||
3. Generate gRPC stub
|
||||
|
||||
```sh
|
||||
protoc -I/usr/local/include -I. \
|
||||
-I$GOPATH/src \
|
||||
-I$GOPATH/src/github.com/grpc-ecosystem/grpc-gateway/third_party/googleapis \
|
||||
--go_out=plugins=grpc:. \
|
||||
path/to/your_service.proto
|
||||
```
|
||||
|
||||
It will generate a stub file `path/to/your_service.pb.go`.
|
||||
4. Implement your service in gRPC as usual
|
||||
1. (Optional) Generate gRPC stub in the language you want.
|
||||
|
||||
e.g.
|
||||
```sh
|
||||
protoc -I/usr/local/include -I. \
|
||||
-I$GOPATH/src \
|
||||
-I$GOPATH/src/github.com/grpc-ecosystem/grpc-gateway/third_party/googleapis \
|
||||
--ruby_out=. \
|
||||
path/to/your/service_proto
|
||||
|
||||
protoc -I/usr/local/include -I. \
|
||||
-I$GOPATH/src \
|
||||
-I$GOPATH/src/github.com/grpc-ecosystem/grpc-gateway/third_party/googleapis \
|
||||
--plugin=protoc-gen-grpc=grpc_ruby_plugin \
|
||||
--grpc-ruby_out=. \
|
||||
path/to/your/service.proto
|
||||
```
|
||||
2. Add the googleapis-common-protos gem (or your language equivalent) as a dependency to your project.
|
||||
3. Implement your service
|
||||
|
||||
5. Generate reverse-proxy
|
||||
|
||||
```sh
|
||||
protoc -I/usr/local/include -I. \
|
||||
-I$GOPATH/src \
|
||||
-I$GOPATH/src/github.com/grpc-ecosystem/grpc-gateway/third_party/googleapis \
|
||||
--grpc-gateway_out=logtostderr=true:. \
|
||||
path/to/your_service.proto
|
||||
```
|
||||
|
||||
It will generate a reverse proxy `path/to/your_service.pb.gw.go`.
|
||||
|
||||
Note: After generating the code for each of the stubs, in order to build the code, you will want to run ```go get .``` from the directory containing the stubs.
|
||||
|
||||
6. Write an entrypoint
|
||||
|
||||
Now you need to write an entrypoint of the proxy server.
|
||||
```go
|
||||
package main
|
||||
|
||||
import (
|
||||
"flag"
|
||||
"net/http"
|
||||
|
||||
"github.com/golang/glog"
|
||||
"golang.org/x/net/context"
|
||||
"github.com/grpc-ecosystem/grpc-gateway/runtime"
|
||||
"google.golang.org/grpc"
|
||||
|
||||
gw "path/to/your_service_package"
|
||||
)
|
||||
|
||||
var (
|
||||
echoEndpoint = flag.String("echo_endpoint", "localhost:9090", "endpoint of YourService")
|
||||
)
|
||||
|
||||
func run() error {
|
||||
ctx := context.Background()
|
||||
ctx, cancel := context.WithCancel(ctx)
|
||||
defer cancel()
|
||||
|
||||
mux := runtime.NewServeMux()
|
||||
opts := []grpc.DialOption{grpc.WithInsecure()}
|
||||
err := gw.RegisterYourServiceHandlerFromEndpoint(ctx, mux, *echoEndpoint, opts)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
return http.ListenAndServe(":8080", mux)
|
||||
}
|
||||
|
||||
func main() {
|
||||
flag.Parse()
|
||||
defer glog.Flush()
|
||||
|
||||
if err := run(); err != nil {
|
||||
glog.Fatal(err)
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
7. (Optional) Generate swagger definitions
|
||||
|
||||
```sh
|
||||
protoc -I/usr/local/include -I. \
|
||||
-I$GOPATH/src \
|
||||
-I$GOPATH/src/github.com/grpc-ecosystem/grpc-gateway/third_party/googleapis \
|
||||
--swagger_out=logtostderr=true:. \
|
||||
path/to/your_service.proto
|
||||
```
|
||||
|
||||
## Parameters and flags
|
||||
`protoc-gen-grpc-gateway` supports custom mapping from Protobuf `import` to Golang import path.
|
||||
They are compatible to [the parameters with same names in `protoc-gen-go`](https://github.com/golang/protobuf#parameters).
|
||||
|
||||
In addition we also support the `request_context` parameter in order to use the `http.Request`'s Context (only for Go 1.7 and above).
|
||||
This parameter can be useful to pass request scoped context between the gateway and the gRPC service.
|
||||
|
||||
`protoc-gen-grpc-gateway` also supports some more command line flags to control logging. You can give these flags together with parameters above. Run `protoc-gen-grpc-gateway --help` for more details about the flags.
|
||||
|
||||
# Mapping gRPC to HTTP
|
||||
|
||||
* [How gRPC error codes map to HTTP status codes in the response](https://github.com/grpc-ecosystem/grpc-gateway/blob/master/runtime/errors.go#L15)
|
||||
* HTTP request source IP is added as `X-Forwarded-For` gRPC request header
|
||||
* HTTP request host is added as `X-Forwarded-Host` gRPC request header
|
||||
* HTTP `Authorization` header is added as `authorization` gRPC request header
|
||||
* Remaining Permanent HTTP header keys (as specified by the IANA [here](http://www.iana.org/assignments/message-headers/message-headers.xhtml) are prefixed with `grpcgateway-` and added with their values to gRPC request header
|
||||
* HTTP headers that start with 'Grpc-Metadata-' are mapped to gRPC metadata (prefixed with `grpcgateway-`)
|
||||
* While configurable, the default {un,}marshaling uses [jsonpb](https://godoc.org/github.com/golang/protobuf/jsonpb) with `OrigName: true`.
|
||||
|
92
vendor/github.com/grpc-ecosystem/grpc-gateway/docs/_layouts/default.html
generated
vendored
Executable file
92
vendor/github.com/grpc-ecosystem/grpc-gateway/docs/_layouts/default.html
generated
vendored
Executable file
@ -0,0 +1,92 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="{{ site.lang | default: "en-US" }}">
|
||||
<head>
|
||||
<meta charset='utf-8'>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
|
||||
<link rel="stylesheet" href="{{ '/assets/css/style.css?v=' | append: site.github.build_revision | relative_url }}" media="screen" type="text/css">
|
||||
<link rel="stylesheet" href="{{ '/assets/css/print.css' | relative_url }}" media="print" type="text/css">
|
||||
<!--
|
||||
<link rel="stylesheet" href="{{ '/assets/css/style.css?v=' | append: site.github.build_revision }}" media="screen" type="text/css">
|
||||
<link rel="stylesheet" href="{{ '/assets/css/print.css' }}" media="print" type="text/css">
|
||||
-->
|
||||
|
||||
<!--[if lt IE 9]>
|
||||
<script src="//html5shiv.googlecode.com/svn/trunk/html5.js"></script>
|
||||
<![endif]-->
|
||||
|
||||
{% seo %}
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<header>
|
||||
<div class="inner">
|
||||
<a href="{{ '/' | absolute_url }}">
|
||||
<h1>{{ site.title | default: site.github.repository_name }}</h1>
|
||||
</a>
|
||||
<h2>{{ site.description | default: site.github.project_tagline }}</h2>
|
||||
{% if site.github.is_project_page %}
|
||||
<a href="{{ site.github.repository_url }}" class="button"><small>View project on</small> GitHub</a>
|
||||
{% endif %}
|
||||
{% if site.github.is_user_page %}
|
||||
<a href="{{ site.github.owner_url }}" class="button"><small>Follow me on</small> GitHub</a>
|
||||
{% endif %}
|
||||
</div>
|
||||
</header>
|
||||
|
||||
<div id="content-wrapper">
|
||||
<div class="inner clearfix">
|
||||
<section id="main-content">
|
||||
{{ content | toc }}
|
||||
</section>
|
||||
|
||||
<aside id="sidebar">
|
||||
{% if site.show_downloads %}
|
||||
<a href="{{ site.github.zip_url }}" class="button">
|
||||
<small>Download</small>
|
||||
.zip file
|
||||
</a>
|
||||
<a href="{{ site.github.tar_url }}" class="button">
|
||||
<small>Download</small>
|
||||
.tar.gz file
|
||||
</a>
|
||||
{% endif %}
|
||||
|
||||
{% if site.github.is_project_page %}
|
||||
<p class="repo-owner"><a href="{{ site.github.repository_url }}">{{ site.github.repository_name }}</a> is maintained by <a href="{{ site.github.owner_url }}">{{ site.github.owner_name }}</a>.</p>
|
||||
{% endif %}
|
||||
|
||||
{% assign mydocs = site.docs | group_by: 'category' %}
|
||||
{% for cat in mydocs %}
|
||||
<h2>{{ cat.name | capitalize }}</h2>
|
||||
<ul>
|
||||
{% assign items = cat.items | sort: 'order' %}
|
||||
{% for item in items %}
|
||||
<li><a href="{{ item.url | relative_url }}">
|
||||
{% if item.url == page.url %}
|
||||
<b>{{ item.title }}</b>
|
||||
{% else %}
|
||||
{{ item.title }}
|
||||
{% endif %}
|
||||
</a></li>
|
||||
{% endfor %}
|
||||
</ul>
|
||||
{% endfor %}
|
||||
|
||||
<p>This page was generated by <a href="https://pages.github.com">GitHub Pages</a>.</p>
|
||||
</aside>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{% if site.google_analytics %}
|
||||
<script>
|
||||
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
|
||||
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
|
||||
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
|
||||
})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
|
||||
ga('create', '{{ site.google_analytics }}', 'auto');
|
||||
ga('send', 'pageview');
|
||||
</script>
|
||||
{% endif %}
|
||||
</body>
|
||||
</html>
|
27
vendor/github.com/grpc-ecosystem/grpc-gateway/docs/index.md
generated
vendored
Executable file
27
vendor/github.com/grpc-ecosystem/grpc-gateway/docs/index.md
generated
vendored
Executable file
@ -0,0 +1,27 @@
|
||||
# grpc-gateway
|
||||
|
||||
[](https://travis-ci.org/grpc-ecosystem/grpc-gateway)
|
||||
|
||||
grpc-gateway is a plugin of [protoc](http://github.com/google/protobuf).
|
||||
It reads [gRPC](http://github.com/grpc/grpc-common) service definition,
|
||||
and generates a reverse-proxy server which translates a RESTful JSON API into gRPC.
|
||||
This server is generated according to [custom options](https://cloud.google.com/service-management/reference/rpc/google.api#http) in your gRPC definition.
|
||||
|
||||
It helps you to provide your APIs in both gRPC and RESTful style at the same time.
|
||||
|
||||

|
||||
|
||||
To learn more about us check out our documentation on:
|
||||
|
||||
* [Our background](_docs/background.md)
|
||||
* [Installation and usage](_docs/usage.md)
|
||||
* [Examples](_docs/examples.md)
|
||||
* [Features](_docs/features.md)
|
||||
|
||||
|
||||
# Contribution
|
||||
See [CONTRIBUTING.md](http://github.com/grpc-ecosystem/grpc-gateway/blob/master/CONTRIBUTING.md).
|
||||
|
||||
# License
|
||||
grpc-gateway is licensed under the BSD 3-Clause License.
|
||||
See [LICENSE.txt](https://github.com/grpc-ecosystem/grpc-gateway/blob/master/LICENSE.txt) for more details.
|
28
vendor/github.com/grpc-ecosystem/grpc-gateway/docs/run.sh
generated
vendored
Executable file
28
vendor/github.com/grpc-ecosystem/grpc-gateway/docs/run.sh
generated
vendored
Executable file
@ -0,0 +1,28 @@
|
||||
#! /bin/bash
|
||||
|
||||
set -e
|
||||
|
||||
JEKYLL_VERSION=3.5
|
||||
BUNDLE_DIR="/tmp/grpc-gateway-bundle"
|
||||
|
||||
if [ ! -d "${BUNDLE_DIR}" ]; then
|
||||
mkdir "${BUNDLE_DIR}"
|
||||
|
||||
# Run this to update the Gemsfile.lock
|
||||
docker run --rm \
|
||||
--volume="${PWD}:/srv/jekyll" \
|
||||
-e "JEKYLL_UID=$(id -u)" \
|
||||
-e "JEKYLL_GID=$(id -g)" \
|
||||
--volume="/tmp/grpc-gateway-bundle:/usr/local/bundle" \
|
||||
-it "jekyll/builder:${JEKYLL_VERSION}" \
|
||||
bundle update
|
||||
fi
|
||||
|
||||
docker run --rm \
|
||||
--volume="${PWD}:/srv/jekyll" \
|
||||
-p 35729:35729 -p 4000:4000 \
|
||||
-e "JEKYLL_UID=$(id -u)" \
|
||||
-e "JEKYLL_GID=$(id -g)" \
|
||||
--volume="/tmp/grpc-gateway-bundle:/usr/local/bundle" \
|
||||
-it "jekyll/builder:${JEKYLL_VERSION}" \
|
||||
jekyll serve
|
40
vendor/github.com/grpc-ecosystem/grpc-gateway/examples/README.md
generated
vendored
Executable file
40
vendor/github.com/grpc-ecosystem/grpc-gateway/examples/README.md
generated
vendored
Executable file
@ -0,0 +1,40 @@
|
||||
# One way to run the example
|
||||
|
||||
```bash
|
||||
# Handle dependencies
|
||||
$ dep init
|
||||
```
|
||||
|
||||
Follow the guides from this [README.md](./browser/README.md) to run the server and gateway.
|
||||
```bash
|
||||
# Make sure you are in the correct directory:
|
||||
# $GOPATH/src/github.com/grpc-ecosystem/grpc-gateway/examples
|
||||
$ cd examples/browser
|
||||
$ pwd
|
||||
|
||||
# Install gulp
|
||||
$ npm install -g gulp-cli
|
||||
$ npm install
|
||||
$ gulp
|
||||
|
||||
# Run
|
||||
$ gulp bower
|
||||
$ gulp backends
|
||||
```
|
||||
|
||||
Then you can use curl or a browser to test:
|
||||
|
||||
```bash
|
||||
# List all apis
|
||||
$ curl http://localhost:8080/swagger/echo_service.swagger.json
|
||||
|
||||
# Visit the apis
|
||||
$ curl -XPOST http://localhost:8080/v1/example/echo/foo
|
||||
{"id":"foo"}
|
||||
|
||||
$ curl http://localhost:8080/v1/example/echo/foo/123
|
||||
{"id":"foo","num":"123"}
|
||||
|
||||
```
|
||||
|
||||
So you have visited the apis by HTTP successfully. You can also try other apis.
|
3
vendor/github.com/grpc-ecosystem/grpc-gateway/examples/browser/.gitignore
generated
vendored
Executable file
3
vendor/github.com/grpc-ecosystem/grpc-gateway/examples/browser/.gitignore
generated
vendored
Executable file
@ -0,0 +1,3 @@
|
||||
/bower_components
|
||||
/node_modules
|
||||
/package-lock.json
|
31
vendor/github.com/grpc-ecosystem/grpc-gateway/examples/browser/README.md
generated
vendored
Executable file
31
vendor/github.com/grpc-ecosystem/grpc-gateway/examples/browser/README.md
generated
vendored
Executable file
@ -0,0 +1,31 @@
|
||||
# Browser example
|
||||
|
||||
This directory contains an example use of grpc-gateway with web browsers.
|
||||
The following commands automatically runs integration tests with phantomjs.
|
||||
|
||||
```shell-session
|
||||
$ npm install -g gulp-cli
|
||||
$ npm install
|
||||
$ gulp
|
||||
```
|
||||
|
||||
## Other examples
|
||||
|
||||
### Very simple example
|
||||
Run
|
||||
```shell-session
|
||||
$ gulp bower
|
||||
$ gulp backends
|
||||
```
|
||||
|
||||
then, open `index.html`.
|
||||
|
||||
|
||||
### Integration test with your browser
|
||||
|
||||
Run
|
||||
```shell-session
|
||||
$ gulp serve
|
||||
```
|
||||
|
||||
then, open `http://localhost:8000` with your browser.
|
185
vendor/github.com/grpc-ecosystem/grpc-gateway/examples/browser/a_bit_of_everything_service.spec.js
generated
vendored
Executable file
185
vendor/github.com/grpc-ecosystem/grpc-gateway/examples/browser/a_bit_of_everything_service.spec.js
generated
vendored
Executable file
@ -0,0 +1,185 @@
|
||||
'use strict';
|
||||
|
||||
var SwaggerClient = require('swagger-client');
|
||||
|
||||
describe('ABitOfEverythingService', function() {
|
||||
var client;
|
||||
|
||||
beforeEach(function(done) {
|
||||
new SwaggerClient({
|
||||
url: "http://localhost:8080/swagger/a_bit_of_everything.swagger.json",
|
||||
usePromise: true,
|
||||
}).then(function(c) {
|
||||
client = c;
|
||||
}).catch(function(err) {
|
||||
done.fail(err);
|
||||
}).then(done);
|
||||
});
|
||||
|
||||
describe('Create', function() {
|
||||
var created;
|
||||
var expected = {
|
||||
float_value: 1.5,
|
||||
double_value: 2.5,
|
||||
int64_value: "4294967296",
|
||||
uint64_value: "9223372036854775807",
|
||||
int32_value: -2147483648,
|
||||
fixed64_value: "9223372036854775807",
|
||||
fixed32_value: 4294967295,
|
||||
bool_value: true,
|
||||
string_value: "strprefix/foo",
|
||||
uint32_value: 4294967295,
|
||||
sfixed32_value: 2147483647,
|
||||
sfixed64_value: "-4611686018427387904",
|
||||
sint32_value: 2147483647,
|
||||
sint64_value: "4611686018427387903",
|
||||
nonConventionalNameValue: "camelCase",
|
||||
};
|
||||
|
||||
beforeEach(function(done) {
|
||||
client.ABitOfEverythingService.Create(expected).then(function(resp) {
|
||||
created = resp.obj;
|
||||
}).catch(function(err) {
|
||||
done.fail(err);
|
||||
}).then(done);
|
||||
});
|
||||
|
||||
it('should assign id', function() {
|
||||
expect(created.uuid).not.toBe("");
|
||||
});
|
||||
|
||||
it('should echo the request back', function() {
|
||||
delete created.uuid;
|
||||
expect(created).toEqual(expected);
|
||||
});
|
||||
});
|
||||
|
||||
describe('CreateBody', function() {
|
||||
var created;
|
||||
var expected = {
|
||||
float_value: 1.5,
|
||||
double_value: 2.5,
|
||||
int64_value: "4294967296",
|
||||
uint64_value: "9223372036854775807",
|
||||
int32_value: -2147483648,
|
||||
fixed64_value: "9223372036854775807",
|
||||
fixed32_value: 4294967295,
|
||||
bool_value: true,
|
||||
string_value: "strprefix/foo",
|
||||
uint32_value: 4294967295,
|
||||
sfixed32_value: 2147483647,
|
||||
sfixed64_value: "-4611686018427387904",
|
||||
sint32_value: 2147483647,
|
||||
sint64_value: "4611686018427387903",
|
||||
nonConventionalNameValue: "camelCase",
|
||||
|
||||
nested: [
|
||||
{ name: "bar", amount: 10 },
|
||||
{ name: "baz", amount: 20 },
|
||||
],
|
||||
repeated_string_value: ["a", "b", "c"],
|
||||
oneof_string: "x",
|
||||
// TODO(yugui) Support enum by name
|
||||
map_value: { a: 1, b: 2 },
|
||||
mapped_string_value: { a: "x", b: "y" },
|
||||
mapped_nested_value: {
|
||||
a: { name: "x", amount: 1 },
|
||||
b: { name: "y", amount: 2 },
|
||||
},
|
||||
};
|
||||
|
||||
beforeEach(function(done) {
|
||||
client.ABitOfEverythingService.CreateBody({
|
||||
body: expected,
|
||||
}).then(function(resp) {
|
||||
created = resp.obj;
|
||||
}).catch(function(err) {
|
||||
done.fail(err);
|
||||
}).then(done);
|
||||
});
|
||||
|
||||
it('should assign id', function() {
|
||||
expect(created.uuid).not.toBe("");
|
||||
});
|
||||
|
||||
it('should echo the request back', function() {
|
||||
delete created.uuid;
|
||||
expect(created).toEqual(expected);
|
||||
});
|
||||
});
|
||||
|
||||
describe('lookup', function() {
|
||||
var created;
|
||||
var expected = {
|
||||
bool_value: true,
|
||||
string_value: "strprefix/foo",
|
||||
};
|
||||
|
||||
beforeEach(function(done) {
|
||||
client.ABitOfEverythingService.CreateBody({
|
||||
body: expected,
|
||||
}).then(function(resp) {
|
||||
created = resp.obj;
|
||||
}).catch(function(err) {
|
||||
fail(err);
|
||||
}).finally(done);
|
||||
});
|
||||
|
||||
it('should look up an object by uuid', function(done) {
|
||||
client.ABitOfEverythingService.Lookup({
|
||||
uuid: created.uuid
|
||||
}).then(function(resp) {
|
||||
expect(resp.obj).toEqual(created);
|
||||
}).catch(function(err) {
|
||||
fail(err.errObj);
|
||||
}).finally(done);
|
||||
});
|
||||
|
||||
it('should fail if no such object', function(done) {
|
||||
client.ABitOfEverythingService.Lookup({
|
||||
uuid: 'not_exist',
|
||||
}).then(function(resp) {
|
||||
fail('expected failure but succeeded');
|
||||
}).catch(function(err) {
|
||||
expect(err.status).toBe(404);
|
||||
}).finally(done);
|
||||
});
|
||||
});
|
||||
|
||||
describe('Delete', function() {
|
||||
var created;
|
||||
var expected = {
|
||||
bool_value: true,
|
||||
string_value: "strprefix/foo",
|
||||
};
|
||||
|
||||
beforeEach(function(done) {
|
||||
client.ABitOfEverythingService.CreateBody({
|
||||
body: expected,
|
||||
}).then(function(resp) {
|
||||
created = resp.obj;
|
||||
}).catch(function(err) {
|
||||
fail(err);
|
||||
}).finally(done);
|
||||
});
|
||||
|
||||
it('should delete an object by id', function(done) {
|
||||
client.ABitOfEverythingService.Delete({
|
||||
uuid: created.uuid
|
||||
}).then(function(resp) {
|
||||
expect(resp.obj).toEqual({});
|
||||
}).catch(function(err) {
|
||||
fail(err.errObj);
|
||||
}).then(function() {
|
||||
return client.ABitOfEverythingService.Lookup({
|
||||
uuid: created.uuid
|
||||
});
|
||||
}).then(function(resp) {
|
||||
fail('expected failure but succeeded');
|
||||
}). catch(function(err) {
|
||||
expect(err.status).toBe(404);
|
||||
}).finally(done);
|
||||
});
|
||||
});
|
||||
});
|
||||
|
2
vendor/github.com/grpc-ecosystem/grpc-gateway/examples/browser/bin/.gitignore
generated
vendored
Executable file
2
vendor/github.com/grpc-ecosystem/grpc-gateway/examples/browser/bin/.gitignore
generated
vendored
Executable file
@ -0,0 +1,2 @@
|
||||
/*
|
||||
!/.gitignore
|
21
vendor/github.com/grpc-ecosystem/grpc-gateway/examples/browser/bower.json
generated
vendored
Executable file
21
vendor/github.com/grpc-ecosystem/grpc-gateway/examples/browser/bower.json
generated
vendored
Executable file
@ -0,0 +1,21 @@
|
||||
{
|
||||
"name": "grpc-gateway-example-browser",
|
||||
"description": "Example use of grpc-gateway from browser",
|
||||
"main": "index.js",
|
||||
"authors": [
|
||||
"Yuki Yugui Sonoda <yugui@gengo.com>"
|
||||
],
|
||||
"license": "SEE LICENSE IN LICENSE file",
|
||||
"homepage": "https://github.com/grpc-ecosystem/grpc-gateway",
|
||||
"private": true,
|
||||
"dependencies": {
|
||||
"swagger-js": "~> 2.1"
|
||||
},
|
||||
"ignore": [
|
||||
"**/.*",
|
||||
"node_modules",
|
||||
"bower_components",
|
||||
"test",
|
||||
"tests"
|
||||
]
|
||||
}
|
43
vendor/github.com/grpc-ecosystem/grpc-gateway/examples/browser/echo_service.spec.js
generated
vendored
Executable file
43
vendor/github.com/grpc-ecosystem/grpc-gateway/examples/browser/echo_service.spec.js
generated
vendored
Executable file
@ -0,0 +1,43 @@
|
||||
'use strict';
|
||||
|
||||
var SwaggerClient = require('swagger-client');
|
||||
|
||||
describe('EchoService', function() {
|
||||
var client;
|
||||
|
||||
beforeEach(function(done) {
|
||||
new SwaggerClient({
|
||||
url: "http://localhost:8080/swagger/echo_service.swagger.json",
|
||||
usePromise: true,
|
||||
}).then(function(c) {
|
||||
client = c;
|
||||
done();
|
||||
});
|
||||
});
|
||||
|
||||
describe('Echo', function() {
|
||||
it('should echo the request back', function(done) {
|
||||
client.EchoService.Echo(
|
||||
{id: "foo"},
|
||||
{responseContentType: "application/json"}
|
||||
).then(function(resp) {
|
||||
expect(resp.obj).toEqual({id: "foo"});
|
||||
}).catch(function(err) {
|
||||
done.fail(err);
|
||||
}).then(done);
|
||||
});
|
||||
});
|
||||
|
||||
describe('EchoBody', function() {
|
||||
it('should echo the request back', function(done) {
|
||||
client.EchoService.EchoBody(
|
||||
{body: {id: "foo"}},
|
||||
{responseContentType: "application/json"}
|
||||
).then(function(resp) {
|
||||
expect(resp.obj).toEqual({id: "foo"});
|
||||
}).catch(function(err) {
|
||||
done.fail(err);
|
||||
}).then(done);
|
||||
});
|
||||
});
|
||||
});
|
81
vendor/github.com/grpc-ecosystem/grpc-gateway/examples/browser/gulpfile.js
generated
vendored
Executable file
81
vendor/github.com/grpc-ecosystem/grpc-gateway/examples/browser/gulpfile.js
generated
vendored
Executable file
@ -0,0 +1,81 @@
|
||||
"use strict";
|
||||
|
||||
var gulp = require('gulp');
|
||||
|
||||
var path = require('path');
|
||||
|
||||
var bower = require('gulp-bower');
|
||||
var exit = require('gulp-exit');
|
||||
var gprocess = require('gulp-process');
|
||||
var shell = require('gulp-shell');
|
||||
var jasmineBrowser = require('gulp-jasmine-browser');
|
||||
var webpack = require('webpack-stream');
|
||||
|
||||
gulp.task('bower', function(){
|
||||
return bower();
|
||||
});
|
||||
|
||||
gulp.task('server', shell.task([
|
||||
'go build -o bin/example-server github.com/grpc-ecosystem/grpc-gateway/examples/cmd/example-grpc-server',
|
||||
]));
|
||||
|
||||
gulp.task('gateway', shell.task([
|
||||
'go build -o bin/example-gw github.com/grpc-ecosystem/grpc-gateway/examples/cmd/example-gateway-server',
|
||||
]));
|
||||
|
||||
gulp.task('serve-server', ['server'], function(){
|
||||
gprocess.start('server-server', 'bin/example-server', [
|
||||
'--logtostderr',
|
||||
]);
|
||||
gulp.watch('bin/example-server', ['serve-server']);
|
||||
});
|
||||
|
||||
gulp.task('serve-gateway', ['gateway', 'serve-server'], function(){
|
||||
gprocess.start('gateway-server', 'bin/example-gw', [
|
||||
'--logtostderr', '--swagger_dir', path.join(__dirname, "../proto/examplepb"),
|
||||
]);
|
||||
gulp.watch('bin/example-gw', ['serve-gateway']);
|
||||
});
|
||||
|
||||
gulp.task('backends', ['serve-gateway', 'serve-server']);
|
||||
|
||||
var specFiles = ['*.spec.js'];
|
||||
gulp.task('test', ['backends'], function(done) {
|
||||
return gulp.src(specFiles)
|
||||
.pipe(webpack({output: {filename: 'spec.js'}}))
|
||||
.pipe(jasmineBrowser.specRunner({
|
||||
console: true,
|
||||
sourceMappedStacktrace: true,
|
||||
}))
|
||||
.pipe(jasmineBrowser.headless({
|
||||
findOpenPort: true,
|
||||
catch: true,
|
||||
throwFailures: true,
|
||||
}))
|
||||
.on('error', function(err) {
|
||||
done(err);
|
||||
process.exit(1);
|
||||
})
|
||||
.pipe(exit());
|
||||
});
|
||||
|
||||
gulp.task('serve', ['backends'], function(done) {
|
||||
var JasminePlugin = require('gulp-jasmine-browser/webpack/jasmine-plugin');
|
||||
var plugin = new JasminePlugin();
|
||||
|
||||
return gulp.src(specFiles)
|
||||
.pipe(webpack({
|
||||
output: {filename: 'spec.js'},
|
||||
watch: true,
|
||||
plugins: [plugin],
|
||||
}))
|
||||
.pipe(jasmineBrowser.specRunner({
|
||||
sourceMappedStacktrace: true,
|
||||
}))
|
||||
.pipe(jasmineBrowser.server({
|
||||
port: 8000,
|
||||
whenReady: plugin.whenReady,
|
||||
}));
|
||||
});
|
||||
|
||||
gulp.task('default', ['test']);
|
22
vendor/github.com/grpc-ecosystem/grpc-gateway/examples/browser/index.html
generated
vendored
Executable file
22
vendor/github.com/grpc-ecosystem/grpc-gateway/examples/browser/index.html
generated
vendored
Executable file
@ -0,0 +1,22 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<script type="application/javascript" src="bower_components/swagger-js/browser/swagger-client.min.js"></script>
|
||||
<script type="application/javascript">
|
||||
window.client = new SwaggerClient({
|
||||
url: "http://localhost:8080/swagger/echo_service.swagger.json",
|
||||
success: function() {
|
||||
client.EchoService.Echo(
|
||||
{id: "foo"},
|
||||
{responseContentType: "application/json"},
|
||||
function(data) {
|
||||
document.getElementById("echoBack").innerHTML = data.obj.id;
|
||||
});
|
||||
}
|
||||
})
|
||||
</script>
|
||||
</head>
|
||||
<body>
|
||||
<div id="echoBack"></div>
|
||||
</body>
|
||||
</html>
|
23
vendor/github.com/grpc-ecosystem/grpc-gateway/examples/browser/package.json
generated
vendored
Executable file
23
vendor/github.com/grpc-ecosystem/grpc-gateway/examples/browser/package.json
generated
vendored
Executable file
@ -0,0 +1,23 @@
|
||||
{
|
||||
"name": "grpc-gateway-example",
|
||||
"version": "1.0.0",
|
||||
"description": "Example use of grpc-gateway from browser",
|
||||
"scripts": {
|
||||
"test": "echo \"Error: no test specified\" && exit 1"
|
||||
},
|
||||
"author": "",
|
||||
"license": "SEE LICENSE IN LICENSE.txt",
|
||||
"devDependencies": {
|
||||
"bower": "^1.7.9",
|
||||
"gulp": "^3.9.1",
|
||||
"gulp-bower": "0.0.13",
|
||||
"gulp-exit": "0.0.2",
|
||||
"gulp-jasmine-browser": "^1.3.2",
|
||||
"gulp-process": "^0.1.2",
|
||||
"gulp-shell": "^0.5.2",
|
||||
"jasmine": "^2.4.1",
|
||||
"phantomjs": "^2.1.7",
|
||||
"swagger-client": "^2.1.28",
|
||||
"webpack-stream": "^3.2.0"
|
||||
}
|
||||
}
|
1
vendor/github.com/grpc-ecosystem/grpc-gateway/examples/clients/abe/.gitignore
generated
vendored
Executable file
1
vendor/github.com/grpc-ecosystem/grpc-gateway/examples/clients/abe/.gitignore
generated
vendored
Executable file
@ -0,0 +1 @@
|
||||
/docs
|
1
vendor/github.com/grpc-ecosystem/grpc-gateway/examples/clients/abe/.swagger-codegen-ignore
generated
vendored
Executable file
1
vendor/github.com/grpc-ecosystem/grpc-gateway/examples/clients/abe/.swagger-codegen-ignore
generated
vendored
Executable file
@ -0,0 +1 @@
|
||||
.gitignore
|
25
vendor/github.com/grpc-ecosystem/grpc-gateway/examples/clients/abe/BUILD.bazel
generated
vendored
Executable file
25
vendor/github.com/grpc-ecosystem/grpc-gateway/examples/clients/abe/BUILD.bazel
generated
vendored
Executable file
@ -0,0 +1,25 @@
|
||||
load("@io_bazel_rules_go//go:def.bzl", "go_library")
|
||||
|
||||
package(default_visibility = ["//visibility:public"])
|
||||
|
||||
go_library(
|
||||
name = "go_default_library",
|
||||
srcs = [
|
||||
"a_bit_of_everything_nested.go",
|
||||
"a_bit_of_everything_service_api.go",
|
||||
"api_client.go",
|
||||
"api_response.go",
|
||||
"camel_case_service_name_api.go",
|
||||
"configuration.go",
|
||||
"echo_rpc_api.go",
|
||||
"echo_service_api.go",
|
||||
"examplepb_a_bit_of_everything.go",
|
||||
"examplepb_body.go",
|
||||
"examplepb_numeric_enum.go",
|
||||
"nested_deep_enum.go",
|
||||
"protobuf_empty.go",
|
||||
"sub_string_message.go",
|
||||
],
|
||||
importpath = "github.com/grpc-ecosystem/grpc-gateway/examples/clients/abe",
|
||||
deps = ["@com_github_go_resty_resty//:go_default_library"],
|
||||
)
|
22
vendor/github.com/grpc-ecosystem/grpc-gateway/examples/clients/abe/a_bit_of_everything_nested.go
generated
vendored
Executable file
22
vendor/github.com/grpc-ecosystem/grpc-gateway/examples/clients/abe/a_bit_of_everything_nested.go
generated
vendored
Executable file
@ -0,0 +1,22 @@
|
||||
/*
|
||||
* A Bit of Everything
|
||||
*
|
||||
* No description provided (generated by Swagger Codegen https://github.com/swagger-api/swagger-codegen)
|
||||
*
|
||||
* OpenAPI spec version: 1.0
|
||||
* Contact: none@example.com
|
||||
* Generated by: https://github.com/swagger-api/swagger-codegen.git
|
||||
*/
|
||||
|
||||
package abe
|
||||
|
||||
// Nested is nested type.
|
||||
type ABitOfEverythingNested struct {
|
||||
|
||||
// name is nested field.
|
||||
Name string `json:"name,omitempty"`
|
||||
|
||||
Amount int64 `json:"amount,omitempty"`
|
||||
|
||||
Ok NestedDeepEnum `json:"ok,omitempty"`
|
||||
}
|
938
vendor/github.com/grpc-ecosystem/grpc-gateway/examples/clients/abe/a_bit_of_everything_service_api.go
generated
vendored
Executable file
938
vendor/github.com/grpc-ecosystem/grpc-gateway/examples/clients/abe/a_bit_of_everything_service_api.go
generated
vendored
Executable file
@ -0,0 +1,938 @@
|
||||
/*
|
||||
* A Bit of Everything
|
||||
*
|
||||
* No description provided (generated by Swagger Codegen https://github.com/swagger-api/swagger-codegen)
|
||||
*
|
||||
* OpenAPI spec version: 1.0
|
||||
* Contact: none@example.com
|
||||
* Generated by: https://github.com/swagger-api/swagger-codegen.git
|
||||
*/
|
||||
|
||||
package abe
|
||||
|
||||
import (
|
||||
"net/url"
|
||||
"strings"
|
||||
"time"
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
)
|
||||
|
||||
type ABitOfEverythingServiceApi struct {
|
||||
Configuration *Configuration
|
||||
}
|
||||
|
||||
func NewABitOfEverythingServiceApi() *ABitOfEverythingServiceApi {
|
||||
configuration := NewConfiguration()
|
||||
return &ABitOfEverythingServiceApi{
|
||||
Configuration: configuration,
|
||||
}
|
||||
}
|
||||
|
||||
func NewABitOfEverythingServiceApiWithBasePath(basePath string) *ABitOfEverythingServiceApi {
|
||||
configuration := NewConfiguration()
|
||||
configuration.BasePath = basePath
|
||||
|
||||
return &ABitOfEverythingServiceApi{
|
||||
Configuration: configuration,
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
*
|
||||
* @param floatValue
|
||||
* @param doubleValue
|
||||
* @param int64Value
|
||||
* @param uint64Value
|
||||
* @param int32Value
|
||||
* @param fixed64Value
|
||||
* @param fixed32Value
|
||||
* @param boolValue
|
||||
* @param stringValue
|
||||
* @param uint32Value
|
||||
* @param sfixed32Value
|
||||
* @param sfixed64Value
|
||||
* @param sint32Value
|
||||
* @param sint64Value
|
||||
* @param nonConventionalNameValue
|
||||
* @return *ExamplepbABitOfEverything
|
||||
*/
|
||||
func (a ABitOfEverythingServiceApi) Create(floatValue float32, doubleValue float64, int64Value string, uint64Value string, int32Value int32, fixed64Value string, fixed32Value int64, boolValue bool, stringValue string, uint32Value int64, sfixed32Value int32, sfixed64Value string, sint32Value int32, sint64Value string, nonConventionalNameValue string) (*ExamplepbABitOfEverything, *APIResponse, error) {
|
||||
|
||||
var localVarHttpMethod = strings.ToUpper("Post")
|
||||
// create path and map variables
|
||||
localVarPath := a.Configuration.BasePath + "/v1/example/a_bit_of_everything/{float_value}/{double_value}/{int64_value}/separator/{uint64_value}/{int32_value}/{fixed64_value}/{fixed32_value}/{bool_value}/{string_value}/{uint32_value}/{sfixed32_value}/{sfixed64_value}/{sint32_value}/{sint64_value}/{nonConventionalNameValue}"
|
||||
localVarPath = strings.Replace(localVarPath, "{"+"float_value"+"}", fmt.Sprintf("%v", floatValue), -1)
|
||||
localVarPath = strings.Replace(localVarPath, "{"+"double_value"+"}", fmt.Sprintf("%v", doubleValue), -1)
|
||||
localVarPath = strings.Replace(localVarPath, "{"+"int64_value"+"}", fmt.Sprintf("%v", int64Value), -1)
|
||||
localVarPath = strings.Replace(localVarPath, "{"+"uint64_value"+"}", fmt.Sprintf("%v", uint64Value), -1)
|
||||
localVarPath = strings.Replace(localVarPath, "{"+"int32_value"+"}", fmt.Sprintf("%v", int32Value), -1)
|
||||
localVarPath = strings.Replace(localVarPath, "{"+"fixed64_value"+"}", fmt.Sprintf("%v", fixed64Value), -1)
|
||||
localVarPath = strings.Replace(localVarPath, "{"+"fixed32_value"+"}", fmt.Sprintf("%v", fixed32Value), -1)
|
||||
localVarPath = strings.Replace(localVarPath, "{"+"bool_value"+"}", fmt.Sprintf("%v", boolValue), -1)
|
||||
localVarPath = strings.Replace(localVarPath, "{"+"string_value"+"}", fmt.Sprintf("%v", stringValue), -1)
|
||||
localVarPath = strings.Replace(localVarPath, "{"+"uint32_value"+"}", fmt.Sprintf("%v", uint32Value), -1)
|
||||
localVarPath = strings.Replace(localVarPath, "{"+"sfixed32_value"+"}", fmt.Sprintf("%v", sfixed32Value), -1)
|
||||
localVarPath = strings.Replace(localVarPath, "{"+"sfixed64_value"+"}", fmt.Sprintf("%v", sfixed64Value), -1)
|
||||
localVarPath = strings.Replace(localVarPath, "{"+"sint32_value"+"}", fmt.Sprintf("%v", sint32Value), -1)
|
||||
localVarPath = strings.Replace(localVarPath, "{"+"sint64_value"+"}", fmt.Sprintf("%v", sint64Value), -1)
|
||||
localVarPath = strings.Replace(localVarPath, "{"+"nonConventionalNameValue"+"}", fmt.Sprintf("%v", nonConventionalNameValue), -1)
|
||||
|
||||
localVarHeaderParams := make(map[string]string)
|
||||
localVarQueryParams := url.Values{}
|
||||
localVarFormParams := make(map[string]string)
|
||||
var localVarPostBody interface{}
|
||||
var localVarFileName string
|
||||
var localVarFileBytes []byte
|
||||
// authentication '(OAuth2)' required
|
||||
// oauth required
|
||||
if a.Configuration.AccessToken != ""{
|
||||
localVarHeaderParams["Authorization"] = "Bearer " + a.Configuration.AccessToken
|
||||
}
|
||||
// authentication '(BasicAuth)' required
|
||||
// http basic authentication required
|
||||
if a.Configuration.Username != "" || a.Configuration.Password != ""{
|
||||
localVarHeaderParams["Authorization"] = "Basic " + a.Configuration.GetBasicAuthEncodedString()
|
||||
}
|
||||
// authentication '(ApiKeyAuth)' required
|
||||
// set key with prefix in header
|
||||
localVarHeaderParams["X-API-Key"] = a.Configuration.GetAPIKeyWithPrefix("X-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", "application/x-foo-mime", }
|
||||
|
||||
// set Content-Type header
|
||||
localVarHttpContentType := a.Configuration.APIClient.SelectHeaderContentType(localVarHttpContentTypes)
|
||||
if localVarHttpContentType != "" {
|
||||
localVarHeaderParams["Content-Type"] = localVarHttpContentType
|
||||
}
|
||||
// to determine the Accept header
|
||||
localVarHttpHeaderAccepts := []string{
|
||||
"application/json",
|
||||
"application/x-foo-mime",
|
||||
}
|
||||
|
||||
// set Accept header
|
||||
localVarHttpHeaderAccept := a.Configuration.APIClient.SelectHeaderAccept(localVarHttpHeaderAccepts)
|
||||
if localVarHttpHeaderAccept != "" {
|
||||
localVarHeaderParams["Accept"] = localVarHttpHeaderAccept
|
||||
}
|
||||
var successPayload = new(ExamplepbABitOfEverything)
|
||||
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: "Create", 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 body
|
||||
* @return *ExamplepbABitOfEverything
|
||||
*/
|
||||
func (a ABitOfEverythingServiceApi) CreateBody(body ExamplepbABitOfEverything) (*ExamplepbABitOfEverything, *APIResponse, error) {
|
||||
|
||||
var localVarHttpMethod = strings.ToUpper("Post")
|
||||
// create path and map variables
|
||||
localVarPath := a.Configuration.BasePath + "/v1/example/a_bit_of_everything"
|
||||
|
||||
localVarHeaderParams := make(map[string]string)
|
||||
localVarQueryParams := url.Values{}
|
||||
localVarFormParams := make(map[string]string)
|
||||
var localVarPostBody interface{}
|
||||
var localVarFileName string
|
||||
var localVarFileBytes []byte
|
||||
// authentication '(OAuth2)' required
|
||||
// oauth required
|
||||
if a.Configuration.AccessToken != ""{
|
||||
localVarHeaderParams["Authorization"] = "Bearer " + a.Configuration.AccessToken
|
||||
}
|
||||
// authentication '(BasicAuth)' required
|
||||
// http basic authentication required
|
||||
if a.Configuration.Username != "" || a.Configuration.Password != ""{
|
||||
localVarHeaderParams["Authorization"] = "Basic " + a.Configuration.GetBasicAuthEncodedString()
|
||||
}
|
||||
// authentication '(ApiKeyAuth)' required
|
||||
// set key with prefix in header
|
||||
localVarHeaderParams["X-API-Key"] = a.Configuration.GetAPIKeyWithPrefix("X-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", "application/x-foo-mime", }
|
||||
|
||||
// set Content-Type header
|
||||
localVarHttpContentType := a.Configuration.APIClient.SelectHeaderContentType(localVarHttpContentTypes)
|
||||
if localVarHttpContentType != "" {
|
||||
localVarHeaderParams["Content-Type"] = localVarHttpContentType
|
||||
}
|
||||
// to determine the Accept header
|
||||
localVarHttpHeaderAccepts := []string{
|
||||
"application/json",
|
||||
"application/x-foo-mime",
|
||||
}
|
||||
|
||||
// set Accept header
|
||||
localVarHttpHeaderAccept := a.Configuration.APIClient.SelectHeaderAccept(localVarHttpHeaderAccepts)
|
||||
if localVarHttpHeaderAccept != "" {
|
||||
localVarHeaderParams["Accept"] = localVarHttpHeaderAccept
|
||||
}
|
||||
// body params
|
||||
localVarPostBody = &body
|
||||
var successPayload = new(ExamplepbABitOfEverything)
|
||||
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: "CreateBody", 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 singleNestedName
|
||||
* @param body
|
||||
* @return *ExamplepbABitOfEverything
|
||||
*/
|
||||
func (a ABitOfEverythingServiceApi) DeepPathEcho(singleNestedName string, body ExamplepbABitOfEverything) (*ExamplepbABitOfEverything, *APIResponse, error) {
|
||||
|
||||
var localVarHttpMethod = strings.ToUpper("Post")
|
||||
// create path and map variables
|
||||
localVarPath := a.Configuration.BasePath + "/v1/example/a_bit_of_everything/{single_nested.name}"
|
||||
localVarPath = strings.Replace(localVarPath, "{"+"single_nested.name"+"}", fmt.Sprintf("%v", singleNestedName), -1)
|
||||
|
||||
localVarHeaderParams := make(map[string]string)
|
||||
localVarQueryParams := url.Values{}
|
||||
localVarFormParams := make(map[string]string)
|
||||
var localVarPostBody interface{}
|
||||
var localVarFileName string
|
||||
var localVarFileBytes []byte
|
||||
// authentication '(OAuth2)' required
|
||||
// oauth required
|
||||
if a.Configuration.AccessToken != ""{
|
||||
localVarHeaderParams["Authorization"] = "Bearer " + a.Configuration.AccessToken
|
||||
}
|
||||
// authentication '(BasicAuth)' required
|
||||
// http basic authentication required
|
||||
if a.Configuration.Username != "" || a.Configuration.Password != ""{
|
||||
localVarHeaderParams["Authorization"] = "Basic " + a.Configuration.GetBasicAuthEncodedString()
|
||||
}
|
||||
// authentication '(ApiKeyAuth)' required
|
||||
// set key with prefix in header
|
||||
localVarHeaderParams["X-API-Key"] = a.Configuration.GetAPIKeyWithPrefix("X-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", "application/x-foo-mime", }
|
||||
|
||||
// set Content-Type header
|
||||
localVarHttpContentType := a.Configuration.APIClient.SelectHeaderContentType(localVarHttpContentTypes)
|
||||
if localVarHttpContentType != "" {
|
||||
localVarHeaderParams["Content-Type"] = localVarHttpContentType
|
||||
}
|
||||
// to determine the Accept header
|
||||
localVarHttpHeaderAccepts := []string{
|
||||
"application/json",
|
||||
"application/x-foo-mime",
|
||||
}
|
||||
|
||||
// set Accept header
|
||||
localVarHttpHeaderAccept := a.Configuration.APIClient.SelectHeaderAccept(localVarHttpHeaderAccepts)
|
||||
if localVarHttpHeaderAccept != "" {
|
||||
localVarHeaderParams["Accept"] = localVarHttpHeaderAccept
|
||||
}
|
||||
// body params
|
||||
localVarPostBody = &body
|
||||
var successPayload = new(ExamplepbABitOfEverything)
|
||||
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: "DeepPathEcho", 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 uuid
|
||||
* @return *ProtobufEmpty
|
||||
*/
|
||||
func (a ABitOfEverythingServiceApi) Delete(uuid string) (*ProtobufEmpty, *APIResponse, error) {
|
||||
|
||||
var localVarHttpMethod = strings.ToUpper("Delete")
|
||||
// create path and map variables
|
||||
localVarPath := a.Configuration.BasePath + "/v1/example/a_bit_of_everything/{uuid}"
|
||||
localVarPath = strings.Replace(localVarPath, "{"+"uuid"+"}", fmt.Sprintf("%v", uuid), -1)
|
||||
|
||||
localVarHeaderParams := make(map[string]string)
|
||||
localVarQueryParams := url.Values{}
|
||||
localVarFormParams := make(map[string]string)
|
||||
var localVarPostBody interface{}
|
||||
var localVarFileName string
|
||||
var localVarFileBytes []byte
|
||||
// authentication '(OAuth2)' required
|
||||
// oauth required
|
||||
if a.Configuration.AccessToken != ""{
|
||||
localVarHeaderParams["Authorization"] = "Bearer " + a.Configuration.AccessToken
|
||||
}
|
||||
// authentication '(ApiKeyAuth)' required
|
||||
// set key with prefix in header
|
||||
localVarHeaderParams["X-API-Key"] = a.Configuration.GetAPIKeyWithPrefix("X-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", "application/x-foo-mime", }
|
||||
|
||||
// set Content-Type header
|
||||
localVarHttpContentType := a.Configuration.APIClient.SelectHeaderContentType(localVarHttpContentTypes)
|
||||
if localVarHttpContentType != "" {
|
||||
localVarHeaderParams["Content-Type"] = localVarHttpContentType
|
||||
}
|
||||
// to determine the Accept header
|
||||
localVarHttpHeaderAccepts := []string{
|
||||
"application/json",
|
||||
"application/x-foo-mime",
|
||||
}
|
||||
|
||||
// set Accept header
|
||||
localVarHttpHeaderAccept := a.Configuration.APIClient.SelectHeaderAccept(localVarHttpHeaderAccepts)
|
||||
if localVarHttpHeaderAccept != "" {
|
||||
localVarHeaderParams["Accept"] = localVarHttpHeaderAccept
|
||||
}
|
||||
var successPayload = new(ProtobufEmpty)
|
||||
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: "Delete", 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
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
*
|
||||
* @return *ProtobufEmpty
|
||||
*/
|
||||
func (a ABitOfEverythingServiceApi) ErrorWithDetails() (*ProtobufEmpty, *APIResponse, error) {
|
||||
|
||||
var localVarHttpMethod = strings.ToUpper("Get")
|
||||
// create path and map variables
|
||||
localVarPath := a.Configuration.BasePath + "/v2/example/errorwithdetails"
|
||||
|
||||
localVarHeaderParams := make(map[string]string)
|
||||
localVarQueryParams := url.Values{}
|
||||
localVarFormParams := make(map[string]string)
|
||||
var localVarPostBody interface{}
|
||||
var localVarFileName string
|
||||
var localVarFileBytes []byte
|
||||
// authentication '(OAuth2)' required
|
||||
// oauth required
|
||||
if a.Configuration.AccessToken != ""{
|
||||
localVarHeaderParams["Authorization"] = "Bearer " + a.Configuration.AccessToken
|
||||
}
|
||||
// authentication '(BasicAuth)' required
|
||||
// http basic authentication required
|
||||
if a.Configuration.Username != "" || a.Configuration.Password != ""{
|
||||
localVarHeaderParams["Authorization"] = "Basic " + a.Configuration.GetBasicAuthEncodedString()
|
||||
}
|
||||
// authentication '(ApiKeyAuth)' required
|
||||
// set key with prefix in header
|
||||
localVarHeaderParams["X-API-Key"] = a.Configuration.GetAPIKeyWithPrefix("X-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", "application/x-foo-mime", }
|
||||
|
||||
// set Content-Type header
|
||||
localVarHttpContentType := a.Configuration.APIClient.SelectHeaderContentType(localVarHttpContentTypes)
|
||||
if localVarHttpContentType != "" {
|
||||
localVarHeaderParams["Content-Type"] = localVarHttpContentType
|
||||
}
|
||||
// to determine the Accept header
|
||||
localVarHttpHeaderAccepts := []string{
|
||||
"application/json",
|
||||
"application/x-foo-mime",
|
||||
}
|
||||
|
||||
// set Accept header
|
||||
localVarHttpHeaderAccept := a.Configuration.APIClient.SelectHeaderAccept(localVarHttpHeaderAccepts)
|
||||
if localVarHttpHeaderAccept != "" {
|
||||
localVarHeaderParams["Accept"] = localVarHttpHeaderAccept
|
||||
}
|
||||
var successPayload = new(ProtobufEmpty)
|
||||
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: "ErrorWithDetails", 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
|
||||
* @param body
|
||||
* @return *ProtobufEmpty
|
||||
*/
|
||||
func (a ABitOfEverythingServiceApi) GetMessageWithBody(id string, body ExamplepbBody) (*ProtobufEmpty, *APIResponse, error) {
|
||||
|
||||
var localVarHttpMethod = strings.ToUpper("Post")
|
||||
// create path and map variables
|
||||
localVarPath := a.Configuration.BasePath + "/v2/example/withbody/{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 '(OAuth2)' required
|
||||
// oauth required
|
||||
if a.Configuration.AccessToken != ""{
|
||||
localVarHeaderParams["Authorization"] = "Bearer " + a.Configuration.AccessToken
|
||||
}
|
||||
// authentication '(BasicAuth)' required
|
||||
// http basic authentication required
|
||||
if a.Configuration.Username != "" || a.Configuration.Password != ""{
|
||||
localVarHeaderParams["Authorization"] = "Basic " + a.Configuration.GetBasicAuthEncodedString()
|
||||
}
|
||||
// authentication '(ApiKeyAuth)' required
|
||||
// set key with prefix in header
|
||||
localVarHeaderParams["X-API-Key"] = a.Configuration.GetAPIKeyWithPrefix("X-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", "application/x-foo-mime", }
|
||||
|
||||
// set Content-Type header
|
||||
localVarHttpContentType := a.Configuration.APIClient.SelectHeaderContentType(localVarHttpContentTypes)
|
||||
if localVarHttpContentType != "" {
|
||||
localVarHeaderParams["Content-Type"] = localVarHttpContentType
|
||||
}
|
||||
// to determine the Accept header
|
||||
localVarHttpHeaderAccepts := []string{
|
||||
"application/json",
|
||||
"application/x-foo-mime",
|
||||
}
|
||||
|
||||
// set Accept header
|
||||
localVarHttpHeaderAccept := a.Configuration.APIClient.SelectHeaderAccept(localVarHttpHeaderAccepts)
|
||||
if localVarHttpHeaderAccept != "" {
|
||||
localVarHeaderParams["Accept"] = localVarHttpHeaderAccept
|
||||
}
|
||||
// body params
|
||||
localVarPostBody = &body
|
||||
var successPayload = new(ProtobufEmpty)
|
||||
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: "GetMessageWithBody", 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 uuid
|
||||
* @param singleNestedName name is nested field.
|
||||
* @param singleNestedAmount
|
||||
* @param singleNestedOk - FALSE: FALSE is false. - TRUE: TRUE is true.
|
||||
* @param floatValue
|
||||
* @param doubleValue
|
||||
* @param int64Value
|
||||
* @param uint64Value
|
||||
* @param int32Value
|
||||
* @param fixed64Value
|
||||
* @param fixed32Value
|
||||
* @param boolValue
|
||||
* @param stringValue
|
||||
* @param bytesValue
|
||||
* @param uint32Value
|
||||
* @param enumValue - ZERO: ZERO means 0 - ONE: ONE means 1
|
||||
* @param sfixed32Value
|
||||
* @param sfixed64Value
|
||||
* @param sint32Value
|
||||
* @param sint64Value
|
||||
* @param repeatedStringValue
|
||||
* @param oneofString
|
||||
* @param nonConventionalNameValue
|
||||
* @param timestampValue
|
||||
* @param repeatedEnumValue repeated enum value. it is comma-separated in query. - ZERO: ZERO means 0 - ONE: ONE means 1
|
||||
* @return *ProtobufEmpty
|
||||
*/
|
||||
func (a ABitOfEverythingServiceApi) GetQuery(uuid string, singleNestedName string, singleNestedAmount int64, singleNestedOk string, floatValue float32, doubleValue float64, int64Value string, uint64Value string, int32Value int32, fixed64Value string, fixed32Value int64, boolValue bool, stringValue string, bytesValue string, uint32Value int64, enumValue string, sfixed32Value int32, sfixed64Value string, sint32Value int32, sint64Value string, repeatedStringValue []string, oneofString string, nonConventionalNameValue string, timestampValue time.Time, repeatedEnumValue []string) (*ProtobufEmpty, *APIResponse, error) {
|
||||
|
||||
var localVarHttpMethod = strings.ToUpper("Get")
|
||||
// create path and map variables
|
||||
localVarPath := a.Configuration.BasePath + "/v1/example/a_bit_of_everything/query/{uuid}"
|
||||
localVarPath = strings.Replace(localVarPath, "{"+"uuid"+"}", fmt.Sprintf("%v", uuid), -1)
|
||||
|
||||
localVarHeaderParams := make(map[string]string)
|
||||
localVarQueryParams := url.Values{}
|
||||
localVarFormParams := make(map[string]string)
|
||||
var localVarPostBody interface{}
|
||||
var localVarFileName string
|
||||
var localVarFileBytes []byte
|
||||
// authentication '(OAuth2)' required
|
||||
// oauth required
|
||||
if a.Configuration.AccessToken != ""{
|
||||
localVarHeaderParams["Authorization"] = "Bearer " + a.Configuration.AccessToken
|
||||
}
|
||||
// authentication '(BasicAuth)' required
|
||||
// http basic authentication required
|
||||
if a.Configuration.Username != "" || a.Configuration.Password != ""{
|
||||
localVarHeaderParams["Authorization"] = "Basic " + a.Configuration.GetBasicAuthEncodedString()
|
||||
}
|
||||
// authentication '(ApiKeyAuth)' required
|
||||
// set key with prefix in header
|
||||
localVarHeaderParams["X-API-Key"] = a.Configuration.GetAPIKeyWithPrefix("X-API-Key")
|
||||
// add default headers if any
|
||||
for key := range a.Configuration.DefaultHeader {
|
||||
localVarHeaderParams[key] = a.Configuration.DefaultHeader[key]
|
||||
}
|
||||
localVarQueryParams.Add("single_nested.name", a.Configuration.APIClient.ParameterToString(singleNestedName, ""))
|
||||
localVarQueryParams.Add("single_nested.amount", a.Configuration.APIClient.ParameterToString(singleNestedAmount, ""))
|
||||
localVarQueryParams.Add("single_nested.ok", a.Configuration.APIClient.ParameterToString(singleNestedOk, ""))
|
||||
localVarQueryParams.Add("float_value", a.Configuration.APIClient.ParameterToString(floatValue, ""))
|
||||
localVarQueryParams.Add("double_value", a.Configuration.APIClient.ParameterToString(doubleValue, ""))
|
||||
localVarQueryParams.Add("int64_value", a.Configuration.APIClient.ParameterToString(int64Value, ""))
|
||||
localVarQueryParams.Add("uint64_value", a.Configuration.APIClient.ParameterToString(uint64Value, ""))
|
||||
localVarQueryParams.Add("int32_value", a.Configuration.APIClient.ParameterToString(int32Value, ""))
|
||||
localVarQueryParams.Add("fixed64_value", a.Configuration.APIClient.ParameterToString(fixed64Value, ""))
|
||||
localVarQueryParams.Add("fixed32_value", a.Configuration.APIClient.ParameterToString(fixed32Value, ""))
|
||||
localVarQueryParams.Add("bool_value", a.Configuration.APIClient.ParameterToString(boolValue, ""))
|
||||
localVarQueryParams.Add("string_value", a.Configuration.APIClient.ParameterToString(stringValue, ""))
|
||||
localVarQueryParams.Add("bytes_value", a.Configuration.APIClient.ParameterToString(bytesValue, ""))
|
||||
localVarQueryParams.Add("uint32_value", a.Configuration.APIClient.ParameterToString(uint32Value, ""))
|
||||
localVarQueryParams.Add("enum_value", a.Configuration.APIClient.ParameterToString(enumValue, ""))
|
||||
localVarQueryParams.Add("sfixed32_value", a.Configuration.APIClient.ParameterToString(sfixed32Value, ""))
|
||||
localVarQueryParams.Add("sfixed64_value", a.Configuration.APIClient.ParameterToString(sfixed64Value, ""))
|
||||
localVarQueryParams.Add("sint32_value", a.Configuration.APIClient.ParameterToString(sint32Value, ""))
|
||||
localVarQueryParams.Add("sint64_value", a.Configuration.APIClient.ParameterToString(sint64Value, ""))
|
||||
var repeatedStringValueCollectionFormat = "csv"
|
||||
localVarQueryParams.Add("repeated_string_value", a.Configuration.APIClient.ParameterToString(repeatedStringValue, repeatedStringValueCollectionFormat))
|
||||
|
||||
localVarQueryParams.Add("oneof_string", a.Configuration.APIClient.ParameterToString(oneofString, ""))
|
||||
localVarQueryParams.Add("nonConventionalNameValue", a.Configuration.APIClient.ParameterToString(nonConventionalNameValue, ""))
|
||||
localVarQueryParams.Add("timestamp_value", a.Configuration.APIClient.ParameterToString(timestampValue, ""))
|
||||
var repeatedEnumValueCollectionFormat = "csv"
|
||||
localVarQueryParams.Add("repeated_enum_value", a.Configuration.APIClient.ParameterToString(repeatedEnumValue, repeatedEnumValueCollectionFormat))
|
||||
|
||||
|
||||
// to determine the Content-Type header
|
||||
localVarHttpContentTypes := []string{ "application/json", "application/x-foo-mime", }
|
||||
|
||||
// set Content-Type header
|
||||
localVarHttpContentType := a.Configuration.APIClient.SelectHeaderContentType(localVarHttpContentTypes)
|
||||
if localVarHttpContentType != "" {
|
||||
localVarHeaderParams["Content-Type"] = localVarHttpContentType
|
||||
}
|
||||
// to determine the Accept header
|
||||
localVarHttpHeaderAccepts := []string{
|
||||
"application/json",
|
||||
"application/x-foo-mime",
|
||||
}
|
||||
|
||||
// set Accept header
|
||||
localVarHttpHeaderAccept := a.Configuration.APIClient.SelectHeaderAccept(localVarHttpHeaderAccepts)
|
||||
if localVarHttpHeaderAccept != "" {
|
||||
localVarHeaderParams["Accept"] = localVarHttpHeaderAccept
|
||||
}
|
||||
var successPayload = new(ProtobufEmpty)
|
||||
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: "GetQuery", 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 uuid
|
||||
* @return *ExamplepbABitOfEverything
|
||||
*/
|
||||
func (a ABitOfEverythingServiceApi) Lookup(uuid string) (*ExamplepbABitOfEverything, *APIResponse, error) {
|
||||
|
||||
var localVarHttpMethod = strings.ToUpper("Get")
|
||||
// create path and map variables
|
||||
localVarPath := a.Configuration.BasePath + "/v1/example/a_bit_of_everything/{uuid}"
|
||||
localVarPath = strings.Replace(localVarPath, "{"+"uuid"+"}", fmt.Sprintf("%v", uuid), -1)
|
||||
|
||||
localVarHeaderParams := make(map[string]string)
|
||||
localVarQueryParams := url.Values{}
|
||||
localVarFormParams := make(map[string]string)
|
||||
var localVarPostBody interface{}
|
||||
var localVarFileName string
|
||||
var localVarFileBytes []byte
|
||||
// authentication '(OAuth2)' required
|
||||
// oauth required
|
||||
if a.Configuration.AccessToken != ""{
|
||||
localVarHeaderParams["Authorization"] = "Bearer " + a.Configuration.AccessToken
|
||||
}
|
||||
// authentication '(BasicAuth)' required
|
||||
// http basic authentication required
|
||||
if a.Configuration.Username != "" || a.Configuration.Password != ""{
|
||||
localVarHeaderParams["Authorization"] = "Basic " + a.Configuration.GetBasicAuthEncodedString()
|
||||
}
|
||||
// authentication '(ApiKeyAuth)' required
|
||||
// set key with prefix in header
|
||||
localVarHeaderParams["X-API-Key"] = a.Configuration.GetAPIKeyWithPrefix("X-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", "application/x-foo-mime", }
|
||||
|
||||
// set Content-Type header
|
||||
localVarHttpContentType := a.Configuration.APIClient.SelectHeaderContentType(localVarHttpContentTypes)
|
||||
if localVarHttpContentType != "" {
|
||||
localVarHeaderParams["Content-Type"] = localVarHttpContentType
|
||||
}
|
||||
// to determine the Accept header
|
||||
localVarHttpHeaderAccepts := []string{
|
||||
"application/json",
|
||||
"application/x-foo-mime",
|
||||
}
|
||||
|
||||
// set Accept header
|
||||
localVarHttpHeaderAccept := a.Configuration.APIClient.SelectHeaderAccept(localVarHttpHeaderAccepts)
|
||||
if localVarHttpHeaderAccept != "" {
|
||||
localVarHeaderParams["Accept"] = localVarHttpHeaderAccept
|
||||
}
|
||||
var successPayload = new(ExamplepbABitOfEverything)
|
||||
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: "Lookup", 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 name
|
||||
* @param body
|
||||
* @return *ProtobufEmpty
|
||||
*/
|
||||
func (a ABitOfEverythingServiceApi) PostWithEmptyBody(name string, body ExamplepbBody) (*ProtobufEmpty, *APIResponse, error) {
|
||||
|
||||
var localVarHttpMethod = strings.ToUpper("Post")
|
||||
// create path and map variables
|
||||
localVarPath := a.Configuration.BasePath + "/v2/example/postwithemptybody/{name}"
|
||||
localVarPath = strings.Replace(localVarPath, "{"+"name"+"}", fmt.Sprintf("%v", name), -1)
|
||||
|
||||
localVarHeaderParams := make(map[string]string)
|
||||
localVarQueryParams := url.Values{}
|
||||
localVarFormParams := make(map[string]string)
|
||||
var localVarPostBody interface{}
|
||||
var localVarFileName string
|
||||
var localVarFileBytes []byte
|
||||
// authentication '(OAuth2)' required
|
||||
// oauth required
|
||||
if a.Configuration.AccessToken != ""{
|
||||
localVarHeaderParams["Authorization"] = "Bearer " + a.Configuration.AccessToken
|
||||
}
|
||||
// authentication '(BasicAuth)' required
|
||||
// http basic authentication required
|
||||
if a.Configuration.Username != "" || a.Configuration.Password != ""{
|
||||
localVarHeaderParams["Authorization"] = "Basic " + a.Configuration.GetBasicAuthEncodedString()
|
||||
}
|
||||
// authentication '(ApiKeyAuth)' required
|
||||
// set key with prefix in header
|
||||
localVarHeaderParams["X-API-Key"] = a.Configuration.GetAPIKeyWithPrefix("X-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", "application/x-foo-mime", }
|
||||
|
||||
// set Content-Type header
|
||||
localVarHttpContentType := a.Configuration.APIClient.SelectHeaderContentType(localVarHttpContentTypes)
|
||||
if localVarHttpContentType != "" {
|
||||
localVarHeaderParams["Content-Type"] = localVarHttpContentType
|
||||
}
|
||||
// to determine the Accept header
|
||||
localVarHttpHeaderAccepts := []string{
|
||||
"application/json",
|
||||
"application/x-foo-mime",
|
||||
}
|
||||
|
||||
// set Accept header
|
||||
localVarHttpHeaderAccept := a.Configuration.APIClient.SelectHeaderAccept(localVarHttpHeaderAccepts)
|
||||
if localVarHttpHeaderAccept != "" {
|
||||
localVarHeaderParams["Accept"] = localVarHttpHeaderAccept
|
||||
}
|
||||
// body params
|
||||
localVarPostBody = &body
|
||||
var successPayload = new(ProtobufEmpty)
|
||||
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: "PostWithEmptyBody", 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
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
*
|
||||
* @return *ProtobufEmpty
|
||||
*/
|
||||
func (a ABitOfEverythingServiceApi) Timeout() (*ProtobufEmpty, *APIResponse, error) {
|
||||
|
||||
var localVarHttpMethod = strings.ToUpper("Get")
|
||||
// create path and map variables
|
||||
localVarPath := a.Configuration.BasePath + "/v2/example/timeout"
|
||||
|
||||
localVarHeaderParams := make(map[string]string)
|
||||
localVarQueryParams := url.Values{}
|
||||
localVarFormParams := make(map[string]string)
|
||||
var localVarPostBody interface{}
|
||||
var localVarFileName string
|
||||
var localVarFileBytes []byte
|
||||
// authentication '(OAuth2)' required
|
||||
// oauth required
|
||||
if a.Configuration.AccessToken != ""{
|
||||
localVarHeaderParams["Authorization"] = "Bearer " + a.Configuration.AccessToken
|
||||
}
|
||||
// authentication '(BasicAuth)' required
|
||||
// http basic authentication required
|
||||
if a.Configuration.Username != "" || a.Configuration.Password != ""{
|
||||
localVarHeaderParams["Authorization"] = "Basic " + a.Configuration.GetBasicAuthEncodedString()
|
||||
}
|
||||
// authentication '(ApiKeyAuth)' required
|
||||
// set key with prefix in header
|
||||
localVarHeaderParams["X-API-Key"] = a.Configuration.GetAPIKeyWithPrefix("X-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", "application/x-foo-mime", }
|
||||
|
||||
// set Content-Type header
|
||||
localVarHttpContentType := a.Configuration.APIClient.SelectHeaderContentType(localVarHttpContentTypes)
|
||||
if localVarHttpContentType != "" {
|
||||
localVarHeaderParams["Content-Type"] = localVarHttpContentType
|
||||
}
|
||||
// to determine the Accept header
|
||||
localVarHttpHeaderAccepts := []string{
|
||||
"application/json",
|
||||
"application/x-foo-mime",
|
||||
}
|
||||
|
||||
// set Accept header
|
||||
localVarHttpHeaderAccept := a.Configuration.APIClient.SelectHeaderAccept(localVarHttpHeaderAccepts)
|
||||
if localVarHttpHeaderAccept != "" {
|
||||
localVarHeaderParams["Accept"] = localVarHttpHeaderAccept
|
||||
}
|
||||
var successPayload = new(ProtobufEmpty)
|
||||
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: "Timeout", 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 uuid
|
||||
* @param body
|
||||
* @return *ProtobufEmpty
|
||||
*/
|
||||
func (a ABitOfEverythingServiceApi) Update(uuid string, body ExamplepbABitOfEverything) (*ProtobufEmpty, *APIResponse, error) {
|
||||
|
||||
var localVarHttpMethod = strings.ToUpper("Put")
|
||||
// create path and map variables
|
||||
localVarPath := a.Configuration.BasePath + "/v1/example/a_bit_of_everything/{uuid}"
|
||||
localVarPath = strings.Replace(localVarPath, "{"+"uuid"+"}", fmt.Sprintf("%v", uuid), -1)
|
||||
|
||||
localVarHeaderParams := make(map[string]string)
|
||||
localVarQueryParams := url.Values{}
|
||||
localVarFormParams := make(map[string]string)
|
||||
var localVarPostBody interface{}
|
||||
var localVarFileName string
|
||||
var localVarFileBytes []byte
|
||||
// authentication '(OAuth2)' required
|
||||
// oauth required
|
||||
if a.Configuration.AccessToken != ""{
|
||||
localVarHeaderParams["Authorization"] = "Bearer " + a.Configuration.AccessToken
|
||||
}
|
||||
// authentication '(BasicAuth)' required
|
||||
// http basic authentication required
|
||||
if a.Configuration.Username != "" || a.Configuration.Password != ""{
|
||||
localVarHeaderParams["Authorization"] = "Basic " + a.Configuration.GetBasicAuthEncodedString()
|
||||
}
|
||||
// authentication '(ApiKeyAuth)' required
|
||||
// set key with prefix in header
|
||||
localVarHeaderParams["X-API-Key"] = a.Configuration.GetAPIKeyWithPrefix("X-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", "application/x-foo-mime", }
|
||||
|
||||
// set Content-Type header
|
||||
localVarHttpContentType := a.Configuration.APIClient.SelectHeaderContentType(localVarHttpContentTypes)
|
||||
if localVarHttpContentType != "" {
|
||||
localVarHeaderParams["Content-Type"] = localVarHttpContentType
|
||||
}
|
||||
// to determine the Accept header
|
||||
localVarHttpHeaderAccepts := []string{
|
||||
"application/json",
|
||||
"application/x-foo-mime",
|
||||
}
|
||||
|
||||
// set Accept header
|
||||
localVarHttpHeaderAccept := a.Configuration.APIClient.SelectHeaderAccept(localVarHttpHeaderAccepts)
|
||||
if localVarHttpHeaderAccept != "" {
|
||||
localVarHeaderParams["Accept"] = localVarHttpHeaderAccept
|
||||
}
|
||||
// body params
|
||||
localVarPostBody = &body
|
||||
var successPayload = new(ProtobufEmpty)
|
||||
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: "Update", 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
|
||||
}
|
||||
|
164
vendor/github.com/grpc-ecosystem/grpc-gateway/examples/clients/abe/api_client.go
generated
vendored
Executable file
164
vendor/github.com/grpc-ecosystem/grpc-gateway/examples/clients/abe/api_client.go
generated
vendored
Executable file
@ -0,0 +1,164 @@
|
||||
/*
|
||||
* A Bit of Everything
|
||||
*
|
||||
* No description provided (generated by Swagger Codegen https://github.com/swagger-api/swagger-codegen)
|
||||
*
|
||||
* OpenAPI spec version: 1.0
|
||||
* Contact: none@example.com
|
||||
* Generated by: https://github.com/swagger-api/swagger-codegen.git
|
||||
*/
|
||||
|
||||
package abe
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"fmt"
|
||||
"path/filepath"
|
||||
"reflect"
|
||||
"strings"
|
||||
"net/url"
|
||||
"io/ioutil"
|
||||
"github.com/go-resty/resty"
|
||||
)
|
||||
|
||||
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
|
||||
}
|
44
vendor/github.com/grpc-ecosystem/grpc-gateway/examples/clients/abe/api_response.go
generated
vendored
Executable file
44
vendor/github.com/grpc-ecosystem/grpc-gateway/examples/clients/abe/api_response.go
generated
vendored
Executable file
@ -0,0 +1,44 @@
|
||||
/*
|
||||
* A Bit of Everything
|
||||
*
|
||||
* No description provided (generated by Swagger Codegen https://github.com/swagger-api/swagger-codegen)
|
||||
*
|
||||
* OpenAPI spec version: 1.0
|
||||
* Contact: none@example.com
|
||||
* Generated by: https://github.com/swagger-api/swagger-codegen.git
|
||||
*/
|
||||
|
||||
package abe
|
||||
|
||||
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
|
||||
}
|
110
vendor/github.com/grpc-ecosystem/grpc-gateway/examples/clients/abe/camel_case_service_name_api.go
generated
vendored
Executable file
110
vendor/github.com/grpc-ecosystem/grpc-gateway/examples/clients/abe/camel_case_service_name_api.go
generated
vendored
Executable file
@ -0,0 +1,110 @@
|
||||
/*
|
||||
* A Bit of Everything
|
||||
*
|
||||
* No description provided (generated by Swagger Codegen https://github.com/swagger-api/swagger-codegen)
|
||||
*
|
||||
* OpenAPI spec version: 1.0
|
||||
* Contact: none@example.com
|
||||
* Generated by: https://github.com/swagger-api/swagger-codegen.git
|
||||
*/
|
||||
|
||||
package abe
|
||||
|
||||
import (
|
||||
"net/url"
|
||||
"strings"
|
||||
"encoding/json"
|
||||
)
|
||||
|
||||
type CamelCaseServiceNameApi struct {
|
||||
Configuration *Configuration
|
||||
}
|
||||
|
||||
func NewCamelCaseServiceNameApi() *CamelCaseServiceNameApi {
|
||||
configuration := NewConfiguration()
|
||||
return &CamelCaseServiceNameApi{
|
||||
Configuration: configuration,
|
||||
}
|
||||
}
|
||||
|
||||
func NewCamelCaseServiceNameApiWithBasePath(basePath string) *CamelCaseServiceNameApi {
|
||||
configuration := NewConfiguration()
|
||||
configuration.BasePath = basePath
|
||||
|
||||
return &CamelCaseServiceNameApi{
|
||||
Configuration: configuration,
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
*
|
||||
* @return *ProtobufEmpty
|
||||
*/
|
||||
func (a CamelCaseServiceNameApi) Empty() (*ProtobufEmpty, *APIResponse, error) {
|
||||
|
||||
var localVarHttpMethod = strings.ToUpper("Get")
|
||||
// create path and map variables
|
||||
localVarPath := a.Configuration.BasePath + "/v2/example/empty"
|
||||
|
||||
localVarHeaderParams := make(map[string]string)
|
||||
localVarQueryParams := url.Values{}
|
||||
localVarFormParams := make(map[string]string)
|
||||
var localVarPostBody interface{}
|
||||
var localVarFileName string
|
||||
var localVarFileBytes []byte
|
||||
// authentication '(OAuth2)' required
|
||||
// oauth required
|
||||
if a.Configuration.AccessToken != ""{
|
||||
localVarHeaderParams["Authorization"] = "Bearer " + a.Configuration.AccessToken
|
||||
}
|
||||
// authentication '(BasicAuth)' required
|
||||
// http basic authentication required
|
||||
if a.Configuration.Username != "" || a.Configuration.Password != ""{
|
||||
localVarHeaderParams["Authorization"] = "Basic " + a.Configuration.GetBasicAuthEncodedString()
|
||||
}
|
||||
// authentication '(ApiKeyAuth)' required
|
||||
// set key with prefix in header
|
||||
localVarHeaderParams["X-API-Key"] = a.Configuration.GetAPIKeyWithPrefix("X-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", "application/x-foo-mime", }
|
||||
|
||||
// set Content-Type header
|
||||
localVarHttpContentType := a.Configuration.APIClient.SelectHeaderContentType(localVarHttpContentTypes)
|
||||
if localVarHttpContentType != "" {
|
||||
localVarHeaderParams["Content-Type"] = localVarHttpContentType
|
||||
}
|
||||
// to determine the Accept header
|
||||
localVarHttpHeaderAccepts := []string{
|
||||
"application/json",
|
||||
"application/x-foo-mime",
|
||||
}
|
||||
|
||||
// set Accept header
|
||||
localVarHttpHeaderAccept := a.Configuration.APIClient.SelectHeaderAccept(localVarHttpHeaderAccepts)
|
||||
if localVarHttpHeaderAccept != "" {
|
||||
localVarHeaderParams["Accept"] = localVarHttpHeaderAccept
|
||||
}
|
||||
var successPayload = new(ProtobufEmpty)
|
||||
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: "Empty", 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
|
||||
}
|
||||
|
67
vendor/github.com/grpc-ecosystem/grpc-gateway/examples/clients/abe/configuration.go
generated
vendored
Executable file
67
vendor/github.com/grpc-ecosystem/grpc-gateway/examples/clients/abe/configuration.go
generated
vendored
Executable file
@ -0,0 +1,67 @@
|
||||
/*
|
||||
* A Bit of Everything
|
||||
*
|
||||
* No description provided (generated by Swagger Codegen https://github.com/swagger-api/swagger-codegen)
|
||||
*
|
||||
* OpenAPI spec version: 1.0
|
||||
* Contact: none@example.com
|
||||
* Generated by: https://github.com/swagger-api/swagger-codegen.git
|
||||
*/
|
||||
|
||||
package abe
|
||||
|
||||
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",
|
||||
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]
|
||||
}
|
265
vendor/github.com/grpc-ecosystem/grpc-gateway/examples/clients/abe/echo_rpc_api.go
generated
vendored
Executable file
265
vendor/github.com/grpc-ecosystem/grpc-gateway/examples/clients/abe/echo_rpc_api.go
generated
vendored
Executable file
@ -0,0 +1,265 @@
|
||||
/*
|
||||
* A Bit of Everything
|
||||
*
|
||||
* No description provided (generated by Swagger Codegen https://github.com/swagger-api/swagger-codegen)
|
||||
*
|
||||
* OpenAPI spec version: 1.0
|
||||
* Contact: none@example.com
|
||||
* Generated by: https://github.com/swagger-api/swagger-codegen.git
|
||||
*/
|
||||
|
||||
package abe
|
||||
|
||||
import (
|
||||
"net/url"
|
||||
"strings"
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
)
|
||||
|
||||
type EchoRpcApi struct {
|
||||
Configuration *Configuration
|
||||
}
|
||||
|
||||
func NewEchoRpcApi() *EchoRpcApi {
|
||||
configuration := NewConfiguration()
|
||||
return &EchoRpcApi{
|
||||
Configuration: configuration,
|
||||
}
|
||||
}
|
||||
|
||||
func NewEchoRpcApiWithBasePath(basePath string) *EchoRpcApi {
|
||||
configuration := NewConfiguration()
|
||||
configuration.BasePath = basePath
|
||||
|
||||
return &EchoRpcApi{
|
||||
Configuration: configuration,
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Summary: Echo rpc
|
||||
* Description Echo
|
||||
*
|
||||
* @param value
|
||||
* @return *SubStringMessage
|
||||
*/
|
||||
func (a EchoRpcApi) Echo(value string) (*SubStringMessage, *APIResponse, error) {
|
||||
|
||||
var localVarHttpMethod = strings.ToUpper("Get")
|
||||
// create path and map variables
|
||||
localVarPath := a.Configuration.BasePath + "/v1/example/a_bit_of_everything/echo/{value}"
|
||||
localVarPath = strings.Replace(localVarPath, "{"+"value"+"}", fmt.Sprintf("%v", value), -1)
|
||||
|
||||
localVarHeaderParams := make(map[string]string)
|
||||
localVarQueryParams := url.Values{}
|
||||
localVarFormParams := make(map[string]string)
|
||||
var localVarPostBody interface{}
|
||||
var localVarFileName string
|
||||
var localVarFileBytes []byte
|
||||
// authentication '(OAuth2)' required
|
||||
// oauth required
|
||||
if a.Configuration.AccessToken != ""{
|
||||
localVarHeaderParams["Authorization"] = "Bearer " + a.Configuration.AccessToken
|
||||
}
|
||||
// authentication '(BasicAuth)' required
|
||||
// http basic authentication required
|
||||
if a.Configuration.Username != "" || a.Configuration.Password != ""{
|
||||
localVarHeaderParams["Authorization"] = "Basic " + a.Configuration.GetBasicAuthEncodedString()
|
||||
}
|
||||
// authentication '(ApiKeyAuth)' required
|
||||
// set key with prefix in header
|
||||
localVarHeaderParams["X-API-Key"] = a.Configuration.GetAPIKeyWithPrefix("X-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", "application/x-foo-mime", }
|
||||
|
||||
// set Content-Type header
|
||||
localVarHttpContentType := a.Configuration.APIClient.SelectHeaderContentType(localVarHttpContentTypes)
|
||||
if localVarHttpContentType != "" {
|
||||
localVarHeaderParams["Content-Type"] = localVarHttpContentType
|
||||
}
|
||||
// to determine the Accept header
|
||||
localVarHttpHeaderAccepts := []string{
|
||||
"application/json",
|
||||
"application/x-foo-mime",
|
||||
}
|
||||
|
||||
// set Accept header
|
||||
localVarHttpHeaderAccept := a.Configuration.APIClient.SelectHeaderAccept(localVarHttpHeaderAccepts)
|
||||
if localVarHttpHeaderAccept != "" {
|
||||
localVarHeaderParams["Accept"] = localVarHttpHeaderAccept
|
||||
}
|
||||
var successPayload = new(SubStringMessage)
|
||||
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: "Echo", 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
|
||||
}
|
||||
|
||||
/**
|
||||
* Summary: Echo rpc
|
||||
* Description Echo
|
||||
*
|
||||
* @param body
|
||||
* @return *SubStringMessage
|
||||
*/
|
||||
func (a EchoRpcApi) Echo2(body string) (*SubStringMessage, *APIResponse, error) {
|
||||
|
||||
var localVarHttpMethod = strings.ToUpper("Post")
|
||||
// create path and map variables
|
||||
localVarPath := a.Configuration.BasePath + "/v2/example/echo"
|
||||
|
||||
localVarHeaderParams := make(map[string]string)
|
||||
localVarQueryParams := url.Values{}
|
||||
localVarFormParams := make(map[string]string)
|
||||
var localVarPostBody interface{}
|
||||
var localVarFileName string
|
||||
var localVarFileBytes []byte
|
||||
// authentication '(OAuth2)' required
|
||||
// oauth required
|
||||
if a.Configuration.AccessToken != ""{
|
||||
localVarHeaderParams["Authorization"] = "Bearer " + a.Configuration.AccessToken
|
||||
}
|
||||
// authentication '(BasicAuth)' required
|
||||
// http basic authentication required
|
||||
if a.Configuration.Username != "" || a.Configuration.Password != ""{
|
||||
localVarHeaderParams["Authorization"] = "Basic " + a.Configuration.GetBasicAuthEncodedString()
|
||||
}
|
||||
// authentication '(ApiKeyAuth)' required
|
||||
// set key with prefix in header
|
||||
localVarHeaderParams["X-API-Key"] = a.Configuration.GetAPIKeyWithPrefix("X-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", "application/x-foo-mime", }
|
||||
|
||||
// set Content-Type header
|
||||
localVarHttpContentType := a.Configuration.APIClient.SelectHeaderContentType(localVarHttpContentTypes)
|
||||
if localVarHttpContentType != "" {
|
||||
localVarHeaderParams["Content-Type"] = localVarHttpContentType
|
||||
}
|
||||
// to determine the Accept header
|
||||
localVarHttpHeaderAccepts := []string{
|
||||
"application/json",
|
||||
"application/x-foo-mime",
|
||||
}
|
||||
|
||||
// set Accept header
|
||||
localVarHttpHeaderAccept := a.Configuration.APIClient.SelectHeaderAccept(localVarHttpHeaderAccepts)
|
||||
if localVarHttpHeaderAccept != "" {
|
||||
localVarHeaderParams["Accept"] = localVarHttpHeaderAccept
|
||||
}
|
||||
// body params
|
||||
localVarPostBody = &body
|
||||
var successPayload = new(SubStringMessage)
|
||||
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: "Echo2", 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
|
||||
}
|
||||
|
||||
/**
|
||||
* Summary: Echo rpc
|
||||
* Description Echo
|
||||
*
|
||||
* @param value
|
||||
* @return *SubStringMessage
|
||||
*/
|
||||
func (a EchoRpcApi) Echo3(value string) (*SubStringMessage, *APIResponse, error) {
|
||||
|
||||
var localVarHttpMethod = strings.ToUpper("Get")
|
||||
// create path and map variables
|
||||
localVarPath := a.Configuration.BasePath + "/v2/example/echo"
|
||||
|
||||
localVarHeaderParams := make(map[string]string)
|
||||
localVarQueryParams := url.Values{}
|
||||
localVarFormParams := make(map[string]string)
|
||||
var localVarPostBody interface{}
|
||||
var localVarFileName string
|
||||
var localVarFileBytes []byte
|
||||
// authentication '(OAuth2)' required
|
||||
// oauth required
|
||||
if a.Configuration.AccessToken != ""{
|
||||
localVarHeaderParams["Authorization"] = "Bearer " + a.Configuration.AccessToken
|
||||
}
|
||||
// authentication '(BasicAuth)' required
|
||||
// http basic authentication required
|
||||
if a.Configuration.Username != "" || a.Configuration.Password != ""{
|
||||
localVarHeaderParams["Authorization"] = "Basic " + a.Configuration.GetBasicAuthEncodedString()
|
||||
}
|
||||
// authentication '(ApiKeyAuth)' required
|
||||
// set key with prefix in header
|
||||
localVarHeaderParams["X-API-Key"] = a.Configuration.GetAPIKeyWithPrefix("X-API-Key")
|
||||
// add default headers if any
|
||||
for key := range a.Configuration.DefaultHeader {
|
||||
localVarHeaderParams[key] = a.Configuration.DefaultHeader[key]
|
||||
}
|
||||
localVarQueryParams.Add("value", a.Configuration.APIClient.ParameterToString(value, ""))
|
||||
|
||||
// to determine the Content-Type header
|
||||
localVarHttpContentTypes := []string{ "application/json", "application/x-foo-mime", }
|
||||
|
||||
// set Content-Type header
|
||||
localVarHttpContentType := a.Configuration.APIClient.SelectHeaderContentType(localVarHttpContentTypes)
|
||||
if localVarHttpContentType != "" {
|
||||
localVarHeaderParams["Content-Type"] = localVarHttpContentType
|
||||
}
|
||||
// to determine the Accept header
|
||||
localVarHttpHeaderAccepts := []string{
|
||||
"application/json",
|
||||
"application/x-foo-mime",
|
||||
}
|
||||
|
||||
// set Accept header
|
||||
localVarHttpHeaderAccept := a.Configuration.APIClient.SelectHeaderAccept(localVarHttpHeaderAccepts)
|
||||
if localVarHttpHeaderAccept != "" {
|
||||
localVarHeaderParams["Accept"] = localVarHttpHeaderAccept
|
||||
}
|
||||
var successPayload = new(SubStringMessage)
|
||||
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: "Echo3", 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
|
||||
}
|
||||
|
265
vendor/github.com/grpc-ecosystem/grpc-gateway/examples/clients/abe/echo_service_api.go
generated
vendored
Executable file
265
vendor/github.com/grpc-ecosystem/grpc-gateway/examples/clients/abe/echo_service_api.go
generated
vendored
Executable file
@ -0,0 +1,265 @@
|
||||
/*
|
||||
* A Bit of Everything
|
||||
*
|
||||
* No description provided (generated by Swagger Codegen https://github.com/swagger-api/swagger-codegen)
|
||||
*
|
||||
* OpenAPI spec version: 1.0
|
||||
* Contact: none@example.com
|
||||
* Generated by: https://github.com/swagger-api/swagger-codegen.git
|
||||
*/
|
||||
|
||||
package abe
|
||||
|
||||
import (
|
||||
"net/url"
|
||||
"strings"
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
)
|
||||
|
||||
type EchoServiceApi struct {
|
||||
Configuration *Configuration
|
||||
}
|
||||
|
||||
func NewEchoServiceApi() *EchoServiceApi {
|
||||
configuration := NewConfiguration()
|
||||
return &EchoServiceApi{
|
||||
Configuration: configuration,
|
||||
}
|
||||
}
|
||||
|
||||
func NewEchoServiceApiWithBasePath(basePath string) *EchoServiceApi {
|
||||
configuration := NewConfiguration()
|
||||
configuration.BasePath = basePath
|
||||
|
||||
return &EchoServiceApi{
|
||||
Configuration: configuration,
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Summary: Echo rpc
|
||||
* Description Echo
|
||||
*
|
||||
* @param value
|
||||
* @return *SubStringMessage
|
||||
*/
|
||||
func (a EchoServiceApi) Echo(value string) (*SubStringMessage, *APIResponse, error) {
|
||||
|
||||
var localVarHttpMethod = strings.ToUpper("Get")
|
||||
// create path and map variables
|
||||
localVarPath := a.Configuration.BasePath + "/v1/example/a_bit_of_everything/echo/{value}"
|
||||
localVarPath = strings.Replace(localVarPath, "{"+"value"+"}", fmt.Sprintf("%v", value), -1)
|
||||
|
||||
localVarHeaderParams := make(map[string]string)
|
||||
localVarQueryParams := url.Values{}
|
||||
localVarFormParams := make(map[string]string)
|
||||
var localVarPostBody interface{}
|
||||
var localVarFileName string
|
||||
var localVarFileBytes []byte
|
||||
// authentication '(OAuth2)' required
|
||||
// oauth required
|
||||
if a.Configuration.AccessToken != ""{
|
||||
localVarHeaderParams["Authorization"] = "Bearer " + a.Configuration.AccessToken
|
||||
}
|
||||
// authentication '(BasicAuth)' required
|
||||
// http basic authentication required
|
||||
if a.Configuration.Username != "" || a.Configuration.Password != ""{
|
||||
localVarHeaderParams["Authorization"] = "Basic " + a.Configuration.GetBasicAuthEncodedString()
|
||||
}
|
||||
// authentication '(ApiKeyAuth)' required
|
||||
// set key with prefix in header
|
||||
localVarHeaderParams["X-API-Key"] = a.Configuration.GetAPIKeyWithPrefix("X-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", "application/x-foo-mime", }
|
||||
|
||||
// set Content-Type header
|
||||
localVarHttpContentType := a.Configuration.APIClient.SelectHeaderContentType(localVarHttpContentTypes)
|
||||
if localVarHttpContentType != "" {
|
||||
localVarHeaderParams["Content-Type"] = localVarHttpContentType
|
||||
}
|
||||
// to determine the Accept header
|
||||
localVarHttpHeaderAccepts := []string{
|
||||
"application/json",
|
||||
"application/x-foo-mime",
|
||||
}
|
||||
|
||||
// set Accept header
|
||||
localVarHttpHeaderAccept := a.Configuration.APIClient.SelectHeaderAccept(localVarHttpHeaderAccepts)
|
||||
if localVarHttpHeaderAccept != "" {
|
||||
localVarHeaderParams["Accept"] = localVarHttpHeaderAccept
|
||||
}
|
||||
var successPayload = new(SubStringMessage)
|
||||
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: "Echo", 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
|
||||
}
|
||||
|
||||
/**
|
||||
* Summary: Echo rpc
|
||||
* Description Echo
|
||||
*
|
||||
* @param body
|
||||
* @return *SubStringMessage
|
||||
*/
|
||||
func (a EchoServiceApi) Echo2(body string) (*SubStringMessage, *APIResponse, error) {
|
||||
|
||||
var localVarHttpMethod = strings.ToUpper("Post")
|
||||
// create path and map variables
|
||||
localVarPath := a.Configuration.BasePath + "/v2/example/echo"
|
||||
|
||||
localVarHeaderParams := make(map[string]string)
|
||||
localVarQueryParams := url.Values{}
|
||||
localVarFormParams := make(map[string]string)
|
||||
var localVarPostBody interface{}
|
||||
var localVarFileName string
|
||||
var localVarFileBytes []byte
|
||||
// authentication '(OAuth2)' required
|
||||
// oauth required
|
||||
if a.Configuration.AccessToken != ""{
|
||||
localVarHeaderParams["Authorization"] = "Bearer " + a.Configuration.AccessToken
|
||||
}
|
||||
// authentication '(BasicAuth)' required
|
||||
// http basic authentication required
|
||||
if a.Configuration.Username != "" || a.Configuration.Password != ""{
|
||||
localVarHeaderParams["Authorization"] = "Basic " + a.Configuration.GetBasicAuthEncodedString()
|
||||
}
|
||||
// authentication '(ApiKeyAuth)' required
|
||||
// set key with prefix in header
|
||||
localVarHeaderParams["X-API-Key"] = a.Configuration.GetAPIKeyWithPrefix("X-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", "application/x-foo-mime", }
|
||||
|
||||
// set Content-Type header
|
||||
localVarHttpContentType := a.Configuration.APIClient.SelectHeaderContentType(localVarHttpContentTypes)
|
||||
if localVarHttpContentType != "" {
|
||||
localVarHeaderParams["Content-Type"] = localVarHttpContentType
|
||||
}
|
||||
// to determine the Accept header
|
||||
localVarHttpHeaderAccepts := []string{
|
||||
"application/json",
|
||||
"application/x-foo-mime",
|
||||
}
|
||||
|
||||
// set Accept header
|
||||
localVarHttpHeaderAccept := a.Configuration.APIClient.SelectHeaderAccept(localVarHttpHeaderAccepts)
|
||||
if localVarHttpHeaderAccept != "" {
|
||||
localVarHeaderParams["Accept"] = localVarHttpHeaderAccept
|
||||
}
|
||||
// body params
|
||||
localVarPostBody = &body
|
||||
var successPayload = new(SubStringMessage)
|
||||
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: "Echo2", 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
|
||||
}
|
||||
|
||||
/**
|
||||
* Summary: Echo rpc
|
||||
* Description Echo
|
||||
*
|
||||
* @param value
|
||||
* @return *SubStringMessage
|
||||
*/
|
||||
func (a EchoServiceApi) Echo3(value string) (*SubStringMessage, *APIResponse, error) {
|
||||
|
||||
var localVarHttpMethod = strings.ToUpper("Get")
|
||||
// create path and map variables
|
||||
localVarPath := a.Configuration.BasePath + "/v2/example/echo"
|
||||
|
||||
localVarHeaderParams := make(map[string]string)
|
||||
localVarQueryParams := url.Values{}
|
||||
localVarFormParams := make(map[string]string)
|
||||
var localVarPostBody interface{}
|
||||
var localVarFileName string
|
||||
var localVarFileBytes []byte
|
||||
// authentication '(OAuth2)' required
|
||||
// oauth required
|
||||
if a.Configuration.AccessToken != ""{
|
||||
localVarHeaderParams["Authorization"] = "Bearer " + a.Configuration.AccessToken
|
||||
}
|
||||
// authentication '(BasicAuth)' required
|
||||
// http basic authentication required
|
||||
if a.Configuration.Username != "" || a.Configuration.Password != ""{
|
||||
localVarHeaderParams["Authorization"] = "Basic " + a.Configuration.GetBasicAuthEncodedString()
|
||||
}
|
||||
// authentication '(ApiKeyAuth)' required
|
||||
// set key with prefix in header
|
||||
localVarHeaderParams["X-API-Key"] = a.Configuration.GetAPIKeyWithPrefix("X-API-Key")
|
||||
// add default headers if any
|
||||
for key := range a.Configuration.DefaultHeader {
|
||||
localVarHeaderParams[key] = a.Configuration.DefaultHeader[key]
|
||||
}
|
||||
localVarQueryParams.Add("value", a.Configuration.APIClient.ParameterToString(value, ""))
|
||||
|
||||
// to determine the Content-Type header
|
||||
localVarHttpContentTypes := []string{ "application/json", "application/x-foo-mime", }
|
||||
|
||||
// set Content-Type header
|
||||
localVarHttpContentType := a.Configuration.APIClient.SelectHeaderContentType(localVarHttpContentTypes)
|
||||
if localVarHttpContentType != "" {
|
||||
localVarHeaderParams["Content-Type"] = localVarHttpContentType
|
||||
}
|
||||
// to determine the Accept header
|
||||
localVarHttpHeaderAccepts := []string{
|
||||
"application/json",
|
||||
"application/x-foo-mime",
|
||||
}
|
||||
|
||||
// set Accept header
|
||||
localVarHttpHeaderAccept := a.Configuration.APIClient.SelectHeaderAccept(localVarHttpHeaderAccepts)
|
||||
if localVarHttpHeaderAccept != "" {
|
||||
localVarHeaderParams["Accept"] = localVarHttpHeaderAccept
|
||||
}
|
||||
var successPayload = new(SubStringMessage)
|
||||
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: "Echo3", 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
|
||||
}
|
||||
|
74
vendor/github.com/grpc-ecosystem/grpc-gateway/examples/clients/abe/examplepb_a_bit_of_everything.go
generated
vendored
Executable file
74
vendor/github.com/grpc-ecosystem/grpc-gateway/examples/clients/abe/examplepb_a_bit_of_everything.go
generated
vendored
Executable file
@ -0,0 +1,74 @@
|
||||
/*
|
||||
* A Bit of Everything
|
||||
*
|
||||
* No description provided (generated by Swagger Codegen https://github.com/swagger-api/swagger-codegen)
|
||||
*
|
||||
* OpenAPI spec version: 1.0
|
||||
* Contact: none@example.com
|
||||
* Generated by: https://github.com/swagger-api/swagger-codegen.git
|
||||
*/
|
||||
|
||||
package abe
|
||||
|
||||
import (
|
||||
"time"
|
||||
)
|
||||
|
||||
type ExamplepbABitOfEverything struct {
|
||||
|
||||
SingleNested ABitOfEverythingNested `json:"single_nested,omitempty"`
|
||||
|
||||
Uuid string `json:"uuid,omitempty"`
|
||||
|
||||
Nested []ABitOfEverythingNested `json:"nested,omitempty"`
|
||||
|
||||
FloatValue float32 `json:"float_value,omitempty"`
|
||||
|
||||
DoubleValue float64 `json:"double_value,omitempty"`
|
||||
|
||||
Int64Value string `json:"int64_value,omitempty"`
|
||||
|
||||
Uint64Value string `json:"uint64_value,omitempty"`
|
||||
|
||||
Int32Value int32 `json:"int32_value,omitempty"`
|
||||
|
||||
Fixed64Value string `json:"fixed64_value,omitempty"`
|
||||
|
||||
Fixed32Value int64 `json:"fixed32_value,omitempty"`
|
||||
|
||||
BoolValue bool `json:"bool_value,omitempty"`
|
||||
|
||||
StringValue string `json:"string_value,omitempty"`
|
||||
|
||||
BytesValue string `json:"bytes_value,omitempty"`
|
||||
|
||||
Uint32Value int64 `json:"uint32_value,omitempty"`
|
||||
|
||||
EnumValue ExamplepbNumericEnum `json:"enum_value,omitempty"`
|
||||
|
||||
Sfixed32Value int32 `json:"sfixed32_value,omitempty"`
|
||||
|
||||
Sfixed64Value string `json:"sfixed64_value,omitempty"`
|
||||
|
||||
Sint32Value int32 `json:"sint32_value,omitempty"`
|
||||
|
||||
Sint64Value string `json:"sint64_value,omitempty"`
|
||||
|
||||
RepeatedStringValue []string `json:"repeated_string_value,omitempty"`
|
||||
|
||||
OneofEmpty ProtobufEmpty `json:"oneof_empty,omitempty"`
|
||||
|
||||
OneofString string `json:"oneof_string,omitempty"`
|
||||
|
||||
MapValue map[string]ExamplepbNumericEnum `json:"map_value,omitempty"`
|
||||
|
||||
MappedStringValue map[string]string `json:"mapped_string_value,omitempty"`
|
||||
|
||||
MappedNestedValue map[string]ABitOfEverythingNested `json:"mapped_nested_value,omitempty"`
|
||||
|
||||
NonConventionalNameValue string `json:"nonConventionalNameValue,omitempty"`
|
||||
|
||||
TimestampValue time.Time `json:"timestamp_value,omitempty"`
|
||||
|
||||
RepeatedEnumValue []ExamplepbNumericEnum `json:"repeated_enum_value,omitempty"`
|
||||
}
|
16
vendor/github.com/grpc-ecosystem/grpc-gateway/examples/clients/abe/examplepb_body.go
generated
vendored
Executable file
16
vendor/github.com/grpc-ecosystem/grpc-gateway/examples/clients/abe/examplepb_body.go
generated
vendored
Executable file
@ -0,0 +1,16 @@
|
||||
/*
|
||||
* A Bit of Everything
|
||||
*
|
||||
* No description provided (generated by Swagger Codegen https://github.com/swagger-api/swagger-codegen)
|
||||
*
|
||||
* OpenAPI spec version: 1.0
|
||||
* Contact: none@example.com
|
||||
* Generated by: https://github.com/swagger-api/swagger-codegen.git
|
||||
*/
|
||||
|
||||
package abe
|
||||
|
||||
type ExamplepbBody struct {
|
||||
|
||||
Name string `json:"name,omitempty"`
|
||||
}
|
15
vendor/github.com/grpc-ecosystem/grpc-gateway/examples/clients/abe/examplepb_numeric_enum.go
generated
vendored
Executable file
15
vendor/github.com/grpc-ecosystem/grpc-gateway/examples/clients/abe/examplepb_numeric_enum.go
generated
vendored
Executable file
@ -0,0 +1,15 @@
|
||||
/*
|
||||
* A Bit of Everything
|
||||
*
|
||||
* No description provided (generated by Swagger Codegen https://github.com/swagger-api/swagger-codegen)
|
||||
*
|
||||
* OpenAPI spec version: 1.0
|
||||
* Contact: none@example.com
|
||||
* Generated by: https://github.com/swagger-api/swagger-codegen.git
|
||||
*/
|
||||
|
||||
package abe
|
||||
|
||||
// NumericEnum is one or zero. - ZERO: ZERO means 0 - ONE: ONE means 1
|
||||
type ExamplepbNumericEnum struct {
|
||||
}
|
15
vendor/github.com/grpc-ecosystem/grpc-gateway/examples/clients/abe/nested_deep_enum.go
generated
vendored
Executable file
15
vendor/github.com/grpc-ecosystem/grpc-gateway/examples/clients/abe/nested_deep_enum.go
generated
vendored
Executable file
@ -0,0 +1,15 @@
|
||||
/*
|
||||
* A Bit of Everything
|
||||
*
|
||||
* No description provided (generated by Swagger Codegen https://github.com/swagger-api/swagger-codegen)
|
||||
*
|
||||
* OpenAPI spec version: 1.0
|
||||
* Contact: none@example.com
|
||||
* Generated by: https://github.com/swagger-api/swagger-codegen.git
|
||||
*/
|
||||
|
||||
package abe
|
||||
|
||||
// DeepEnum is one or zero. - FALSE: FALSE is false. - TRUE: TRUE is true.
|
||||
type NestedDeepEnum struct {
|
||||
}
|
15
vendor/github.com/grpc-ecosystem/grpc-gateway/examples/clients/abe/protobuf_empty.go
generated
vendored
Executable file
15
vendor/github.com/grpc-ecosystem/grpc-gateway/examples/clients/abe/protobuf_empty.go
generated
vendored
Executable file
@ -0,0 +1,15 @@
|
||||
/*
|
||||
* A Bit of Everything
|
||||
*
|
||||
* No description provided (generated by Swagger Codegen https://github.com/swagger-api/swagger-codegen)
|
||||
*
|
||||
* OpenAPI spec version: 1.0
|
||||
* Contact: none@example.com
|
||||
* Generated by: https://github.com/swagger-api/swagger-codegen.git
|
||||
*/
|
||||
|
||||
package abe
|
||||
|
||||
// service Foo { rpc Bar(google.protobuf.Empty) returns (google.protobuf.Empty); } The JSON representation for `Empty` is empty JSON object `{}`.
|
||||
type ProtobufEmpty struct {
|
||||
}
|
16
vendor/github.com/grpc-ecosystem/grpc-gateway/examples/clients/abe/sub_string_message.go
generated
vendored
Executable file
16
vendor/github.com/grpc-ecosystem/grpc-gateway/examples/clients/abe/sub_string_message.go
generated
vendored
Executable file
@ -0,0 +1,16 @@
|
||||
/*
|
||||
* A Bit of Everything
|
||||
*
|
||||
* No description provided (generated by Swagger Codegen https://github.com/swagger-api/swagger-codegen)
|
||||
*
|
||||
* OpenAPI spec version: 1.0
|
||||
* Contact: none@example.com
|
||||
* Generated by: https://github.com/swagger-api/swagger-codegen.git
|
||||
*/
|
||||
|
||||
package abe
|
||||
|
||||
type SubStringMessage struct {
|
||||
|
||||
Value string `json:"value,omitempty"`
|
||||
}
|
1
vendor/github.com/grpc-ecosystem/grpc-gateway/examples/clients/echo/.gitignore
generated
vendored
Executable file
1
vendor/github.com/grpc-ecosystem/grpc-gateway/examples/clients/echo/.gitignore
generated
vendored
Executable file
@ -0,0 +1 @@
|
||||
/docs
|
1
vendor/github.com/grpc-ecosystem/grpc-gateway/examples/clients/echo/.swagger-codegen-ignore
generated
vendored
Executable file
1
vendor/github.com/grpc-ecosystem/grpc-gateway/examples/clients/echo/.swagger-codegen-ignore
generated
vendored
Executable file
@ -0,0 +1 @@
|
||||
.gitignore
|
17
vendor/github.com/grpc-ecosystem/grpc-gateway/examples/clients/echo/BUILD.bazel
generated
vendored
Executable file
17
vendor/github.com/grpc-ecosystem/grpc-gateway/examples/clients/echo/BUILD.bazel
generated
vendored
Executable file
@ -0,0 +1,17 @@
|
||||
load("@io_bazel_rules_go//go:def.bzl", "go_library")
|
||||
|
||||
package(default_visibility = ["//visibility:public"])
|
||||
|
||||
go_library(
|
||||
name = "go_default_library",
|
||||
srcs = [
|
||||
"api_client.go",
|
||||
"api_response.go",
|
||||
"configuration.go",
|
||||
"echo_service_api.go",
|
||||
"examplepb_embedded.go",
|
||||
"examplepb_simple_message.go",
|
||||
],
|
||||
importpath = "github.com/grpc-ecosystem/grpc-gateway/examples/clients/echo",
|
||||
deps = ["@com_github_go_resty_resty//:go_default_library"],
|
||||
)
|
164
vendor/github.com/grpc-ecosystem/grpc-gateway/examples/clients/echo/api_client.go
generated
vendored
Executable file
164
vendor/github.com/grpc-ecosystem/grpc-gateway/examples/clients/echo/api_client.go
generated
vendored
Executable file
@ -0,0 +1,164 @@
|
||||
/*
|
||||
* Echo Service
|
||||
*
|
||||
* Echo Service API consists of a single service which returns a message.
|
||||
*
|
||||
* OpenAPI spec version: version not set
|
||||
*
|
||||
* Generated by: https://github.com/swagger-api/swagger-codegen.git
|
||||
*/
|
||||
|
||||
package echo
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"fmt"
|
||||
"path/filepath"
|
||||
"reflect"
|
||||
"strings"
|
||||
"net/url"
|
||||
"io/ioutil"
|
||||
"github.com/go-resty/resty"
|
||||
)
|
||||
|
||||
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
|
||||
}
|
44
vendor/github.com/grpc-ecosystem/grpc-gateway/examples/clients/echo/api_response.go
generated
vendored
Executable file
44
vendor/github.com/grpc-ecosystem/grpc-gateway/examples/clients/echo/api_response.go
generated
vendored
Executable file
@ -0,0 +1,44 @@
|
||||
/*
|
||||
* Echo Service
|
||||
*
|
||||
* Echo Service API consists of a single service which returns a message.
|
||||
*
|
||||
* OpenAPI spec version: version not set
|
||||
*
|
||||
* Generated by: https://github.com/swagger-api/swagger-codegen.git
|
||||
*/
|
||||
|
||||
package echo
|
||||
|
||||
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
|
||||
}
|
67
vendor/github.com/grpc-ecosystem/grpc-gateway/examples/clients/echo/configuration.go
generated
vendored
Executable file
67
vendor/github.com/grpc-ecosystem/grpc-gateway/examples/clients/echo/configuration.go
generated
vendored
Executable file
@ -0,0 +1,67 @@
|
||||
/*
|
||||
* Echo Service
|
||||
*
|
||||
* Echo Service API consists of a single service which returns a message.
|
||||
*
|
||||
* OpenAPI spec version: version not set
|
||||
*
|
||||
* Generated by: https://github.com/swagger-api/swagger-codegen.git
|
||||
*/
|
||||
|
||||
package echo
|
||||
|
||||
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",
|
||||
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]
|
||||
}
|
541
vendor/github.com/grpc-ecosystem/grpc-gateway/examples/clients/echo/echo_service_api.go
generated
vendored
Executable file
541
vendor/github.com/grpc-ecosystem/grpc-gateway/examples/clients/echo/echo_service_api.go
generated
vendored
Executable file
@ -0,0 +1,541 @@
|
||||
/*
|
||||
* Echo Service
|
||||
*
|
||||
* Echo Service API consists of a single service which returns a message.
|
||||
*
|
||||
* OpenAPI spec version: version not set
|
||||
*
|
||||
* Generated by: https://github.com/swagger-api/swagger-codegen.git
|
||||
*/
|
||||
|
||||
package echo
|
||||
|
||||
import (
|
||||
"net/url"
|
||||
"strings"
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
)
|
||||
|
||||
type EchoServiceApi struct {
|
||||
Configuration *Configuration
|
||||
}
|
||||
|
||||
func NewEchoServiceApi() *EchoServiceApi {
|
||||
configuration := NewConfiguration()
|
||||
return &EchoServiceApi{
|
||||
Configuration: configuration,
|
||||
}
|
||||
}
|
||||
|
||||
func NewEchoServiceApiWithBasePath(basePath string) *EchoServiceApi {
|
||||
configuration := NewConfiguration()
|
||||
configuration.BasePath = basePath
|
||||
|
||||
return &EchoServiceApi{
|
||||
Configuration: configuration,
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Echo method receives a simple message and returns it.
|
||||
* The message posted as the id parameter will also be returned.
|
||||
*
|
||||
* @param id
|
||||
* @return *ExamplepbSimpleMessage
|
||||
*/
|
||||
func (a EchoServiceApi) Echo(id string) (*ExamplepbSimpleMessage, *APIResponse, error) {
|
||||
|
||||
var localVarHttpMethod = strings.ToUpper("Post")
|
||||
// create path and map variables
|
||||
localVarPath := a.Configuration.BasePath + "/v1/example/echo/{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{
|
||||
"application/json",
|
||||
}
|
||||
|
||||
// set Accept header
|
||||
localVarHttpHeaderAccept := a.Configuration.APIClient.SelectHeaderAccept(localVarHttpHeaderAccepts)
|
||||
if localVarHttpHeaderAccept != "" {
|
||||
localVarHeaderParams["Accept"] = localVarHttpHeaderAccept
|
||||
}
|
||||
var successPayload = new(ExamplepbSimpleMessage)
|
||||
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: "Echo", 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
|
||||
}
|
||||
|
||||
/**
|
||||
* Echo method receives a simple message and returns it.
|
||||
* The message posted as the id parameter will also be returned.
|
||||
*
|
||||
* @param id
|
||||
* @param num
|
||||
* @param lineNum
|
||||
* @param lang
|
||||
* @param statusProgress
|
||||
* @param statusNote
|
||||
* @param en
|
||||
* @param noProgress
|
||||
* @param noNote
|
||||
* @return *ExamplepbSimpleMessage
|
||||
*/
|
||||
func (a EchoServiceApi) Echo2(id string, num string, lineNum string, lang string, statusProgress string, statusNote string, en string, noProgress string, noNote string) (*ExamplepbSimpleMessage, *APIResponse, error) {
|
||||
|
||||
var localVarHttpMethod = strings.ToUpper("Get")
|
||||
// create path and map variables
|
||||
localVarPath := a.Configuration.BasePath + "/v1/example/echo/{id}/{num}"
|
||||
localVarPath = strings.Replace(localVarPath, "{"+"id"+"}", fmt.Sprintf("%v", id), -1)
|
||||
localVarPath = strings.Replace(localVarPath, "{"+"num"+"}", fmt.Sprintf("%v", num), -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]
|
||||
}
|
||||
localVarQueryParams.Add("line_num", a.Configuration.APIClient.ParameterToString(lineNum, ""))
|
||||
localVarQueryParams.Add("lang", a.Configuration.APIClient.ParameterToString(lang, ""))
|
||||
localVarQueryParams.Add("status.progress", a.Configuration.APIClient.ParameterToString(statusProgress, ""))
|
||||
localVarQueryParams.Add("status.note", a.Configuration.APIClient.ParameterToString(statusNote, ""))
|
||||
localVarQueryParams.Add("en", a.Configuration.APIClient.ParameterToString(en, ""))
|
||||
localVarQueryParams.Add("no.progress", a.Configuration.APIClient.ParameterToString(noProgress, ""))
|
||||
localVarQueryParams.Add("no.note", a.Configuration.APIClient.ParameterToString(noNote, ""))
|
||||
|
||||
// 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{
|
||||
"application/json",
|
||||
}
|
||||
|
||||
// set Accept header
|
||||
localVarHttpHeaderAccept := a.Configuration.APIClient.SelectHeaderAccept(localVarHttpHeaderAccepts)
|
||||
if localVarHttpHeaderAccept != "" {
|
||||
localVarHeaderParams["Accept"] = localVarHttpHeaderAccept
|
||||
}
|
||||
var successPayload = new(ExamplepbSimpleMessage)
|
||||
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: "Echo2", 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
|
||||
}
|
||||
|
||||
/**
|
||||
* Echo method receives a simple message and returns it.
|
||||
* The message posted as the id parameter will also be returned.
|
||||
*
|
||||
* @param id
|
||||
* @param num
|
||||
* @param lang
|
||||
* @param lineNum
|
||||
* @param statusProgress
|
||||
* @param statusNote
|
||||
* @param en
|
||||
* @param noProgress
|
||||
* @param noNote
|
||||
* @return *ExamplepbSimpleMessage
|
||||
*/
|
||||
func (a EchoServiceApi) Echo3(id string, num string, lang string, lineNum string, statusProgress string, statusNote string, en string, noProgress string, noNote string) (*ExamplepbSimpleMessage, *APIResponse, error) {
|
||||
|
||||
var localVarHttpMethod = strings.ToUpper("Get")
|
||||
// create path and map variables
|
||||
localVarPath := a.Configuration.BasePath + "/v1/example/echo/{id}/{num}/{lang}"
|
||||
localVarPath = strings.Replace(localVarPath, "{"+"id"+"}", fmt.Sprintf("%v", id), -1)
|
||||
localVarPath = strings.Replace(localVarPath, "{"+"num"+"}", fmt.Sprintf("%v", num), -1)
|
||||
localVarPath = strings.Replace(localVarPath, "{"+"lang"+"}", fmt.Sprintf("%v", lang), -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]
|
||||
}
|
||||
localVarQueryParams.Add("line_num", a.Configuration.APIClient.ParameterToString(lineNum, ""))
|
||||
localVarQueryParams.Add("status.progress", a.Configuration.APIClient.ParameterToString(statusProgress, ""))
|
||||
localVarQueryParams.Add("status.note", a.Configuration.APIClient.ParameterToString(statusNote, ""))
|
||||
localVarQueryParams.Add("en", a.Configuration.APIClient.ParameterToString(en, ""))
|
||||
localVarQueryParams.Add("no.progress", a.Configuration.APIClient.ParameterToString(noProgress, ""))
|
||||
localVarQueryParams.Add("no.note", a.Configuration.APIClient.ParameterToString(noNote, ""))
|
||||
|
||||
// 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{
|
||||
"application/json",
|
||||
}
|
||||
|
||||
// set Accept header
|
||||
localVarHttpHeaderAccept := a.Configuration.APIClient.SelectHeaderAccept(localVarHttpHeaderAccepts)
|
||||
if localVarHttpHeaderAccept != "" {
|
||||
localVarHeaderParams["Accept"] = localVarHttpHeaderAccept
|
||||
}
|
||||
var successPayload = new(ExamplepbSimpleMessage)
|
||||
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: "Echo3", 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
|
||||
}
|
||||
|
||||
/**
|
||||
* Echo method receives a simple message and returns it.
|
||||
* The message posted as the id parameter will also be returned.
|
||||
*
|
||||
* @param id
|
||||
* @param lineNum
|
||||
* @param statusNote
|
||||
* @param num
|
||||
* @param lang
|
||||
* @param statusProgress
|
||||
* @param en
|
||||
* @param noProgress
|
||||
* @return *ExamplepbSimpleMessage
|
||||
*/
|
||||
func (a EchoServiceApi) Echo4(id string, lineNum string, statusNote string, num string, lang string, statusProgress string, en string, noProgress string) (*ExamplepbSimpleMessage, *APIResponse, error) {
|
||||
|
||||
var localVarHttpMethod = strings.ToUpper("Get")
|
||||
// create path and map variables
|
||||
localVarPath := a.Configuration.BasePath + "/v1/example/echo1/{id}/{line_num}/{status.note}"
|
||||
localVarPath = strings.Replace(localVarPath, "{"+"id"+"}", fmt.Sprintf("%v", id), -1)
|
||||
localVarPath = strings.Replace(localVarPath, "{"+"line_num"+"}", fmt.Sprintf("%v", lineNum), -1)
|
||||
localVarPath = strings.Replace(localVarPath, "{"+"status.note"+"}", fmt.Sprintf("%v", statusNote), -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]
|
||||
}
|
||||
localVarQueryParams.Add("num", a.Configuration.APIClient.ParameterToString(num, ""))
|
||||
localVarQueryParams.Add("lang", a.Configuration.APIClient.ParameterToString(lang, ""))
|
||||
localVarQueryParams.Add("status.progress", a.Configuration.APIClient.ParameterToString(statusProgress, ""))
|
||||
localVarQueryParams.Add("en", a.Configuration.APIClient.ParameterToString(en, ""))
|
||||
localVarQueryParams.Add("no.progress", a.Configuration.APIClient.ParameterToString(noProgress, ""))
|
||||
|
||||
// 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{
|
||||
"application/json",
|
||||
}
|
||||
|
||||
// set Accept header
|
||||
localVarHttpHeaderAccept := a.Configuration.APIClient.SelectHeaderAccept(localVarHttpHeaderAccepts)
|
||||
if localVarHttpHeaderAccept != "" {
|
||||
localVarHeaderParams["Accept"] = localVarHttpHeaderAccept
|
||||
}
|
||||
var successPayload = new(ExamplepbSimpleMessage)
|
||||
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: "Echo4", 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
|
||||
}
|
||||
|
||||
/**
|
||||
* Echo method receives a simple message and returns it.
|
||||
* The message posted as the id parameter will also be returned.
|
||||
*
|
||||
* @param noNote
|
||||
* @param id Id represents the message identifier.
|
||||
* @param num
|
||||
* @param lineNum
|
||||
* @param lang
|
||||
* @param statusProgress
|
||||
* @param en
|
||||
* @param noProgress
|
||||
* @return *ExamplepbSimpleMessage
|
||||
*/
|
||||
func (a EchoServiceApi) Echo5(noNote string, id string, num string, lineNum string, lang string, statusProgress string, en string, noProgress string) (*ExamplepbSimpleMessage, *APIResponse, error) {
|
||||
|
||||
var localVarHttpMethod = strings.ToUpper("Get")
|
||||
// create path and map variables
|
||||
localVarPath := a.Configuration.BasePath + "/v1/example/echo2/{no.note}"
|
||||
localVarPath = strings.Replace(localVarPath, "{"+"no.note"+"}", fmt.Sprintf("%v", noNote), -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]
|
||||
}
|
||||
localVarQueryParams.Add("id", a.Configuration.APIClient.ParameterToString(id, ""))
|
||||
localVarQueryParams.Add("num", a.Configuration.APIClient.ParameterToString(num, ""))
|
||||
localVarQueryParams.Add("line_num", a.Configuration.APIClient.ParameterToString(lineNum, ""))
|
||||
localVarQueryParams.Add("lang", a.Configuration.APIClient.ParameterToString(lang, ""))
|
||||
localVarQueryParams.Add("status.progress", a.Configuration.APIClient.ParameterToString(statusProgress, ""))
|
||||
localVarQueryParams.Add("en", a.Configuration.APIClient.ParameterToString(en, ""))
|
||||
localVarQueryParams.Add("no.progress", a.Configuration.APIClient.ParameterToString(noProgress, ""))
|
||||
|
||||
// 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{
|
||||
"application/json",
|
||||
}
|
||||
|
||||
// set Accept header
|
||||
localVarHttpHeaderAccept := a.Configuration.APIClient.SelectHeaderAccept(localVarHttpHeaderAccepts)
|
||||
if localVarHttpHeaderAccept != "" {
|
||||
localVarHeaderParams["Accept"] = localVarHttpHeaderAccept
|
||||
}
|
||||
var successPayload = new(ExamplepbSimpleMessage)
|
||||
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: "Echo5", 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
|
||||
}
|
||||
|
||||
/**
|
||||
* EchoBody method receives a simple message and returns it.
|
||||
*
|
||||
* @param body
|
||||
* @return *ExamplepbSimpleMessage
|
||||
*/
|
||||
func (a EchoServiceApi) EchoBody(body ExamplepbSimpleMessage) (*ExamplepbSimpleMessage, *APIResponse, error) {
|
||||
|
||||
var localVarHttpMethod = strings.ToUpper("Post")
|
||||
// create path and map variables
|
||||
localVarPath := a.Configuration.BasePath + "/v1/example/echo_body"
|
||||
|
||||
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{
|
||||
"application/json",
|
||||
}
|
||||
|
||||
// set Accept header
|
||||
localVarHttpHeaderAccept := a.Configuration.APIClient.SelectHeaderAccept(localVarHttpHeaderAccepts)
|
||||
if localVarHttpHeaderAccept != "" {
|
||||
localVarHeaderParams["Accept"] = localVarHttpHeaderAccept
|
||||
}
|
||||
// body params
|
||||
localVarPostBody = &body
|
||||
var successPayload = new(ExamplepbSimpleMessage)
|
||||
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: "EchoBody", 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
|
||||
}
|
||||
|
||||
/**
|
||||
* EchoDelete method receives a simple message and returns it.
|
||||
*
|
||||
* @param id Id represents the message identifier.
|
||||
* @param num
|
||||
* @param lineNum
|
||||
* @param lang
|
||||
* @param statusProgress
|
||||
* @param statusNote
|
||||
* @param en
|
||||
* @param noProgress
|
||||
* @param noNote
|
||||
* @return *ExamplepbSimpleMessage
|
||||
*/
|
||||
func (a EchoServiceApi) EchoDelete(id string, num string, lineNum string, lang string, statusProgress string, statusNote string, en string, noProgress string, noNote string) (*ExamplepbSimpleMessage, *APIResponse, error) {
|
||||
|
||||
var localVarHttpMethod = strings.ToUpper("Delete")
|
||||
// create path and map variables
|
||||
localVarPath := a.Configuration.BasePath + "/v1/example/echo_delete"
|
||||
|
||||
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]
|
||||
}
|
||||
localVarQueryParams.Add("id", a.Configuration.APIClient.ParameterToString(id, ""))
|
||||
localVarQueryParams.Add("num", a.Configuration.APIClient.ParameterToString(num, ""))
|
||||
localVarQueryParams.Add("line_num", a.Configuration.APIClient.ParameterToString(lineNum, ""))
|
||||
localVarQueryParams.Add("lang", a.Configuration.APIClient.ParameterToString(lang, ""))
|
||||
localVarQueryParams.Add("status.progress", a.Configuration.APIClient.ParameterToString(statusProgress, ""))
|
||||
localVarQueryParams.Add("status.note", a.Configuration.APIClient.ParameterToString(statusNote, ""))
|
||||
localVarQueryParams.Add("en", a.Configuration.APIClient.ParameterToString(en, ""))
|
||||
localVarQueryParams.Add("no.progress", a.Configuration.APIClient.ParameterToString(noProgress, ""))
|
||||
localVarQueryParams.Add("no.note", a.Configuration.APIClient.ParameterToString(noNote, ""))
|
||||
|
||||
// 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{
|
||||
"application/json",
|
||||
}
|
||||
|
||||
// set Accept header
|
||||
localVarHttpHeaderAccept := a.Configuration.APIClient.SelectHeaderAccept(localVarHttpHeaderAccepts)
|
||||
if localVarHttpHeaderAccept != "" {
|
||||
localVarHeaderParams["Accept"] = localVarHttpHeaderAccept
|
||||
}
|
||||
var successPayload = new(ExamplepbSimpleMessage)
|
||||
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: "EchoDelete", 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
|
||||
}
|
||||
|
19
vendor/github.com/grpc-ecosystem/grpc-gateway/examples/clients/echo/examplepb_embedded.go
generated
vendored
Executable file
19
vendor/github.com/grpc-ecosystem/grpc-gateway/examples/clients/echo/examplepb_embedded.go
generated
vendored
Executable file
@ -0,0 +1,19 @@
|
||||
/*
|
||||
* Echo Service
|
||||
*
|
||||
* Echo Service API consists of a single service which returns a message.
|
||||
*
|
||||
* OpenAPI spec version: version not set
|
||||
*
|
||||
* Generated by: https://github.com/swagger-api/swagger-codegen.git
|
||||
*/
|
||||
|
||||
package echo
|
||||
|
||||
// Embedded represents a message embedded in SimpleMessage.
|
||||
type ExamplepbEmbedded struct {
|
||||
|
||||
Progress string `json:"progress,omitempty"`
|
||||
|
||||
Note string `json:"note,omitempty"`
|
||||
}
|
30
vendor/github.com/grpc-ecosystem/grpc-gateway/examples/clients/echo/examplepb_simple_message.go
generated
vendored
Executable file
30
vendor/github.com/grpc-ecosystem/grpc-gateway/examples/clients/echo/examplepb_simple_message.go
generated
vendored
Executable file
@ -0,0 +1,30 @@
|
||||
/*
|
||||
* Echo Service
|
||||
*
|
||||
* Echo Service API consists of a single service which returns a message.
|
||||
*
|
||||
* OpenAPI spec version: version not set
|
||||
*
|
||||
* Generated by: https://github.com/swagger-api/swagger-codegen.git
|
||||
*/
|
||||
|
||||
package echo
|
||||
|
||||
// SimpleMessage represents a simple message sent to the Echo service.
|
||||
type ExamplepbSimpleMessage struct {
|
||||
|
||||
// Id represents the message identifier.
|
||||
Id string `json:"id,omitempty"`
|
||||
|
||||
Num string `json:"num,omitempty"`
|
||||
|
||||
LineNum string `json:"line_num,omitempty"`
|
||||
|
||||
Lang string `json:"lang,omitempty"`
|
||||
|
||||
Status ExamplepbEmbedded `json:"status,omitempty"`
|
||||
|
||||
En string `json:"en,omitempty"`
|
||||
|
||||
No ExamplepbEmbedded `json:"no,omitempty"`
|
||||
}
|
1
vendor/github.com/grpc-ecosystem/grpc-gateway/examples/clients/unannotatedecho/.gitignore
generated
vendored
Executable file
1
vendor/github.com/grpc-ecosystem/grpc-gateway/examples/clients/unannotatedecho/.gitignore
generated
vendored
Executable file
@ -0,0 +1 @@
|
||||
/docs
|
1
vendor/github.com/grpc-ecosystem/grpc-gateway/examples/clients/unannotatedecho/.swagger-codegen-ignore
generated
vendored
Executable file
1
vendor/github.com/grpc-ecosystem/grpc-gateway/examples/clients/unannotatedecho/.swagger-codegen-ignore
generated
vendored
Executable file
@ -0,0 +1 @@
|
||||
.gitignore
|
16
vendor/github.com/grpc-ecosystem/grpc-gateway/examples/clients/unannotatedecho/BUILD.bazel
generated
vendored
Executable file
16
vendor/github.com/grpc-ecosystem/grpc-gateway/examples/clients/unannotatedecho/BUILD.bazel
generated
vendored
Executable file
@ -0,0 +1,16 @@
|
||||
load("@io_bazel_rules_go//go:def.bzl", "go_library")
|
||||
|
||||
package(default_visibility = ["//visibility:public"])
|
||||
|
||||
go_library(
|
||||
name = "go_default_library",
|
||||
srcs = [
|
||||
"api_client.go",
|
||||
"api_response.go",
|
||||
"configuration.go",
|
||||
"examplepb_unannotated_simple_message.go",
|
||||
"unannotated_echo_service_api.go",
|
||||
],
|
||||
importpath = "github.com/grpc-ecosystem/grpc-gateway/examples/clients/unannotatedecho",
|
||||
deps = ["@com_github_go_resty_resty//:go_default_library"],
|
||||
)
|
164
vendor/github.com/grpc-ecosystem/grpc-gateway/examples/clients/unannotatedecho/api_client.go
generated
vendored
Executable file
164
vendor/github.com/grpc-ecosystem/grpc-gateway/examples/clients/unannotatedecho/api_client.go
generated
vendored
Executable file
@ -0,0 +1,164 @@
|
||||
/*
|
||||
* examples/proto/examplepb/unannotated_echo_service.proto
|
||||
*
|
||||
* Unannotated Echo Service Similar to echo_service.proto but without annotations. See unannotated_echo_service.yaml for the equivalent of the annotations in gRPC API configuration format. Echo Service API consists of a single service which returns a message.
|
||||
*
|
||||
* OpenAPI spec version: version not set
|
||||
*
|
||||
* Generated by: https://github.com/swagger-api/swagger-codegen.git
|
||||
*/
|
||||
|
||||
package unannotatedecho
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"fmt"
|
||||
"path/filepath"
|
||||
"reflect"
|
||||
"strings"
|
||||
"net/url"
|
||||
"io/ioutil"
|
||||
"github.com/go-resty/resty"
|
||||
)
|
||||
|
||||
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
|
||||
}
|
44
vendor/github.com/grpc-ecosystem/grpc-gateway/examples/clients/unannotatedecho/api_response.go
generated
vendored
Executable file
44
vendor/github.com/grpc-ecosystem/grpc-gateway/examples/clients/unannotatedecho/api_response.go
generated
vendored
Executable file
@ -0,0 +1,44 @@
|
||||
/*
|
||||
* examples/proto/examplepb/unannotated_echo_service.proto
|
||||
*
|
||||
* Unannotated Echo Service Similar to echo_service.proto but without annotations. See unannotated_echo_service.yaml for the equivalent of the annotations in gRPC API configuration format. Echo Service API consists of a single service which returns a message.
|
||||
*
|
||||
* OpenAPI spec version: version not set
|
||||
*
|
||||
* Generated by: https://github.com/swagger-api/swagger-codegen.git
|
||||
*/
|
||||
|
||||
package unannotatedecho
|
||||
|
||||
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
|
||||
}
|
67
vendor/github.com/grpc-ecosystem/grpc-gateway/examples/clients/unannotatedecho/configuration.go
generated
vendored
Executable file
67
vendor/github.com/grpc-ecosystem/grpc-gateway/examples/clients/unannotatedecho/configuration.go
generated
vendored
Executable file
@ -0,0 +1,67 @@
|
||||
/*
|
||||
* examples/proto/examplepb/unannotated_echo_service.proto
|
||||
*
|
||||
* Unannotated Echo Service Similar to echo_service.proto but without annotations. See unannotated_echo_service.yaml for the equivalent of the annotations in gRPC API configuration format. Echo Service API consists of a single service which returns a message.
|
||||
*
|
||||
* OpenAPI spec version: version not set
|
||||
*
|
||||
* Generated by: https://github.com/swagger-api/swagger-codegen.git
|
||||
*/
|
||||
|
||||
package unannotatedecho
|
||||
|
||||
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",
|
||||
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]
|
||||
}
|
22
vendor/github.com/grpc-ecosystem/grpc-gateway/examples/clients/unannotatedecho/examplepb_unannotated_simple_message.go
generated
vendored
Executable file
22
vendor/github.com/grpc-ecosystem/grpc-gateway/examples/clients/unannotatedecho/examplepb_unannotated_simple_message.go
generated
vendored
Executable file
@ -0,0 +1,22 @@
|
||||
/*
|
||||
* examples/proto/examplepb/unannotated_echo_service.proto
|
||||
*
|
||||
* Unannotated Echo Service Similar to echo_service.proto but without annotations. See unannotated_echo_service.yaml for the equivalent of the annotations in gRPC API configuration format. Echo Service API consists of a single service which returns a message.
|
||||
*
|
||||
* OpenAPI spec version: version not set
|
||||
*
|
||||
* Generated by: https://github.com/swagger-api/swagger-codegen.git
|
||||
*/
|
||||
|
||||
package unannotatedecho
|
||||
|
||||
// UnannotatedSimpleMessage represents a simple message sent to the unannotated Echo service.
|
||||
type ExamplepbUnannotatedSimpleMessage struct {
|
||||
|
||||
// Id represents the message identifier.
|
||||
Id string `json:"id,omitempty"`
|
||||
|
||||
Num string `json:"num,omitempty"`
|
||||
|
||||
Duration string `json:"duration,omitempty"`
|
||||
}
|
290
vendor/github.com/grpc-ecosystem/grpc-gateway/examples/clients/unannotatedecho/unannotated_echo_service_api.go
generated
vendored
Executable file
290
vendor/github.com/grpc-ecosystem/grpc-gateway/examples/clients/unannotatedecho/unannotated_echo_service_api.go
generated
vendored
Executable file
@ -0,0 +1,290 @@
|
||||
/*
|
||||
* examples/proto/examplepb/unannotated_echo_service.proto
|
||||
*
|
||||
* Unannotated Echo Service Similar to echo_service.proto but without annotations. See unannotated_echo_service.yaml for the equivalent of the annotations in gRPC API configuration format. Echo Service API consists of a single service which returns a message.
|
||||
*
|
||||
* OpenAPI spec version: version not set
|
||||
*
|
||||
* Generated by: https://github.com/swagger-api/swagger-codegen.git
|
||||
*/
|
||||
|
||||
package unannotatedecho
|
||||
|
||||
import (
|
||||
"net/url"
|
||||
"strings"
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
)
|
||||
|
||||
type UnannotatedEchoServiceApi struct {
|
||||
Configuration *Configuration
|
||||
}
|
||||
|
||||
func NewUnannotatedEchoServiceApi() *UnannotatedEchoServiceApi {
|
||||
configuration := NewConfiguration()
|
||||
return &UnannotatedEchoServiceApi{
|
||||
Configuration: configuration,
|
||||
}
|
||||
}
|
||||
|
||||
func NewUnannotatedEchoServiceApiWithBasePath(basePath string) *UnannotatedEchoServiceApi {
|
||||
configuration := NewConfiguration()
|
||||
configuration.BasePath = basePath
|
||||
|
||||
return &UnannotatedEchoServiceApi{
|
||||
Configuration: configuration,
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Echo method receives a simple message and returns it.
|
||||
* The message posted as the id parameter will also be returned.
|
||||
*
|
||||
* @param id
|
||||
* @return *ExamplepbUnannotatedSimpleMessage
|
||||
*/
|
||||
func (a UnannotatedEchoServiceApi) Echo(id string) (*ExamplepbUnannotatedSimpleMessage, *APIResponse, error) {
|
||||
|
||||
var localVarHttpMethod = strings.ToUpper("Post")
|
||||
// create path and map variables
|
||||
localVarPath := a.Configuration.BasePath + "/v1/example/echo/{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{
|
||||
"application/json",
|
||||
}
|
||||
|
||||
// set Accept header
|
||||
localVarHttpHeaderAccept := a.Configuration.APIClient.SelectHeaderAccept(localVarHttpHeaderAccepts)
|
||||
if localVarHttpHeaderAccept != "" {
|
||||
localVarHeaderParams["Accept"] = localVarHttpHeaderAccept
|
||||
}
|
||||
var successPayload = new(ExamplepbUnannotatedSimpleMessage)
|
||||
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: "Echo", 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
|
||||
}
|
||||
|
||||
/**
|
||||
* Echo method receives a simple message and returns it.
|
||||
* The message posted as the id parameter will also be returned.
|
||||
*
|
||||
* @param id
|
||||
* @param num
|
||||
* @param duration
|
||||
* @return *ExamplepbUnannotatedSimpleMessage
|
||||
*/
|
||||
func (a UnannotatedEchoServiceApi) Echo2(id string, num string, duration string) (*ExamplepbUnannotatedSimpleMessage, *APIResponse, error) {
|
||||
|
||||
var localVarHttpMethod = strings.ToUpper("Get")
|
||||
// create path and map variables
|
||||
localVarPath := a.Configuration.BasePath + "/v1/example/echo/{id}/{num}"
|
||||
localVarPath = strings.Replace(localVarPath, "{"+"id"+"}", fmt.Sprintf("%v", id), -1)
|
||||
localVarPath = strings.Replace(localVarPath, "{"+"num"+"}", fmt.Sprintf("%v", num), -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]
|
||||
}
|
||||
localVarQueryParams.Add("duration", a.Configuration.APIClient.ParameterToString(duration, ""))
|
||||
|
||||
// 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{
|
||||
"application/json",
|
||||
}
|
||||
|
||||
// set Accept header
|
||||
localVarHttpHeaderAccept := a.Configuration.APIClient.SelectHeaderAccept(localVarHttpHeaderAccepts)
|
||||
if localVarHttpHeaderAccept != "" {
|
||||
localVarHeaderParams["Accept"] = localVarHttpHeaderAccept
|
||||
}
|
||||
var successPayload = new(ExamplepbUnannotatedSimpleMessage)
|
||||
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: "Echo2", 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
|
||||
}
|
||||
|
||||
/**
|
||||
* EchoBody method receives a simple message and returns it.
|
||||
*
|
||||
* @param body
|
||||
* @return *ExamplepbUnannotatedSimpleMessage
|
||||
*/
|
||||
func (a UnannotatedEchoServiceApi) EchoBody(body ExamplepbUnannotatedSimpleMessage) (*ExamplepbUnannotatedSimpleMessage, *APIResponse, error) {
|
||||
|
||||
var localVarHttpMethod = strings.ToUpper("Post")
|
||||
// create path and map variables
|
||||
localVarPath := a.Configuration.BasePath + "/v1/example/echo_body"
|
||||
|
||||
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{
|
||||
"application/json",
|
||||
}
|
||||
|
||||
// set Accept header
|
||||
localVarHttpHeaderAccept := a.Configuration.APIClient.SelectHeaderAccept(localVarHttpHeaderAccepts)
|
||||
if localVarHttpHeaderAccept != "" {
|
||||
localVarHeaderParams["Accept"] = localVarHttpHeaderAccept
|
||||
}
|
||||
// body params
|
||||
localVarPostBody = &body
|
||||
var successPayload = new(ExamplepbUnannotatedSimpleMessage)
|
||||
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: "EchoBody", 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
|
||||
}
|
||||
|
||||
/**
|
||||
* EchoDelete method receives a simple message and returns it.
|
||||
*
|
||||
* @param id Id represents the message identifier.
|
||||
* @param num
|
||||
* @param duration
|
||||
* @return *ExamplepbUnannotatedSimpleMessage
|
||||
*/
|
||||
func (a UnannotatedEchoServiceApi) EchoDelete(id string, num string, duration string) (*ExamplepbUnannotatedSimpleMessage, *APIResponse, error) {
|
||||
|
||||
var localVarHttpMethod = strings.ToUpper("Delete")
|
||||
// create path and map variables
|
||||
localVarPath := a.Configuration.BasePath + "/v1/example/echo_delete"
|
||||
|
||||
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]
|
||||
}
|
||||
localVarQueryParams.Add("id", a.Configuration.APIClient.ParameterToString(id, ""))
|
||||
localVarQueryParams.Add("num", a.Configuration.APIClient.ParameterToString(num, ""))
|
||||
localVarQueryParams.Add("duration", a.Configuration.APIClient.ParameterToString(duration, ""))
|
||||
|
||||
// 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{
|
||||
"application/json",
|
||||
}
|
||||
|
||||
// set Accept header
|
||||
localVarHttpHeaderAccept := a.Configuration.APIClient.SelectHeaderAccept(localVarHttpHeaderAccepts)
|
||||
if localVarHttpHeaderAccept != "" {
|
||||
localVarHeaderParams["Accept"] = localVarHttpHeaderAccept
|
||||
}
|
||||
var successPayload = new(ExamplepbUnannotatedSimpleMessage)
|
||||
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: "EchoDelete", 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
|
||||
}
|
||||
|
18
vendor/github.com/grpc-ecosystem/grpc-gateway/examples/cmd/example-gateway-server/BUILD.bazel
generated
vendored
Executable file
18
vendor/github.com/grpc-ecosystem/grpc-gateway/examples/cmd/example-gateway-server/BUILD.bazel
generated
vendored
Executable file
@ -0,0 +1,18 @@
|
||||
load("@io_bazel_rules_go//go:def.bzl", "go_binary", "go_library")
|
||||
|
||||
go_library(
|
||||
name = "go_default_library",
|
||||
srcs = ["main.go"],
|
||||
importpath = "github.com/grpc-ecosystem/grpc-gateway/examples/cmd/example-gateway-server",
|
||||
visibility = ["//visibility:private"],
|
||||
deps = [
|
||||
"//examples/gateway:go_default_library",
|
||||
"@com_github_golang_glog//:go_default_library",
|
||||
],
|
||||
)
|
||||
|
||||
go_binary(
|
||||
name = "example-gateway-server",
|
||||
embed = [":go_default_library"],
|
||||
visibility = ["//visibility:public"],
|
||||
)
|
37
vendor/github.com/grpc-ecosystem/grpc-gateway/examples/cmd/example-gateway-server/main.go
generated
vendored
Executable file
37
vendor/github.com/grpc-ecosystem/grpc-gateway/examples/cmd/example-gateway-server/main.go
generated
vendored
Executable file
@ -0,0 +1,37 @@
|
||||
/*
|
||||
Command example-gateway-server is an example reverse-proxy implementation
|
||||
whose HTTP handler is generated by grpc-gateway.
|
||||
*/
|
||||
package main
|
||||
|
||||
import (
|
||||
"context"
|
||||
"flag"
|
||||
|
||||
"github.com/golang/glog"
|
||||
"github.com/grpc-ecosystem/grpc-gateway/examples/gateway"
|
||||
)
|
||||
|
||||
var (
|
||||
endpoint = flag.String("endpoint", "localhost:9090", "endpoint of the gRPC service")
|
||||
network = flag.String("network", "tcp", `one of "tcp" or "unix". Must be consistent to -endpoint`)
|
||||
swaggerDir = flag.String("swagger_dir", "examples/proto/examplepb", "path to the directory which contains swagger definitions")
|
||||
)
|
||||
|
||||
func main() {
|
||||
flag.Parse()
|
||||
defer glog.Flush()
|
||||
|
||||
ctx := context.Background()
|
||||
opts := gateway.Options{
|
||||
Addr: ":8080",
|
||||
GRPCServer: gateway.Endpoint{
|
||||
Network: *network,
|
||||
Addr: *endpoint,
|
||||
},
|
||||
SwaggerDir: *swaggerDir,
|
||||
}
|
||||
if err := gateway.Run(ctx, opts); err != nil {
|
||||
glog.Fatal(err)
|
||||
}
|
||||
}
|
19
vendor/github.com/grpc-ecosystem/grpc-gateway/examples/cmd/example-grpc-server/BUILD.bazel
generated
vendored
Executable file
19
vendor/github.com/grpc-ecosystem/grpc-gateway/examples/cmd/example-grpc-server/BUILD.bazel
generated
vendored
Executable file
@ -0,0 +1,19 @@
|
||||
load("@io_bazel_rules_go//go:def.bzl", "go_binary", "go_library")
|
||||
|
||||
package(default_visibility = ["//visibility:private"])
|
||||
|
||||
go_library(
|
||||
name = "go_default_library",
|
||||
srcs = ["main.go"],
|
||||
importpath = "github.com/grpc-ecosystem/grpc-gateway/examples/cmd/example-grpc-server",
|
||||
deps = [
|
||||
"//examples/server:go_default_library",
|
||||
"@com_github_golang_glog//:go_default_library",
|
||||
],
|
||||
)
|
||||
|
||||
go_binary(
|
||||
name = "example-server",
|
||||
embed = [":go_default_library"],
|
||||
visibility = ["//visibility:public"],
|
||||
)
|
28
vendor/github.com/grpc-ecosystem/grpc-gateway/examples/cmd/example-grpc-server/main.go
generated
vendored
Executable file
28
vendor/github.com/grpc-ecosystem/grpc-gateway/examples/cmd/example-grpc-server/main.go
generated
vendored
Executable file
@ -0,0 +1,28 @@
|
||||
/*
|
||||
Command example-grpc-server is an example grpc server
|
||||
to be called by example-gateway-server.
|
||||
*/
|
||||
package main
|
||||
|
||||
import (
|
||||
"context"
|
||||
"flag"
|
||||
|
||||
"github.com/golang/glog"
|
||||
"github.com/grpc-ecosystem/grpc-gateway/examples/server"
|
||||
)
|
||||
|
||||
var (
|
||||
addr = flag.String("addr", ":9090", "endpoint of the gRPC service")
|
||||
network = flag.String("network", "tcp", "a valid network type which is consistent to -addr")
|
||||
)
|
||||
|
||||
func main() {
|
||||
flag.Parse()
|
||||
defer glog.Flush()
|
||||
|
||||
ctx := context.Background()
|
||||
if err := server.Run(ctx, *network, *addr); err != nil {
|
||||
glog.Fatal(err)
|
||||
}
|
||||
}
|
20
vendor/github.com/grpc-ecosystem/grpc-gateway/examples/gateway/BUILD.bazel
generated
vendored
Executable file
20
vendor/github.com/grpc-ecosystem/grpc-gateway/examples/gateway/BUILD.bazel
generated
vendored
Executable file
@ -0,0 +1,20 @@
|
||||
load("@io_bazel_rules_go//go:def.bzl", "go_library")
|
||||
|
||||
go_library(
|
||||
name = "go_default_library",
|
||||
srcs = [
|
||||
"doc.go",
|
||||
"gateway.go",
|
||||
"handlers.go",
|
||||
"main.go",
|
||||
],
|
||||
importpath = "github.com/grpc-ecosystem/grpc-gateway/examples/gateway",
|
||||
visibility = ["//visibility:public"],
|
||||
deps = [
|
||||
"//examples/proto/examplepb:go_default_library",
|
||||
"//runtime:go_default_library",
|
||||
"@com_github_golang_glog//:go_default_library",
|
||||
"@org_golang_google_grpc//:go_default_library",
|
||||
"@org_golang_google_grpc//connectivity:go_default_library",
|
||||
],
|
||||
)
|
2
vendor/github.com/grpc-ecosystem/grpc-gateway/examples/gateway/doc.go
generated
vendored
Executable file
2
vendor/github.com/grpc-ecosystem/grpc-gateway/examples/gateway/doc.go
generated
vendored
Executable file
@ -0,0 +1,2 @@
|
||||
// Package gateway is an example of grpc-gateway server
|
||||
package gateway
|
57
vendor/github.com/grpc-ecosystem/grpc-gateway/examples/gateway/gateway.go
generated
vendored
Executable file
57
vendor/github.com/grpc-ecosystem/grpc-gateway/examples/gateway/gateway.go
generated
vendored
Executable file
@ -0,0 +1,57 @@
|
||||
package gateway
|
||||
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
"net"
|
||||
"net/http"
|
||||
"time"
|
||||
|
||||
"github.com/grpc-ecosystem/grpc-gateway/examples/proto/examplepb"
|
||||
gwruntime "github.com/grpc-ecosystem/grpc-gateway/runtime"
|
||||
"google.golang.org/grpc"
|
||||
)
|
||||
|
||||
// newGateway returns a new gateway server which translates HTTP into gRPC.
|
||||
func newGateway(ctx context.Context, conn *grpc.ClientConn, opts []gwruntime.ServeMuxOption) (http.Handler, error) {
|
||||
|
||||
mux := gwruntime.NewServeMux(opts...)
|
||||
|
||||
for _, f := range []func(context.Context, *gwruntime.ServeMux, *grpc.ClientConn) error{
|
||||
examplepb.RegisterEchoServiceHandler,
|
||||
examplepb.RegisterStreamServiceHandler,
|
||||
examplepb.RegisterABitOfEverythingServiceHandler,
|
||||
examplepb.RegisterFlowCombinationHandler,
|
||||
} {
|
||||
if err := f(ctx, mux, conn); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
}
|
||||
return mux, nil
|
||||
}
|
||||
|
||||
func dial(ctx context.Context, network, addr string) (*grpc.ClientConn, error) {
|
||||
switch network {
|
||||
case "tcp":
|
||||
return dialTCP(ctx, addr)
|
||||
case "unix":
|
||||
return dialUnix(ctx, addr)
|
||||
default:
|
||||
return nil, fmt.Errorf("unsupported network type %q", network)
|
||||
}
|
||||
}
|
||||
|
||||
// dialTCP creates a client connection via TCP.
|
||||
// "addr" must be a valid TCP address with a port number.
|
||||
func dialTCP(ctx context.Context, addr string) (*grpc.ClientConn, error) {
|
||||
return grpc.DialContext(ctx, addr, grpc.WithInsecure())
|
||||
}
|
||||
|
||||
// dialUnix creates a client connection via a unix domain socket.
|
||||
// "addr" must be a valid path to the socket.
|
||||
func dialUnix(ctx context.Context, addr string) (*grpc.ClientConn, error) {
|
||||
d := func(addr string, timeout time.Duration) (net.Conn, error) {
|
||||
return net.DialTimeout("unix", addr, timeout)
|
||||
}
|
||||
return grpc.DialContext(ctx, addr, grpc.WithInsecure(), grpc.WithDialer(d))
|
||||
}
|
61
vendor/github.com/grpc-ecosystem/grpc-gateway/examples/gateway/handlers.go
generated
vendored
Executable file
61
vendor/github.com/grpc-ecosystem/grpc-gateway/examples/gateway/handlers.go
generated
vendored
Executable file
@ -0,0 +1,61 @@
|
||||
package gateway
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"net/http"
|
||||
"path"
|
||||
"strings"
|
||||
|
||||
"github.com/golang/glog"
|
||||
"google.golang.org/grpc"
|
||||
"google.golang.org/grpc/connectivity"
|
||||
)
|
||||
|
||||
func swaggerServer(dir string) http.HandlerFunc {
|
||||
return func(w http.ResponseWriter, r *http.Request) {
|
||||
if !strings.HasSuffix(r.URL.Path, ".swagger.json") {
|
||||
glog.Errorf("Not Found: %s", r.URL.Path)
|
||||
http.NotFound(w, r)
|
||||
return
|
||||
}
|
||||
|
||||
glog.Infof("Serving %s", r.URL.Path)
|
||||
p := strings.TrimPrefix(r.URL.Path, "/swagger/")
|
||||
p = path.Join(dir, p)
|
||||
http.ServeFile(w, r, p)
|
||||
}
|
||||
}
|
||||
|
||||
// allowCORS allows Cross Origin Resoruce Sharing from any origin.
|
||||
// Don't do this without consideration in production systems.
|
||||
func allowCORS(h http.Handler) http.Handler {
|
||||
return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
|
||||
if origin := r.Header.Get("Origin"); origin != "" {
|
||||
w.Header().Set("Access-Control-Allow-Origin", origin)
|
||||
if r.Method == "OPTIONS" && r.Header.Get("Access-Control-Request-Method") != "" {
|
||||
preflightHandler(w, r)
|
||||
return
|
||||
}
|
||||
}
|
||||
h.ServeHTTP(w, r)
|
||||
})
|
||||
}
|
||||
|
||||
func preflightHandler(w http.ResponseWriter, r *http.Request) {
|
||||
headers := []string{"Content-Type", "Accept"}
|
||||
w.Header().Set("Access-Control-Allow-Headers", strings.Join(headers, ","))
|
||||
methods := []string{"GET", "HEAD", "POST", "PUT", "DELETE"}
|
||||
w.Header().Set("Access-Control-Allow-Methods", strings.Join(methods, ","))
|
||||
glog.Infof("preflight request for %s", r.URL.Path)
|
||||
}
|
||||
|
||||
func healthzServer(conn *grpc.ClientConn) http.HandlerFunc {
|
||||
return func(w http.ResponseWriter, r *http.Request) {
|
||||
w.Header().Set("Content-Type", "text/plain")
|
||||
if s := conn.GetState(); s != connectivity.Ready {
|
||||
http.Error(w, fmt.Sprintf("grpc server is %s", s), http.StatusBadGateway)
|
||||
return
|
||||
}
|
||||
fmt.Fprintln(w, "ok")
|
||||
}
|
||||
}
|
77
vendor/github.com/grpc-ecosystem/grpc-gateway/examples/gateway/main.go
generated
vendored
Executable file
77
vendor/github.com/grpc-ecosystem/grpc-gateway/examples/gateway/main.go
generated
vendored
Executable file
@ -0,0 +1,77 @@
|
||||
package gateway
|
||||
|
||||
import (
|
||||
"context"
|
||||
"net/http"
|
||||
|
||||
"github.com/golang/glog"
|
||||
gwruntime "github.com/grpc-ecosystem/grpc-gateway/runtime"
|
||||
)
|
||||
|
||||
// Endpoint describes a gRPC endpoint
|
||||
type Endpoint struct {
|
||||
Network, Addr string
|
||||
}
|
||||
|
||||
// Options is a set of options to be passed to Run
|
||||
type Options struct {
|
||||
// Addr is the address to listen
|
||||
Addr string
|
||||
|
||||
// GRPCServer defines an endpoint of a gRPC service
|
||||
GRPCServer Endpoint
|
||||
|
||||
// SwaggerDir is a path to a directory from which the server
|
||||
// serves swagger specs.
|
||||
SwaggerDir string
|
||||
|
||||
// Mux is a list of options to be passed to the grpc-gateway multiplexer
|
||||
Mux []gwruntime.ServeMuxOption
|
||||
}
|
||||
|
||||
// Run starts a HTTP server and blocks while running if successful.
|
||||
// The server will be shutdown when "ctx" is canceled.
|
||||
func Run(ctx context.Context, opts Options) error {
|
||||
ctx, cancel := context.WithCancel(ctx)
|
||||
defer cancel()
|
||||
|
||||
conn, err := dial(ctx, opts.GRPCServer.Network, opts.GRPCServer.Addr)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
go func() {
|
||||
<-ctx.Done()
|
||||
if err := conn.Close(); err != nil {
|
||||
glog.Errorf("Failed to close a client connection to the gRPC server: %v", err)
|
||||
}
|
||||
}()
|
||||
|
||||
mux := http.NewServeMux()
|
||||
mux.HandleFunc("/swagger/", swaggerServer(opts.SwaggerDir))
|
||||
mux.HandleFunc("/healthz", healthzServer(conn))
|
||||
|
||||
gw, err := newGateway(ctx, conn, opts.Mux)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
mux.Handle("/", gw)
|
||||
|
||||
s := &http.Server{
|
||||
Addr: opts.Addr,
|
||||
Handler: allowCORS(mux),
|
||||
}
|
||||
go func() {
|
||||
<-ctx.Done()
|
||||
glog.Infof("Shutting down the http server")
|
||||
if err := s.Shutdown(context.Background()); err != nil {
|
||||
glog.Errorf("Failed to shutdown http server: %v", err)
|
||||
}
|
||||
}()
|
||||
|
||||
glog.Infof("Starting listening at %s", opts.Addr)
|
||||
if err := s.ListenAndServe(); err != http.ErrServerClosed {
|
||||
glog.Errorf("Failed to listen and serve: %v", err)
|
||||
return err
|
||||
}
|
||||
return nil
|
||||
}
|
27
vendor/github.com/grpc-ecosystem/grpc-gateway/examples/integration/BUILD.bazel
generated
vendored
Executable file
27
vendor/github.com/grpc-ecosystem/grpc-gateway/examples/integration/BUILD.bazel
generated
vendored
Executable file
@ -0,0 +1,27 @@
|
||||
load("@io_bazel_rules_go//go:def.bzl", "go_test")
|
||||
|
||||
go_test(
|
||||
name = "go_default_xtest",
|
||||
srcs = [
|
||||
"client_test.go",
|
||||
"integration_test.go",
|
||||
"main_test.go",
|
||||
"proto_error_test.go",
|
||||
],
|
||||
deps = [
|
||||
"//examples/clients/abe:go_default_library",
|
||||
"//examples/clients/echo:go_default_library",
|
||||
"//examples/clients/unannotatedecho:go_default_library",
|
||||
"//examples/gateway:go_default_library",
|
||||
"//examples/proto/examplepb:go_default_library",
|
||||
"//examples/proto/sub:go_default_library",
|
||||
"//examples/server:go_default_library",
|
||||
"//runtime:go_default_library",
|
||||
"@com_github_golang_glog//:go_default_library",
|
||||
"@com_github_golang_protobuf//jsonpb:go_default_library",
|
||||
"@com_github_golang_protobuf//proto:go_default_library",
|
||||
"@com_github_golang_protobuf//ptypes/empty:go_default_library",
|
||||
"@org_golang_google_genproto//googleapis/rpc/status:go_default_library",
|
||||
"@org_golang_google_grpc//codes:go_default_library",
|
||||
],
|
||||
)
|
196
vendor/github.com/grpc-ecosystem/grpc-gateway/examples/integration/client_test.go
generated
vendored
Executable file
196
vendor/github.com/grpc-ecosystem/grpc-gateway/examples/integration/client_test.go
generated
vendored
Executable file
@ -0,0 +1,196 @@
|
||||
package integration_test
|
||||
|
||||
import (
|
||||
"reflect"
|
||||
"testing"
|
||||
|
||||
"github.com/grpc-ecosystem/grpc-gateway/examples/clients/abe"
|
||||
"github.com/grpc-ecosystem/grpc-gateway/examples/clients/echo"
|
||||
"github.com/grpc-ecosystem/grpc-gateway/examples/clients/unannotatedecho"
|
||||
)
|
||||
|
||||
func TestClientIntegration(t *testing.T) {
|
||||
}
|
||||
|
||||
func TestEchoClient(t *testing.T) {
|
||||
if testing.Short() {
|
||||
t.Skip()
|
||||
return
|
||||
}
|
||||
|
||||
cl := echo.NewEchoServiceApiWithBasePath("http://localhost:8080")
|
||||
resp, _, err := cl.Echo("foo")
|
||||
if err != nil {
|
||||
t.Errorf(`cl.Echo("foo") failed with %v; want success`, err)
|
||||
}
|
||||
if got, want := resp.Id, "foo"; got != want {
|
||||
t.Errorf("resp.Id = %q; want %q", got, want)
|
||||
}
|
||||
}
|
||||
|
||||
func TestEchoBodyClient(t *testing.T) {
|
||||
if testing.Short() {
|
||||
t.Skip()
|
||||
return
|
||||
}
|
||||
|
||||
cl := echo.NewEchoServiceApiWithBasePath("http://localhost:8080")
|
||||
req := echo.ExamplepbSimpleMessage{Id: "foo"}
|
||||
resp, _, err := cl.EchoBody(req)
|
||||
if err != nil {
|
||||
t.Errorf("cl.EchoBody(%#v) failed with %v; want success", req, err)
|
||||
}
|
||||
if got, want := resp.Id, "foo"; got != want {
|
||||
t.Errorf("resp.Id = %q; want %q", got, want)
|
||||
}
|
||||
}
|
||||
|
||||
func TestAbitOfEverythingClient(t *testing.T) {
|
||||
if testing.Short() {
|
||||
t.Skip()
|
||||
return
|
||||
}
|
||||
|
||||
cl := abe.NewABitOfEverythingServiceApiWithBasePath("http://localhost:8080")
|
||||
testABEClientCreate(t, cl)
|
||||
testABEClientCreateBody(t, cl)
|
||||
}
|
||||
|
||||
func testABEClientCreate(t *testing.T, cl *abe.ABitOfEverythingServiceApi) {
|
||||
want := &abe.ExamplepbABitOfEverything{
|
||||
FloatValue: 1.5,
|
||||
DoubleValue: 2.5,
|
||||
Int64Value: "4294967296",
|
||||
Uint64Value: "9223372036854775807",
|
||||
Int32Value: -2147483648,
|
||||
Fixed64Value: "9223372036854775807",
|
||||
Fixed32Value: 4294967295,
|
||||
BoolValue: true,
|
||||
StringValue: "strprefix/foo",
|
||||
Uint32Value: 4294967295,
|
||||
Sfixed32Value: 2147483647,
|
||||
Sfixed64Value: "-4611686018427387904",
|
||||
Sint32Value: 2147483647,
|
||||
Sint64Value: "4611686018427387903",
|
||||
NonConventionalNameValue: "camelCase",
|
||||
}
|
||||
resp, _, err := cl.Create(
|
||||
want.FloatValue,
|
||||
want.DoubleValue,
|
||||
want.Int64Value,
|
||||
want.Uint64Value,
|
||||
want.Int32Value,
|
||||
want.Fixed64Value,
|
||||
want.Fixed32Value,
|
||||
want.BoolValue,
|
||||
want.StringValue,
|
||||
want.Uint32Value,
|
||||
want.Sfixed32Value,
|
||||
want.Sfixed64Value,
|
||||
want.Sint32Value,
|
||||
want.Sint64Value,
|
||||
want.NonConventionalNameValue,
|
||||
)
|
||||
if err != nil {
|
||||
t.Errorf("cl.Create(%#v) failed with %v; want success", want, err)
|
||||
}
|
||||
if resp.Uuid == "" {
|
||||
t.Errorf("resp.Uuid is empty; want not empty")
|
||||
}
|
||||
resp.Uuid = ""
|
||||
if got := resp; !reflect.DeepEqual(got, want) {
|
||||
t.Errorf("resp = %#v; want %#v", got, want)
|
||||
}
|
||||
}
|
||||
|
||||
func testABEClientCreateBody(t *testing.T, cl *abe.ABitOfEverythingServiceApi) {
|
||||
t.Log("TODO: support enum")
|
||||
return
|
||||
|
||||
want := abe.ExamplepbABitOfEverything{
|
||||
FloatValue: 1.5,
|
||||
DoubleValue: 2.5,
|
||||
Int64Value: "4294967296",
|
||||
Uint64Value: "9223372036854775807",
|
||||
Int32Value: -2147483648,
|
||||
Fixed64Value: "9223372036854775807",
|
||||
Fixed32Value: 4294967295,
|
||||
BoolValue: true,
|
||||
StringValue: "strprefix/foo",
|
||||
Uint32Value: 4294967295,
|
||||
Sfixed32Value: 2147483647,
|
||||
Sfixed64Value: "-4611686018427387904",
|
||||
Sint32Value: 2147483647,
|
||||
Sint64Value: "4611686018427387903",
|
||||
NonConventionalNameValue: "camelCase",
|
||||
|
||||
Nested: []abe.ABitOfEverythingNested{
|
||||
{
|
||||
Name: "bar",
|
||||
Amount: 10,
|
||||
},
|
||||
{
|
||||
Name: "baz",
|
||||
Amount: 20,
|
||||
},
|
||||
},
|
||||
RepeatedStringValue: []string{"a", "b", "c"},
|
||||
OneofString: "x",
|
||||
MapValue: map[string]abe.ExamplepbNumericEnum{
|
||||
// "a": abe.ExamplepbNumericEnum_ONE,
|
||||
// "b": abe.ExamplepbNumericEnum_ZERO,
|
||||
},
|
||||
MappedStringValue: map[string]string{
|
||||
"a": "x",
|
||||
"b": "y",
|
||||
},
|
||||
MappedNestedValue: map[string]abe.ABitOfEverythingNested{
|
||||
"a": {Name: "x", Amount: 1},
|
||||
"b": {Name: "y", Amount: 2},
|
||||
},
|
||||
}
|
||||
resp, _, err := cl.CreateBody(want)
|
||||
if err != nil {
|
||||
t.Errorf("cl.CreateBody(%#v) failed with %v; want success", want, err)
|
||||
}
|
||||
if resp.Uuid == "" {
|
||||
t.Errorf("resp.Uuid is empty; want not empty")
|
||||
}
|
||||
resp.Uuid = ""
|
||||
if got := resp; !reflect.DeepEqual(got, want) {
|
||||
t.Errorf("resp = %#v; want %#v", got, want)
|
||||
}
|
||||
}
|
||||
|
||||
func TestUnannotatedEchoClient(t *testing.T) {
|
||||
if testing.Short() {
|
||||
t.Skip()
|
||||
return
|
||||
}
|
||||
|
||||
cl := unannotatedecho.NewUnannotatedEchoServiceApiWithBasePath("http://localhost:8080")
|
||||
resp, _, err := cl.Echo("foo")
|
||||
if err != nil {
|
||||
t.Errorf(`cl.Echo("foo") failed with %v; want success`, err)
|
||||
}
|
||||
if got, want := resp.Id, "foo"; got != want {
|
||||
t.Errorf("resp.Id = %q; want %q", got, want)
|
||||
}
|
||||
}
|
||||
|
||||
func TestUnannotatedEchoBodyClient(t *testing.T) {
|
||||
if testing.Short() {
|
||||
t.Skip()
|
||||
return
|
||||
}
|
||||
|
||||
cl := unannotatedecho.NewUnannotatedEchoServiceApiWithBasePath("http://localhost:8080")
|
||||
req := unannotatedecho.ExamplepbUnannotatedSimpleMessage{Id: "foo"}
|
||||
resp, _, err := cl.EchoBody(req)
|
||||
if err != nil {
|
||||
t.Errorf("cl.EchoBody(%#v) failed with %v; want success", req, err)
|
||||
}
|
||||
if got, want := resp.Id, "foo"; got != want {
|
||||
t.Errorf("resp.Id = %q; want %q", got, want)
|
||||
}
|
||||
}
|
982
vendor/github.com/grpc-ecosystem/grpc-gateway/examples/integration/integration_test.go
generated
vendored
Executable file
982
vendor/github.com/grpc-ecosystem/grpc-gateway/examples/integration/integration_test.go
generated
vendored
Executable file
@ -0,0 +1,982 @@
|
||||
package integration_test
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"context"
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
"io"
|
||||
"io/ioutil"
|
||||
"net/http"
|
||||
"reflect"
|
||||
"strconv"
|
||||
"strings"
|
||||
"sync"
|
||||
"testing"
|
||||
|
||||
"github.com/golang/protobuf/jsonpb"
|
||||
"github.com/golang/protobuf/proto"
|
||||
"github.com/golang/protobuf/ptypes/empty"
|
||||
gw "github.com/grpc-ecosystem/grpc-gateway/examples/proto/examplepb"
|
||||
sub "github.com/grpc-ecosystem/grpc-gateway/examples/proto/sub"
|
||||
"github.com/grpc-ecosystem/grpc-gateway/runtime"
|
||||
"google.golang.org/grpc/codes"
|
||||
)
|
||||
|
||||
type errorBody struct {
|
||||
Error string `json:"error"`
|
||||
Code int `json:"code"`
|
||||
Details []interface{} `json:"details"`
|
||||
}
|
||||
|
||||
func TestEcho(t *testing.T) {
|
||||
if testing.Short() {
|
||||
t.Skip()
|
||||
return
|
||||
}
|
||||
|
||||
testEcho(t, 8080, "application/json")
|
||||
testEchoOneof(t, 8080, "application/json")
|
||||
testEchoOneof1(t, 8080, "application/json")
|
||||
testEchoOneof2(t, 8080, "application/json")
|
||||
testEchoBody(t, 8080)
|
||||
}
|
||||
|
||||
func TestForwardResponseOption(t *testing.T) {
|
||||
ctx := context.Background()
|
||||
ctx, cancel := context.WithCancel(ctx)
|
||||
defer cancel()
|
||||
|
||||
go func() {
|
||||
if err := runGateway(
|
||||
ctx,
|
||||
":8081",
|
||||
runtime.WithForwardResponseOption(
|
||||
func(_ context.Context, w http.ResponseWriter, _ proto.Message) error {
|
||||
w.Header().Set("Content-Type", "application/vnd.docker.plugins.v1.1+json")
|
||||
return nil
|
||||
},
|
||||
),
|
||||
); err != nil {
|
||||
t.Errorf("runGateway() failed with %v; want success", err)
|
||||
return
|
||||
}
|
||||
}()
|
||||
if err := waitForGateway(ctx, 8081); err != nil {
|
||||
t.Errorf("waitForGateway(ctx, 8081) failed with %v; want success", err)
|
||||
}
|
||||
testEcho(t, 8081, "application/vnd.docker.plugins.v1.1+json")
|
||||
}
|
||||
|
||||
func testEcho(t *testing.T, port int, contentType string) {
|
||||
url := fmt.Sprintf("http://localhost:%d/v1/example/echo/myid", port)
|
||||
resp, err := http.Post(url, "application/json", strings.NewReader("{}"))
|
||||
if err != nil {
|
||||
t.Errorf("http.Post(%q) failed with %v; want success", url, err)
|
||||
return
|
||||
}
|
||||
defer resp.Body.Close()
|
||||
buf, err := ioutil.ReadAll(resp.Body)
|
||||
if err != nil {
|
||||
t.Errorf("iotuil.ReadAll(resp.Body) failed with %v; want success", err)
|
||||
return
|
||||
}
|
||||
|
||||
if got, want := resp.StatusCode, http.StatusOK; got != want {
|
||||
t.Errorf("resp.StatusCode = %d; want %d", got, want)
|
||||
t.Logf("%s", buf)
|
||||
}
|
||||
|
||||
var msg gw.SimpleMessage
|
||||
if err := jsonpb.UnmarshalString(string(buf), &msg); err != nil {
|
||||
t.Errorf("jsonpb.UnmarshalString(%s, &msg) failed with %v; want success", buf, err)
|
||||
return
|
||||
}
|
||||
if got, want := msg.Id, "myid"; got != want {
|
||||
t.Errorf("msg.Id = %q; want %q", got, want)
|
||||
}
|
||||
|
||||
if value := resp.Header.Get("Content-Type"); value != contentType {
|
||||
t.Errorf("Content-Type was %s, wanted %s", value, contentType)
|
||||
}
|
||||
}
|
||||
|
||||
func testEchoOneof(t *testing.T, port int, contentType string) {
|
||||
url := fmt.Sprintf("http://localhost:%d/v1/example/echo/myid/10/golang", port)
|
||||
resp, err := http.Get(url)
|
||||
if err != nil {
|
||||
t.Errorf("http.Get(%q) failed with %v; want success", url, err)
|
||||
return
|
||||
}
|
||||
defer resp.Body.Close()
|
||||
buf, err := ioutil.ReadAll(resp.Body)
|
||||
if err != nil {
|
||||
t.Errorf("iotuil.ReadAll(resp.Body) failed with %v; want success", err)
|
||||
return
|
||||
}
|
||||
|
||||
if got, want := resp.StatusCode, http.StatusOK; got != want {
|
||||
t.Errorf("resp.StatusCode = %d; want %d", got, want)
|
||||
t.Logf("%s", buf)
|
||||
}
|
||||
|
||||
var msg gw.SimpleMessage
|
||||
if err := jsonpb.UnmarshalString(string(buf), &msg); err != nil {
|
||||
t.Errorf("jsonpb.UnmarshalString(%s, &msg) failed with %v; want success", buf, err)
|
||||
return
|
||||
}
|
||||
if got, want := msg.GetLang(), "golang"; got != want {
|
||||
t.Errorf("msg.GetLang() = %q; want %q", got, want)
|
||||
}
|
||||
|
||||
if value := resp.Header.Get("Content-Type"); value != contentType {
|
||||
t.Errorf("Content-Type was %s, wanted %s", value, contentType)
|
||||
}
|
||||
}
|
||||
|
||||
func testEchoOneof1(t *testing.T, port int, contentType string) {
|
||||
url := fmt.Sprintf("http://localhost:%d/v1/example/echo1/myid/10/golang", port)
|
||||
resp, err := http.Get(url)
|
||||
if err != nil {
|
||||
t.Errorf("http.Get(%q) failed with %v; want success", url, err)
|
||||
return
|
||||
}
|
||||
defer resp.Body.Close()
|
||||
buf, err := ioutil.ReadAll(resp.Body)
|
||||
if err != nil {
|
||||
t.Errorf("iotuil.ReadAll(resp.Body) failed with %v; want success", err)
|
||||
return
|
||||
}
|
||||
|
||||
if got, want := resp.StatusCode, http.StatusOK; got != want {
|
||||
t.Errorf("resp.StatusCode = %d; want %d", got, want)
|
||||
t.Logf("%s", buf)
|
||||
}
|
||||
|
||||
var msg gw.SimpleMessage
|
||||
if err := jsonpb.UnmarshalString(string(buf), &msg); err != nil {
|
||||
t.Errorf("jsonpb.UnmarshalString(%s, &msg) failed with %v; want success", buf, err)
|
||||
return
|
||||
}
|
||||
if got, want := msg.GetStatus().GetNote(), "golang"; got != want {
|
||||
t.Errorf("msg.GetStatus().GetNote() = %q; want %q", got, want)
|
||||
}
|
||||
|
||||
if value := resp.Header.Get("Content-Type"); value != contentType {
|
||||
t.Errorf("Content-Type was %s, wanted %s", value, contentType)
|
||||
}
|
||||
}
|
||||
|
||||
func testEchoOneof2(t *testing.T, port int, contentType string) {
|
||||
url := fmt.Sprintf("http://localhost:%d/v1/example/echo2/golang", port)
|
||||
resp, err := http.Get(url)
|
||||
if err != nil {
|
||||
t.Errorf("http.Get(%q) failed with %v; want success", url, err)
|
||||
return
|
||||
}
|
||||
defer resp.Body.Close()
|
||||
buf, err := ioutil.ReadAll(resp.Body)
|
||||
if err != nil {
|
||||
t.Errorf("iotuil.ReadAll(resp.Body) failed with %v; want success", err)
|
||||
return
|
||||
}
|
||||
|
||||
if got, want := resp.StatusCode, http.StatusOK; got != want {
|
||||
t.Errorf("resp.StatusCode = %d; want %d", got, want)
|
||||
t.Logf("%s", buf)
|
||||
}
|
||||
|
||||
var msg gw.SimpleMessage
|
||||
if err := jsonpb.UnmarshalString(string(buf), &msg); err != nil {
|
||||
t.Errorf("jsonpb.UnmarshalString(%s, &msg) failed with %v; want success", buf, err)
|
||||
return
|
||||
}
|
||||
if got, want := msg.GetNo().GetNote(), "golang"; got != want {
|
||||
t.Errorf("msg.GetNo().GetNote() = %q; want %q", got, want)
|
||||
}
|
||||
|
||||
if value := resp.Header.Get("Content-Type"); value != contentType {
|
||||
t.Errorf("Content-Type was %s, wanted %s", value, contentType)
|
||||
}
|
||||
}
|
||||
|
||||
func testEchoBody(t *testing.T, port int) {
|
||||
sent := gw.SimpleMessage{Id: "example"}
|
||||
var m jsonpb.Marshaler
|
||||
payload, err := m.MarshalToString(&sent)
|
||||
if err != nil {
|
||||
t.Fatalf("m.MarshalToString(%#v) failed with %v; want success", payload, err)
|
||||
}
|
||||
|
||||
url := fmt.Sprintf("http://localhost:%d/v1/example/echo_body", port)
|
||||
resp, err := http.Post(url, "", strings.NewReader(payload))
|
||||
if err != nil {
|
||||
t.Errorf("http.Post(%q) failed with %v; want success", url, err)
|
||||
return
|
||||
}
|
||||
defer resp.Body.Close()
|
||||
buf, err := ioutil.ReadAll(resp.Body)
|
||||
if err != nil {
|
||||
t.Errorf("iotuil.ReadAll(resp.Body) failed with %v; want success", err)
|
||||
return
|
||||
}
|
||||
|
||||
if got, want := resp.StatusCode, http.StatusOK; got != want {
|
||||
t.Errorf("resp.StatusCode = %d; want %d", got, want)
|
||||
t.Logf("%s", buf)
|
||||
}
|
||||
|
||||
var received gw.SimpleMessage
|
||||
if err := jsonpb.UnmarshalString(string(buf), &received); err != nil {
|
||||
t.Errorf("jsonpb.UnmarshalString(%s, &msg) failed with %v; want success", buf, err)
|
||||
return
|
||||
}
|
||||
if got, want := received, sent; !reflect.DeepEqual(got, want) {
|
||||
t.Errorf("msg.Id = %q; want %q", got, want)
|
||||
}
|
||||
|
||||
if got, want := resp.Header.Get("Grpc-Metadata-Foo"), "foo1"; got != want {
|
||||
t.Errorf("Grpc-Metadata-Foo was %q, wanted %q", got, want)
|
||||
}
|
||||
if got, want := resp.Header.Get("Grpc-Metadata-Bar"), "bar1"; got != want {
|
||||
t.Errorf("Grpc-Metadata-Bar was %q, wanted %q", got, want)
|
||||
}
|
||||
|
||||
if got, want := resp.Trailer.Get("Grpc-Trailer-Foo"), "foo2"; got != want {
|
||||
t.Errorf("Grpc-Trailer-Foo was %q, wanted %q", got, want)
|
||||
}
|
||||
if got, want := resp.Trailer.Get("Grpc-Trailer-Bar"), "bar2"; got != want {
|
||||
t.Errorf("Grpc-Trailer-Bar was %q, wanted %q", got, want)
|
||||
}
|
||||
}
|
||||
|
||||
func TestABE(t *testing.T) {
|
||||
if testing.Short() {
|
||||
t.Skip()
|
||||
return
|
||||
}
|
||||
|
||||
testABECreate(t, 8080)
|
||||
testABECreateBody(t, 8080)
|
||||
testABEBulkCreate(t, 8080)
|
||||
testABELookup(t, 8080)
|
||||
testABELookupNotFound(t, 8080)
|
||||
testABEList(t, 8080)
|
||||
testABEBulkEcho(t, 8080)
|
||||
testABEBulkEchoZeroLength(t, 8080)
|
||||
testAdditionalBindings(t, 8080)
|
||||
}
|
||||
|
||||
func testABECreate(t *testing.T, port int) {
|
||||
want := gw.ABitOfEverything{
|
||||
FloatValue: 1.5,
|
||||
DoubleValue: 2.5,
|
||||
Int64Value: 4294967296,
|
||||
Uint64Value: 9223372036854775807,
|
||||
Int32Value: -2147483648,
|
||||
Fixed64Value: 9223372036854775807,
|
||||
Fixed32Value: 4294967295,
|
||||
BoolValue: true,
|
||||
StringValue: "strprefix/foo",
|
||||
Uint32Value: 4294967295,
|
||||
Sfixed32Value: 2147483647,
|
||||
Sfixed64Value: -4611686018427387904,
|
||||
Sint32Value: 2147483647,
|
||||
Sint64Value: 4611686018427387903,
|
||||
NonConventionalNameValue: "camelCase",
|
||||
}
|
||||
url := fmt.Sprintf("http://localhost:%d/v1/example/a_bit_of_everything/%f/%f/%d/separator/%d/%d/%d/%d/%v/%s/%d/%d/%d/%d/%d/%s", port, want.FloatValue, want.DoubleValue, want.Int64Value, want.Uint64Value, want.Int32Value, want.Fixed64Value, want.Fixed32Value, want.BoolValue, want.StringValue, want.Uint32Value, want.Sfixed32Value, want.Sfixed64Value, want.Sint32Value, want.Sint64Value, want.NonConventionalNameValue)
|
||||
|
||||
resp, err := http.Post(url, "application/json", strings.NewReader("{}"))
|
||||
if err != nil {
|
||||
t.Errorf("http.Post(%q) failed with %v; want success", url, err)
|
||||
return
|
||||
}
|
||||
defer resp.Body.Close()
|
||||
buf, err := ioutil.ReadAll(resp.Body)
|
||||
if err != nil {
|
||||
t.Errorf("iotuil.ReadAll(resp.Body) failed with %v; want success", err)
|
||||
return
|
||||
}
|
||||
|
||||
if got, want := resp.StatusCode, http.StatusOK; got != want {
|
||||
t.Errorf("resp.StatusCode = %d; want %d", got, want)
|
||||
t.Logf("%s", buf)
|
||||
}
|
||||
|
||||
var msg gw.ABitOfEverything
|
||||
if err := jsonpb.UnmarshalString(string(buf), &msg); err != nil {
|
||||
t.Errorf("jsonpb.UnmarshalString(%s, &msg) failed with %v; want success", buf, err)
|
||||
return
|
||||
}
|
||||
if msg.Uuid == "" {
|
||||
t.Error("msg.Uuid is empty; want not empty")
|
||||
}
|
||||
msg.Uuid = ""
|
||||
if got := msg; !reflect.DeepEqual(got, want) {
|
||||
t.Errorf("msg= %v; want %v", &got, &want)
|
||||
}
|
||||
}
|
||||
|
||||
func testABECreateBody(t *testing.T, port int) {
|
||||
want := gw.ABitOfEverything{
|
||||
FloatValue: 1.5,
|
||||
DoubleValue: 2.5,
|
||||
Int64Value: 4294967296,
|
||||
Uint64Value: 9223372036854775807,
|
||||
Int32Value: -2147483648,
|
||||
Fixed64Value: 9223372036854775807,
|
||||
Fixed32Value: 4294967295,
|
||||
BoolValue: true,
|
||||
StringValue: "strprefix/foo",
|
||||
Uint32Value: 4294967295,
|
||||
Sfixed32Value: 2147483647,
|
||||
Sfixed64Value: -4611686018427387904,
|
||||
Sint32Value: 2147483647,
|
||||
Sint64Value: 4611686018427387903,
|
||||
NonConventionalNameValue: "camelCase",
|
||||
|
||||
Nested: []*gw.ABitOfEverything_Nested{
|
||||
{
|
||||
Name: "bar",
|
||||
Amount: 10,
|
||||
},
|
||||
{
|
||||
Name: "baz",
|
||||
Amount: 20,
|
||||
},
|
||||
},
|
||||
RepeatedStringValue: []string{"a", "b", "c"},
|
||||
OneofValue: &gw.ABitOfEverything_OneofString{
|
||||
OneofString: "x",
|
||||
},
|
||||
MapValue: map[string]gw.NumericEnum{
|
||||
"a": gw.NumericEnum_ONE,
|
||||
"b": gw.NumericEnum_ZERO,
|
||||
},
|
||||
MappedStringValue: map[string]string{
|
||||
"a": "x",
|
||||
"b": "y",
|
||||
},
|
||||
MappedNestedValue: map[string]*gw.ABitOfEverything_Nested{
|
||||
"a": {Name: "x", Amount: 1},
|
||||
"b": {Name: "y", Amount: 2},
|
||||
},
|
||||
}
|
||||
url := fmt.Sprintf("http://localhost:%d/v1/example/a_bit_of_everything", port)
|
||||
var m jsonpb.Marshaler
|
||||
payload, err := m.MarshalToString(&want)
|
||||
if err != nil {
|
||||
t.Fatalf("m.MarshalToString(%#v) failed with %v; want success", want, err)
|
||||
}
|
||||
|
||||
resp, err := http.Post(url, "application/json", strings.NewReader(payload))
|
||||
if err != nil {
|
||||
t.Errorf("http.Post(%q) failed with %v; want success", url, err)
|
||||
return
|
||||
}
|
||||
defer resp.Body.Close()
|
||||
buf, err := ioutil.ReadAll(resp.Body)
|
||||
if err != nil {
|
||||
t.Errorf("iotuil.ReadAll(resp.Body) failed with %v; want success", err)
|
||||
return
|
||||
}
|
||||
|
||||
if got, want := resp.StatusCode, http.StatusOK; got != want {
|
||||
t.Errorf("resp.StatusCode = %d; want %d", got, want)
|
||||
t.Logf("%s", buf)
|
||||
}
|
||||
|
||||
var msg gw.ABitOfEverything
|
||||
if err := jsonpb.UnmarshalString(string(buf), &msg); err != nil {
|
||||
t.Errorf("jsonpb.UnmarshalString(%s, &msg) failed with %v; want success", buf, err)
|
||||
return
|
||||
}
|
||||
if msg.Uuid == "" {
|
||||
t.Error("msg.Uuid is empty; want not empty")
|
||||
}
|
||||
msg.Uuid = ""
|
||||
if got := msg; !reflect.DeepEqual(got, want) {
|
||||
t.Errorf("msg= %v; want %v", &got, &want)
|
||||
}
|
||||
}
|
||||
|
||||
func testABEBulkCreate(t *testing.T, port int) {
|
||||
count := 0
|
||||
r, w := io.Pipe()
|
||||
go func(w io.WriteCloser) {
|
||||
defer func() {
|
||||
if cerr := w.Close(); cerr != nil {
|
||||
t.Errorf("w.Close() failed with %v; want success", cerr)
|
||||
}
|
||||
}()
|
||||
for _, val := range []string{
|
||||
"foo", "bar", "baz", "qux", "quux",
|
||||
} {
|
||||
want := gw.ABitOfEverything{
|
||||
FloatValue: 1.5,
|
||||
DoubleValue: 2.5,
|
||||
Int64Value: 4294967296,
|
||||
Uint64Value: 9223372036854775807,
|
||||
Int32Value: -2147483648,
|
||||
Fixed64Value: 9223372036854775807,
|
||||
Fixed32Value: 4294967295,
|
||||
BoolValue: true,
|
||||
StringValue: fmt.Sprintf("strprefix/%s", val),
|
||||
Uint32Value: 4294967295,
|
||||
Sfixed32Value: 2147483647,
|
||||
Sfixed64Value: -4611686018427387904,
|
||||
Sint32Value: 2147483647,
|
||||
Sint64Value: 4611686018427387903,
|
||||
NonConventionalNameValue: "camelCase",
|
||||
|
||||
Nested: []*gw.ABitOfEverything_Nested{
|
||||
{
|
||||
Name: "hoge",
|
||||
Amount: 10,
|
||||
},
|
||||
{
|
||||
Name: "fuga",
|
||||
Amount: 20,
|
||||
},
|
||||
},
|
||||
}
|
||||
var m jsonpb.Marshaler
|
||||
if err := m.Marshal(w, &want); err != nil {
|
||||
t.Fatalf("m.Marshal(%#v, w) failed with %v; want success", want, err)
|
||||
}
|
||||
if _, err := io.WriteString(w, "\n"); err != nil {
|
||||
t.Errorf("w.Write(%q) failed with %v; want success", "\n", err)
|
||||
return
|
||||
}
|
||||
count++
|
||||
}
|
||||
}(w)
|
||||
url := fmt.Sprintf("http://localhost:%d/v1/example/a_bit_of_everything/bulk", port)
|
||||
resp, err := http.Post(url, "application/json", r)
|
||||
if err != nil {
|
||||
t.Errorf("http.Post(%q) failed with %v; want success", url, err)
|
||||
return
|
||||
}
|
||||
defer resp.Body.Close()
|
||||
buf, err := ioutil.ReadAll(resp.Body)
|
||||
if err != nil {
|
||||
t.Errorf("iotuil.ReadAll(resp.Body) failed with %v; want success", err)
|
||||
return
|
||||
}
|
||||
|
||||
if got, want := resp.StatusCode, http.StatusOK; got != want {
|
||||
t.Errorf("resp.StatusCode = %d; want %d", got, want)
|
||||
t.Logf("%s", buf)
|
||||
}
|
||||
|
||||
var msg empty.Empty
|
||||
if err := jsonpb.UnmarshalString(string(buf), &msg); err != nil {
|
||||
t.Errorf("jsonpb.UnmarshalString(%s, &msg) failed with %v; want success", buf, err)
|
||||
return
|
||||
}
|
||||
|
||||
if got, want := resp.Header.Get("Grpc-Metadata-Count"), fmt.Sprintf("%d", count); got != want {
|
||||
t.Errorf("Grpc-Metadata-Count was %q, wanted %q", got, want)
|
||||
}
|
||||
|
||||
if got, want := resp.Trailer.Get("Grpc-Trailer-Foo"), "foo2"; got != want {
|
||||
t.Errorf("Grpc-Trailer-Foo was %q, wanted %q", got, want)
|
||||
}
|
||||
if got, want := resp.Trailer.Get("Grpc-Trailer-Bar"), "bar2"; got != want {
|
||||
t.Errorf("Grpc-Trailer-Bar was %q, wanted %q", got, want)
|
||||
}
|
||||
}
|
||||
|
||||
func testABELookup(t *testing.T, port int) {
|
||||
url := fmt.Sprintf("http://localhost:%d/v1/example/a_bit_of_everything", port)
|
||||
cresp, err := http.Post(url, "application/json", strings.NewReader(`
|
||||
{"bool_value": true, "string_value": "strprefix/example"}
|
||||
`))
|
||||
if err != nil {
|
||||
t.Errorf("http.Post(%q) failed with %v; want success", url, err)
|
||||
return
|
||||
}
|
||||
defer cresp.Body.Close()
|
||||
buf, err := ioutil.ReadAll(cresp.Body)
|
||||
if err != nil {
|
||||
t.Errorf("iotuil.ReadAll(cresp.Body) failed with %v; want success", err)
|
||||
return
|
||||
}
|
||||
if got, want := cresp.StatusCode, http.StatusOK; got != want {
|
||||
t.Errorf("resp.StatusCode = %d; want %d", got, want)
|
||||
t.Logf("%s", buf)
|
||||
return
|
||||
}
|
||||
|
||||
var want gw.ABitOfEverything
|
||||
if err := jsonpb.UnmarshalString(string(buf), &want); err != nil {
|
||||
t.Errorf("jsonpb.UnmarshalString(%s, &want) failed with %v; want success", buf, err)
|
||||
return
|
||||
}
|
||||
|
||||
url = fmt.Sprintf("%s/%s", url, want.Uuid)
|
||||
resp, err := http.Get(url)
|
||||
if err != nil {
|
||||
t.Errorf("http.Get(%q) failed with %v; want success", url, err)
|
||||
return
|
||||
}
|
||||
defer resp.Body.Close()
|
||||
|
||||
buf, err = ioutil.ReadAll(resp.Body)
|
||||
if err != nil {
|
||||
t.Errorf("ioutil.ReadAll(resp.Body) failed with %v; want success", err)
|
||||
return
|
||||
}
|
||||
|
||||
var msg gw.ABitOfEverything
|
||||
if err := jsonpb.UnmarshalString(string(buf), &msg); err != nil {
|
||||
t.Errorf("jsonpb.UnmarshalString(%s, &msg) failed with %v; want success", buf, err)
|
||||
return
|
||||
}
|
||||
if got := msg; !reflect.DeepEqual(got, want) {
|
||||
t.Errorf("msg= %v; want %v", &got, &want)
|
||||
}
|
||||
|
||||
if got, want := resp.Header.Get("Grpc-Metadata-Uuid"), want.Uuid; got != want {
|
||||
t.Errorf("Grpc-Metadata-Uuid was %s, wanted %s", got, want)
|
||||
}
|
||||
}
|
||||
|
||||
func testABELookupNotFound(t *testing.T, port int) {
|
||||
url := fmt.Sprintf("http://localhost:%d/v1/example/a_bit_of_everything", port)
|
||||
uuid := "not_exist"
|
||||
url = fmt.Sprintf("%s/%s", url, uuid)
|
||||
resp, err := http.Get(url)
|
||||
if err != nil {
|
||||
t.Errorf("http.Get(%q) failed with %v; want success", url, err)
|
||||
return
|
||||
}
|
||||
defer resp.Body.Close()
|
||||
|
||||
buf, err := ioutil.ReadAll(resp.Body)
|
||||
if err != nil {
|
||||
t.Errorf("ioutil.ReadAll(resp.Body) failed with %v; want success", err)
|
||||
return
|
||||
}
|
||||
|
||||
if got, want := resp.StatusCode, http.StatusNotFound; got != want {
|
||||
t.Errorf("resp.StatusCode = %d; want %d", got, want)
|
||||
t.Logf("%s", buf)
|
||||
return
|
||||
}
|
||||
|
||||
var msg errorBody
|
||||
if err := json.Unmarshal(buf, &msg); err != nil {
|
||||
t.Errorf("json.Unmarshal(%s, &msg) failed with %v; want success", buf, err)
|
||||
return
|
||||
}
|
||||
|
||||
if got, want := msg.Code, int(codes.NotFound); got != want {
|
||||
t.Errorf("msg.Code = %d; want %d", got, want)
|
||||
return
|
||||
}
|
||||
|
||||
if got, want := msg.Error, "not found"; got != want {
|
||||
t.Errorf("msg.Error = %s; want %s", got, want)
|
||||
return
|
||||
}
|
||||
|
||||
if got, want := resp.Header.Get("Grpc-Metadata-Uuid"), uuid; got != want {
|
||||
t.Errorf("Grpc-Metadata-Uuid was %s, wanted %s", got, want)
|
||||
}
|
||||
if got, want := resp.Trailer.Get("Grpc-Trailer-Foo"), "foo2"; got != want {
|
||||
t.Errorf("Grpc-Trailer-Foo was %q, wanted %q", got, want)
|
||||
}
|
||||
if got, want := resp.Trailer.Get("Grpc-Trailer-Bar"), "bar2"; got != want {
|
||||
t.Errorf("Grpc-Trailer-Bar was %q, wanted %q", got, want)
|
||||
}
|
||||
}
|
||||
|
||||
func testABEList(t *testing.T, port int) {
|
||||
url := fmt.Sprintf("http://localhost:%d/v1/example/a_bit_of_everything", port)
|
||||
resp, err := http.Get(url)
|
||||
if err != nil {
|
||||
t.Errorf("http.Get(%q) failed with %v; want success", url, err)
|
||||
return
|
||||
}
|
||||
defer resp.Body.Close()
|
||||
|
||||
dec := json.NewDecoder(resp.Body)
|
||||
var i int
|
||||
for i = 0; ; i++ {
|
||||
var item struct {
|
||||
Result json.RawMessage `json:"result"`
|
||||
Error map[string]interface{} `json:"error"`
|
||||
}
|
||||
err := dec.Decode(&item)
|
||||
if err == io.EOF {
|
||||
break
|
||||
}
|
||||
if err != nil {
|
||||
t.Errorf("dec.Decode(&item) failed with %v; want success; i = %d", err, i)
|
||||
}
|
||||
if len(item.Error) != 0 {
|
||||
t.Errorf("item.Error = %#v; want empty; i = %d", item.Error, i)
|
||||
continue
|
||||
}
|
||||
var msg gw.ABitOfEverything
|
||||
if err := jsonpb.UnmarshalString(string(item.Result), &msg); err != nil {
|
||||
t.Errorf("jsonpb.UnmarshalString(%s, &msg) failed with %v; want success", item.Result, err)
|
||||
}
|
||||
}
|
||||
if i <= 0 {
|
||||
t.Errorf("i == %d; want > 0", i)
|
||||
}
|
||||
|
||||
value := resp.Header.Get("Grpc-Metadata-Count")
|
||||
if value == "" {
|
||||
t.Errorf("Grpc-Metadata-Count should not be empty")
|
||||
}
|
||||
|
||||
count, err := strconv.Atoi(value)
|
||||
if err != nil {
|
||||
t.Errorf("failed to Atoi %q: %v", value, err)
|
||||
}
|
||||
|
||||
if count <= 0 {
|
||||
t.Errorf("count == %d; want > 0", count)
|
||||
}
|
||||
}
|
||||
|
||||
func testABEBulkEcho(t *testing.T, port int) {
|
||||
reqr, reqw := io.Pipe()
|
||||
var wg sync.WaitGroup
|
||||
var want []*sub.StringMessage
|
||||
wg.Add(1)
|
||||
go func() {
|
||||
defer wg.Done()
|
||||
defer reqw.Close()
|
||||
var m jsonpb.Marshaler
|
||||
for i := 0; i < 1000; i++ {
|
||||
msg := sub.StringMessage{Value: proto.String(fmt.Sprintf("message %d", i))}
|
||||
buf, err := m.MarshalToString(&msg)
|
||||
if err != nil {
|
||||
t.Errorf("m.Marshal(%v) failed with %v; want success", &msg, err)
|
||||
return
|
||||
}
|
||||
if _, err := fmt.Fprintln(reqw, buf); err != nil {
|
||||
t.Errorf("fmt.Fprintln(reqw, %q) failed with %v; want success", buf, err)
|
||||
return
|
||||
}
|
||||
want = append(want, &msg)
|
||||
}
|
||||
}()
|
||||
|
||||
url := fmt.Sprintf("http://localhost:%d/v1/example/a_bit_of_everything/echo", port)
|
||||
req, err := http.NewRequest("POST", url, reqr)
|
||||
if err != nil {
|
||||
t.Errorf("http.NewRequest(%q, %q, reqr) failed with %v; want success", "POST", url, err)
|
||||
return
|
||||
}
|
||||
req.Header.Set("Content-Type", "application/json")
|
||||
req.Header.Set("Transfer-Encoding", "chunked")
|
||||
resp, err := http.DefaultClient.Do(req)
|
||||
if err != nil {
|
||||
t.Errorf("http.Post(%q, %q, req) failed with %v; want success", url, "application/json", err)
|
||||
return
|
||||
}
|
||||
defer resp.Body.Close()
|
||||
if got, want := resp.StatusCode, http.StatusOK; got != want {
|
||||
t.Errorf("resp.StatusCode = %d; want %d", got, want)
|
||||
}
|
||||
|
||||
var got []*sub.StringMessage
|
||||
wg.Add(1)
|
||||
go func() {
|
||||
defer wg.Done()
|
||||
|
||||
dec := json.NewDecoder(resp.Body)
|
||||
for i := 0; ; i++ {
|
||||
var item struct {
|
||||
Result json.RawMessage `json:"result"`
|
||||
Error map[string]interface{} `json:"error"`
|
||||
}
|
||||
err := dec.Decode(&item)
|
||||
if err == io.EOF {
|
||||
break
|
||||
}
|
||||
if err != nil {
|
||||
t.Errorf("dec.Decode(&item) failed with %v; want success; i = %d", err, i)
|
||||
}
|
||||
if len(item.Error) != 0 {
|
||||
t.Errorf("item.Error = %#v; want empty; i = %d", item.Error, i)
|
||||
continue
|
||||
}
|
||||
var msg sub.StringMessage
|
||||
if err := jsonpb.UnmarshalString(string(item.Result), &msg); err != nil {
|
||||
t.Errorf("jsonpb.UnmarshalString(%q, &msg) failed with %v; want success", item.Result, err)
|
||||
}
|
||||
got = append(got, &msg)
|
||||
}
|
||||
}()
|
||||
|
||||
wg.Wait()
|
||||
if !reflect.DeepEqual(got, want) {
|
||||
t.Errorf("got = %v; want %v", got, want)
|
||||
}
|
||||
}
|
||||
|
||||
func testABEBulkEchoZeroLength(t *testing.T, port int) {
|
||||
url := fmt.Sprintf("http://localhost:%d/v1/example/a_bit_of_everything/echo", port)
|
||||
req, err := http.NewRequest("POST", url, bytes.NewReader(nil))
|
||||
if err != nil {
|
||||
t.Errorf("http.NewRequest(%q, %q, bytes.NewReader(nil)) failed with %v; want success", "POST", url, err)
|
||||
return
|
||||
}
|
||||
req.Header.Set("Content-Type", "application/json")
|
||||
req.Header.Set("Transfer-Encoding", "chunked")
|
||||
resp, err := http.DefaultClient.Do(req)
|
||||
if err != nil {
|
||||
t.Errorf("http.Post(%q, %q, req) failed with %v; want success", url, "application/json", err)
|
||||
return
|
||||
}
|
||||
defer resp.Body.Close()
|
||||
if got, want := resp.StatusCode, http.StatusOK; got != want {
|
||||
t.Errorf("resp.StatusCode = %d; want %d", got, want)
|
||||
}
|
||||
|
||||
dec := json.NewDecoder(resp.Body)
|
||||
var item struct {
|
||||
Result json.RawMessage `json:"result"`
|
||||
Error map[string]interface{} `json:"error"`
|
||||
}
|
||||
if err := dec.Decode(&item); err == nil {
|
||||
t.Errorf("dec.Decode(&item) succeeded; want io.EOF; item = %#v", item)
|
||||
} else if err != io.EOF {
|
||||
t.Errorf("dec.Decode(&item) failed with %v; want success", err)
|
||||
return
|
||||
}
|
||||
}
|
||||
|
||||
func testAdditionalBindings(t *testing.T, port int) {
|
||||
for i, f := range []func() *http.Response{
|
||||
func() *http.Response {
|
||||
url := fmt.Sprintf("http://localhost:%d/v1/example/a_bit_of_everything/echo/hello", port)
|
||||
resp, err := http.Get(url)
|
||||
if err != nil {
|
||||
t.Errorf("http.Get(%q) failed with %v; want success", url, err)
|
||||
return nil
|
||||
}
|
||||
return resp
|
||||
},
|
||||
func() *http.Response {
|
||||
url := fmt.Sprintf("http://localhost:%d/v2/example/echo", port)
|
||||
resp, err := http.Post(url, "application/json", strings.NewReader(`"hello"`))
|
||||
if err != nil {
|
||||
t.Errorf("http.Post(%q, %q, %q) failed with %v; want success", url, "application/json", `"hello"`, err)
|
||||
return nil
|
||||
}
|
||||
return resp
|
||||
},
|
||||
func() *http.Response {
|
||||
r, w := io.Pipe()
|
||||
go func() {
|
||||
defer w.Close()
|
||||
w.Write([]byte(`"hello"`))
|
||||
}()
|
||||
url := fmt.Sprintf("http://localhost:%d/v2/example/echo", port)
|
||||
resp, err := http.Post(url, "application/json", r)
|
||||
if err != nil {
|
||||
t.Errorf("http.Post(%q, %q, %q) failed with %v; want success", url, "application/json", `"hello"`, err)
|
||||
return nil
|
||||
}
|
||||
return resp
|
||||
},
|
||||
func() *http.Response {
|
||||
url := fmt.Sprintf("http://localhost:%d/v2/example/echo?value=hello", port)
|
||||
resp, err := http.Get(url)
|
||||
if err != nil {
|
||||
t.Errorf("http.Get(%q) failed with %v; want success", url, err)
|
||||
return nil
|
||||
}
|
||||
return resp
|
||||
},
|
||||
} {
|
||||
resp := f()
|
||||
if resp == nil {
|
||||
continue
|
||||
}
|
||||
|
||||
defer resp.Body.Close()
|
||||
buf, err := ioutil.ReadAll(resp.Body)
|
||||
if err != nil {
|
||||
t.Errorf("iotuil.ReadAll(resp.Body) failed with %v; want success; i=%d", err, i)
|
||||
return
|
||||
}
|
||||
if got, want := resp.StatusCode, http.StatusOK; got != want {
|
||||
t.Errorf("resp.StatusCode = %d; want %d; i=%d", got, want, i)
|
||||
t.Logf("%s", buf)
|
||||
}
|
||||
|
||||
var msg sub.StringMessage
|
||||
if err := jsonpb.UnmarshalString(string(buf), &msg); err != nil {
|
||||
t.Errorf("jsonpb.UnmarshalString(%s, &msg) failed with %v; want success; %d", buf, err, i)
|
||||
return
|
||||
}
|
||||
if got, want := msg.GetValue(), "hello"; got != want {
|
||||
t.Errorf("msg.GetValue() = %q; want %q", got, want)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func TestTimeout(t *testing.T) {
|
||||
url := "http://localhost:8080/v2/example/timeout"
|
||||
req, err := http.NewRequest("GET", url, nil)
|
||||
if err != nil {
|
||||
t.Errorf(`http.NewRequest("GET", %q, nil) failed with %v; want success`, url, err)
|
||||
return
|
||||
}
|
||||
req.Header.Set("Grpc-Timeout", "10m")
|
||||
resp, err := http.DefaultClient.Do(req)
|
||||
if err != nil {
|
||||
t.Errorf("http.DefaultClient.Do(%#v) failed with %v; want success", req, err)
|
||||
return
|
||||
}
|
||||
defer resp.Body.Close()
|
||||
|
||||
if got, want := resp.StatusCode, http.StatusGatewayTimeout; got != want {
|
||||
t.Errorf("resp.StatusCode = %d; want %d", got, want)
|
||||
}
|
||||
}
|
||||
|
||||
func TestErrorWithDetails(t *testing.T) {
|
||||
url := "http://localhost:8080/v2/example/errorwithdetails"
|
||||
resp, err := http.Get(url)
|
||||
if err != nil {
|
||||
t.Errorf("http.Get(%q) failed with %v; want success", url, err)
|
||||
return
|
||||
}
|
||||
defer resp.Body.Close()
|
||||
|
||||
buf, err := ioutil.ReadAll(resp.Body)
|
||||
if err != nil {
|
||||
t.Fatalf("iotuil.ReadAll(resp.Body) failed with %v; want success", err)
|
||||
}
|
||||
|
||||
if got, want := resp.StatusCode, http.StatusInternalServerError; got != want {
|
||||
t.Errorf("resp.StatusCode = %d; want %d", got, want)
|
||||
}
|
||||
|
||||
var msg errorBody
|
||||
if err := json.Unmarshal(buf, &msg); err != nil {
|
||||
t.Fatalf("json.Unmarshal(%s, &msg) failed with %v; want success", buf, err)
|
||||
}
|
||||
|
||||
if got, want := msg.Code, int(codes.Unknown); got != want {
|
||||
t.Errorf("msg.Code = %d; want %d", got, want)
|
||||
}
|
||||
if got, want := msg.Error, "with details"; got != want {
|
||||
t.Errorf("msg.Error = %s; want %s", got, want)
|
||||
}
|
||||
if got, want := len(msg.Details), 1; got != want {
|
||||
t.Fatalf("len(msg.Details) = %q; want %q", got, want)
|
||||
}
|
||||
|
||||
details, ok := msg.Details[0].(map[string]interface{})
|
||||
if got, want := ok, true; got != want {
|
||||
t.Fatalf("msg.Details[0] got type: %T, want %T", msg.Details[0], map[string]interface{}{})
|
||||
}
|
||||
typ, ok := details["@type"].(string)
|
||||
if got, want := ok, true; got != want {
|
||||
t.Fatalf("msg.Details[0][\"@type\"] got type: %T, want %T", typ, "")
|
||||
}
|
||||
if got, want := details["@type"], "type.googleapis.com/google.rpc.DebugInfo"; got != want {
|
||||
t.Errorf("msg.Details[\"@type\"] = %q; want %q", got, want)
|
||||
}
|
||||
if got, want := details["detail"], "error debug details"; got != want {
|
||||
t.Errorf("msg.Details[\"detail\"] = %q; want %q", got, want)
|
||||
}
|
||||
entries, ok := details["stack_entries"].([]interface{})
|
||||
if got, want := ok, true; got != want {
|
||||
t.Fatalf("msg.Details[0][\"stack_entries\"] got type: %T, want %T", entries, []string{})
|
||||
}
|
||||
entry, ok := entries[0].(string)
|
||||
if got, want := ok, true; got != want {
|
||||
t.Fatalf("msg.Details[0][\"stack_entries\"][0] got type: %T, want %T", entry, "")
|
||||
}
|
||||
if got, want := entries[0], "foo:1"; got != want {
|
||||
t.Errorf("msg.Details[\"stack_entries\"][0] = %q; want %q", got, want)
|
||||
}
|
||||
}
|
||||
|
||||
func TestPostWithEmptyBody(t *testing.T) {
|
||||
url := "http://localhost:8080/v2/example/postwithemptybody/name"
|
||||
rep, err := http.Post(url, "application/json", nil)
|
||||
|
||||
if err != nil {
|
||||
t.Errorf("http.Post(%q) failed with %v; want success", url, err)
|
||||
return
|
||||
}
|
||||
|
||||
if rep.StatusCode != http.StatusOK {
|
||||
t.Errorf("http.Post(%q) response code is %d; want %d", url,
|
||||
rep.StatusCode, http.StatusOK)
|
||||
return
|
||||
}
|
||||
}
|
||||
|
||||
func TestUnknownPath(t *testing.T) {
|
||||
url := "http://localhost:8080"
|
||||
resp, err := http.Post(url, "application/json", strings.NewReader("{}"))
|
||||
if err != nil {
|
||||
t.Errorf("http.Post(%q) failed with %v; want success", url, err)
|
||||
return
|
||||
}
|
||||
defer resp.Body.Close()
|
||||
buf, err := ioutil.ReadAll(resp.Body)
|
||||
if err != nil {
|
||||
t.Errorf("iotuil.ReadAll(resp.Body) failed with %v; want success", err)
|
||||
return
|
||||
}
|
||||
|
||||
if got, want := resp.StatusCode, http.StatusNotFound; got != want {
|
||||
t.Errorf("resp.StatusCode = %d; want %d", got, want)
|
||||
t.Logf("%s", buf)
|
||||
}
|
||||
}
|
||||
|
||||
func TestMethodNotAllowed(t *testing.T) {
|
||||
url := "http://localhost:8080/v1/example/echo/myid"
|
||||
resp, err := http.Get(url)
|
||||
if err != nil {
|
||||
t.Errorf("http.Post(%q) failed with %v; want success", url, err)
|
||||
return
|
||||
}
|
||||
defer resp.Body.Close()
|
||||
buf, err := ioutil.ReadAll(resp.Body)
|
||||
if err != nil {
|
||||
t.Errorf("iotuil.ReadAll(resp.Body) failed with %v; want success", err)
|
||||
return
|
||||
}
|
||||
|
||||
if got, want := resp.StatusCode, http.StatusMethodNotAllowed; got != want {
|
||||
t.Errorf("resp.StatusCode = %d; want %d", got, want)
|
||||
t.Logf("%s", buf)
|
||||
}
|
||||
}
|
||||
|
||||
func TestInvalidArgument(t *testing.T) {
|
||||
url := "http://localhost:8080/v1/example/echo/myid/not_int64"
|
||||
resp, err := http.Get(url)
|
||||
if err != nil {
|
||||
t.Errorf("http.Get(%q) failed with %v; want success", url, err)
|
||||
return
|
||||
}
|
||||
defer resp.Body.Close()
|
||||
buf, err := ioutil.ReadAll(resp.Body)
|
||||
if err != nil {
|
||||
t.Errorf("iotuil.ReadAll(resp.Body) failed with %v; want success", err)
|
||||
return
|
||||
}
|
||||
|
||||
if got, want := resp.StatusCode, http.StatusBadRequest; got != want {
|
||||
t.Errorf("resp.StatusCode = %d; want %d", got, want)
|
||||
t.Logf("%s", buf)
|
||||
}
|
||||
}
|
98
vendor/github.com/grpc-ecosystem/grpc-gateway/examples/integration/main_test.go
generated
vendored
Executable file
98
vendor/github.com/grpc-ecosystem/grpc-gateway/examples/integration/main_test.go
generated
vendored
Executable file
@ -0,0 +1,98 @@
|
||||
package integration_test
|
||||
|
||||
import (
|
||||
"context"
|
||||
"flag"
|
||||
"fmt"
|
||||
"net/http"
|
||||
"os"
|
||||
"testing"
|
||||
"time"
|
||||
|
||||
"github.com/golang/glog"
|
||||
"github.com/grpc-ecosystem/grpc-gateway/examples/gateway"
|
||||
server "github.com/grpc-ecosystem/grpc-gateway/examples/server"
|
||||
gwruntime "github.com/grpc-ecosystem/grpc-gateway/runtime"
|
||||
)
|
||||
|
||||
var (
|
||||
endpoint = flag.String("endpoint", "localhost:9090", "endpoint of the gRPC service")
|
||||
network = flag.String("network", "tcp", `one of "tcp" or "unix". Must be consistent to -endpoint`)
|
||||
swaggerDir = flag.String("swagger_dir", "examples/proto/examplepb", "path to the directory which contains swagger definitions")
|
||||
)
|
||||
|
||||
func runGateway(ctx context.Context, addr string, opts ...gwruntime.ServeMuxOption) error {
|
||||
return gateway.Run(ctx, gateway.Options{
|
||||
Addr: addr,
|
||||
GRPCServer: gateway.Endpoint{
|
||||
Network: *network,
|
||||
Addr: *endpoint,
|
||||
},
|
||||
SwaggerDir: *swaggerDir,
|
||||
Mux: opts,
|
||||
})
|
||||
}
|
||||
|
||||
func waitForGateway(ctx context.Context, port uint16) error {
|
||||
ch := time.After(10 * time.Second)
|
||||
|
||||
var err error
|
||||
for {
|
||||
if r, err := http.Get(fmt.Sprintf("http://localhost:%d/healthz", port)); err == nil {
|
||||
if r.StatusCode == http.StatusOK {
|
||||
return nil
|
||||
}
|
||||
err = fmt.Errorf("server localhost:%d returned an unexpected status %d", port, r.StatusCode)
|
||||
}
|
||||
|
||||
glog.Infof("Waiting for localhost:%d to get ready", port)
|
||||
select {
|
||||
case <-ctx.Done():
|
||||
return err
|
||||
case <-ch:
|
||||
return err
|
||||
case <-time.After(10 * time.Millisecond):
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func runServers(ctx context.Context) <-chan error {
|
||||
ch := make(chan error, 2)
|
||||
go func() {
|
||||
if err := server.Run(ctx, *network, *endpoint); err != nil {
|
||||
ch <- fmt.Errorf("cannot run grpc service: %v", err)
|
||||
}
|
||||
}()
|
||||
go func() {
|
||||
if err := runGateway(ctx, ":8080"); err != nil {
|
||||
ch <- fmt.Errorf("cannot run gateway service: %v", err)
|
||||
}
|
||||
}()
|
||||
return ch
|
||||
}
|
||||
|
||||
func TestMain(m *testing.M) {
|
||||
flag.Parse()
|
||||
defer glog.Flush()
|
||||
|
||||
ctx, cancel := context.WithCancel(context.Background())
|
||||
defer cancel()
|
||||
errCh := runServers(ctx)
|
||||
|
||||
ch := make(chan int, 1)
|
||||
go func() {
|
||||
if err := waitForGateway(ctx, 8080); err != nil {
|
||||
glog.Errorf("waitForGateway(ctx, 8080) failed with %v; want success", err)
|
||||
}
|
||||
ch <- m.Run()
|
||||
}()
|
||||
|
||||
select {
|
||||
case err := <-errCh:
|
||||
fmt.Fprintln(os.Stderr, err)
|
||||
os.Exit(1)
|
||||
case status := <-ch:
|
||||
cancel()
|
||||
os.Exit(status)
|
||||
}
|
||||
}
|
207
vendor/github.com/grpc-ecosystem/grpc-gateway/examples/integration/proto_error_test.go
generated
vendored
Executable file
207
vendor/github.com/grpc-ecosystem/grpc-gateway/examples/integration/proto_error_test.go
generated
vendored
Executable file
@ -0,0 +1,207 @@
|
||||
package integration_test
|
||||
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
"io/ioutil"
|
||||
"net/http"
|
||||
"strings"
|
||||
"testing"
|
||||
"time"
|
||||
|
||||
"github.com/golang/protobuf/jsonpb"
|
||||
"github.com/grpc-ecosystem/grpc-gateway/runtime"
|
||||
spb "google.golang.org/genproto/googleapis/rpc/status"
|
||||
"google.golang.org/grpc/codes"
|
||||
)
|
||||
|
||||
func runServer(ctx context.Context, t *testing.T, port uint16) {
|
||||
opt := runtime.WithProtoErrorHandler(runtime.DefaultHTTPProtoErrorHandler)
|
||||
if err := runGateway(ctx, fmt.Sprintf(":%d", port), opt); err != nil {
|
||||
t.Errorf("runGateway() failed with %v; want success", err)
|
||||
}
|
||||
}
|
||||
|
||||
func TestWithProtoErrorHandler(t *testing.T) {
|
||||
ctx := context.Background()
|
||||
ctx, cancel := context.WithCancel(ctx)
|
||||
defer cancel()
|
||||
|
||||
const port = 8082
|
||||
go runServer(ctx, t, port)
|
||||
if err := waitForGateway(ctx, 8082); err != nil {
|
||||
t.Errorf("waitForGateway(ctx, 8082) failed with %v; want success", err)
|
||||
}
|
||||
testEcho(t, port, "application/json")
|
||||
testEchoBody(t, port)
|
||||
}
|
||||
|
||||
func TestABEWithProtoErrorHandler(t *testing.T) {
|
||||
if testing.Short() {
|
||||
t.Skip()
|
||||
return
|
||||
}
|
||||
|
||||
ctx := context.Background()
|
||||
ctx, cancel := context.WithCancel(ctx)
|
||||
defer cancel()
|
||||
|
||||
const port = 8083
|
||||
go runServer(ctx, t, port)
|
||||
if err := waitForGateway(ctx, 8083); err != nil {
|
||||
t.Errorf("waitForGateway(ctx, 8083) failed with %v; want success", err)
|
||||
}
|
||||
|
||||
testABECreate(t, port)
|
||||
testABECreateBody(t, port)
|
||||
testABEBulkCreate(t, port)
|
||||
testABELookup(t, port)
|
||||
testABELookupNotFoundWithProtoError(t, port)
|
||||
testABEList(t, port)
|
||||
testABEBulkEcho(t, port)
|
||||
testABEBulkEchoZeroLength(t, port)
|
||||
testAdditionalBindings(t, port)
|
||||
}
|
||||
|
||||
func testABELookupNotFoundWithProtoError(t *testing.T, port uint16) {
|
||||
url := fmt.Sprintf("http://localhost:%d/v1/example/a_bit_of_everything", port)
|
||||
uuid := "not_exist"
|
||||
url = fmt.Sprintf("%s/%s", url, uuid)
|
||||
resp, err := http.Get(url)
|
||||
if err != nil {
|
||||
t.Errorf("http.Get(%q) failed with %v; want success", url, err)
|
||||
return
|
||||
}
|
||||
defer resp.Body.Close()
|
||||
|
||||
buf, err := ioutil.ReadAll(resp.Body)
|
||||
if err != nil {
|
||||
t.Errorf("ioutil.ReadAll(resp.Body) failed with %v; want success", err)
|
||||
return
|
||||
}
|
||||
|
||||
if got, want := resp.StatusCode, http.StatusNotFound; got != want {
|
||||
t.Errorf("resp.StatusCode = %d; want %d", got, want)
|
||||
t.Logf("%s", buf)
|
||||
return
|
||||
}
|
||||
|
||||
var msg spb.Status
|
||||
if err := jsonpb.UnmarshalString(string(buf), &msg); err != nil {
|
||||
t.Errorf("jsonpb.UnmarshalString(%s, &msg) failed with %v; want success", buf, err)
|
||||
return
|
||||
}
|
||||
|
||||
if got, want := msg.Code, int32(codes.NotFound); got != want {
|
||||
t.Errorf("msg.Code = %d; want %d", got, want)
|
||||
return
|
||||
}
|
||||
|
||||
if got, want := msg.Message, "not found"; got != want {
|
||||
t.Errorf("msg.Message = %s; want %s", got, want)
|
||||
return
|
||||
}
|
||||
|
||||
if got, want := resp.Header.Get("Grpc-Metadata-Uuid"), uuid; got != want {
|
||||
t.Errorf("Grpc-Metadata-Uuid was %s, wanted %s", got, want)
|
||||
}
|
||||
if got, want := resp.Trailer.Get("Grpc-Trailer-Foo"), "foo2"; got != want {
|
||||
t.Errorf("Grpc-Trailer-Foo was %q, wanted %q", got, want)
|
||||
}
|
||||
if got, want := resp.Trailer.Get("Grpc-Trailer-Bar"), "bar2"; got != want {
|
||||
t.Errorf("Grpc-Trailer-Bar was %q, wanted %q", got, want)
|
||||
}
|
||||
}
|
||||
|
||||
func TestUnknownPathWithProtoError(t *testing.T) {
|
||||
ctx := context.Background()
|
||||
ctx, cancel := context.WithCancel(ctx)
|
||||
defer cancel()
|
||||
|
||||
const port = 8084
|
||||
go runServer(ctx, t, port)
|
||||
if err := waitForGateway(ctx, 8084); err != nil {
|
||||
t.Errorf("waitForGateway(ctx, 8084) failed with %v; want success", err)
|
||||
}
|
||||
|
||||
url := fmt.Sprintf("http://localhost:%d", port)
|
||||
resp, err := http.Post(url, "application/json", strings.NewReader("{}"))
|
||||
if err != nil {
|
||||
t.Errorf("http.Post(%q) failed with %v; want success", url, err)
|
||||
return
|
||||
}
|
||||
defer resp.Body.Close()
|
||||
buf, err := ioutil.ReadAll(resp.Body)
|
||||
if err != nil {
|
||||
t.Errorf("iotuil.ReadAll(resp.Body) failed with %v; want success", err)
|
||||
return
|
||||
}
|
||||
|
||||
if got, want := resp.StatusCode, http.StatusNotImplemented; got != want {
|
||||
t.Errorf("resp.StatusCode = %d; want %d", got, want)
|
||||
t.Logf("%s", buf)
|
||||
}
|
||||
|
||||
var msg spb.Status
|
||||
if err := jsonpb.UnmarshalString(string(buf), &msg); err != nil {
|
||||
t.Errorf("jsonpb.UnmarshalString(%s, &msg) failed with %v; want success", buf, err)
|
||||
return
|
||||
}
|
||||
|
||||
if got, want := msg.Code, int32(codes.Unimplemented); got != want {
|
||||
t.Errorf("msg.Code = %d; want %d", got, want)
|
||||
return
|
||||
}
|
||||
|
||||
if msg.Message == "" {
|
||||
t.Errorf("msg.Message should not be empty")
|
||||
return
|
||||
}
|
||||
}
|
||||
|
||||
func TestMethodNotAllowedWithProtoError(t *testing.T) {
|
||||
ctx := context.Background()
|
||||
ctx, cancel := context.WithCancel(ctx)
|
||||
defer cancel()
|
||||
|
||||
const port = 8085
|
||||
go runServer(ctx, t, port)
|
||||
|
||||
// Waiting for the server's getting available.
|
||||
// TODO(yugui) find a better way to wait
|
||||
time.Sleep(100 * time.Millisecond)
|
||||
|
||||
url := fmt.Sprintf("http://localhost:%d/v1/example/echo/myid", port)
|
||||
resp, err := http.Get(url)
|
||||
if err != nil {
|
||||
t.Errorf("http.Post(%q) failed with %v; want success", url, err)
|
||||
return
|
||||
}
|
||||
defer resp.Body.Close()
|
||||
buf, err := ioutil.ReadAll(resp.Body)
|
||||
if err != nil {
|
||||
t.Errorf("iotuil.ReadAll(resp.Body) failed with %v; want success", err)
|
||||
return
|
||||
}
|
||||
|
||||
if got, want := resp.StatusCode, http.StatusNotImplemented; got != want {
|
||||
t.Errorf("resp.StatusCode = %d; want %d", got, want)
|
||||
t.Logf("%s", buf)
|
||||
}
|
||||
|
||||
var msg spb.Status
|
||||
if err := jsonpb.UnmarshalString(string(buf), &msg); err != nil {
|
||||
t.Errorf("jsonpb.UnmarshalString(%s, &msg) failed with %v; want success", buf, err)
|
||||
return
|
||||
}
|
||||
|
||||
if got, want := msg.Code, int32(codes.Unimplemented); got != want {
|
||||
t.Errorf("msg.Code = %d; want %d", got, want)
|
||||
return
|
||||
}
|
||||
|
||||
if msg.Message == "" {
|
||||
t.Errorf("msg.Message should not be empty")
|
||||
return
|
||||
}
|
||||
}
|
64
vendor/github.com/grpc-ecosystem/grpc-gateway/examples/proto/examplepb/BUILD.bazel
generated
vendored
Executable file
64
vendor/github.com/grpc-ecosystem/grpc-gateway/examples/proto/examplepb/BUILD.bazel
generated
vendored
Executable file
@ -0,0 +1,64 @@
|
||||
load("@io_bazel_rules_go//go:def.bzl", "go_library")
|
||||
load("@io_bazel_rules_go//proto:def.bzl", "go_proto_library")
|
||||
load("@grpc_ecosystem_grpc_gateway//protoc-gen-swagger:defs.bzl", "protoc_gen_swagger")
|
||||
|
||||
package(default_visibility = ["//visibility:public"])
|
||||
|
||||
# gazelle:exclude a_bit_of_everything.pb.gw.go
|
||||
# gazelle:exclude echo_service.pb.gw.go
|
||||
# gazelle:exclude flow_combination.pb.gw.go
|
||||
# gazelle:exclude stream.pb.gw.go
|
||||
# gazelle:exclude wrappers.pb.gw.go
|
||||
|
||||
proto_library(
|
||||
name = "examplepb_proto",
|
||||
srcs = [
|
||||
"a_bit_of_everything.proto",
|
||||
"echo_service.proto",
|
||||
"flow_combination.proto",
|
||||
"stream.proto",
|
||||
"unannotated_echo_service.proto",
|
||||
"wrappers.proto",
|
||||
],
|
||||
deps = [
|
||||
"//examples/proto/sub:sub_proto",
|
||||
"//examples/proto/sub2:sub2_proto",
|
||||
"//protoc-gen-swagger/options:options_proto",
|
||||
"@com_github_googleapis_googleapis//google/api:api_proto",
|
||||
"@com_google_protobuf//:duration_proto",
|
||||
"@com_google_protobuf//:empty_proto",
|
||||
"@com_google_protobuf//:timestamp_proto",
|
||||
"@com_google_protobuf//:wrappers_proto",
|
||||
],
|
||||
)
|
||||
|
||||
go_proto_library(
|
||||
name = "examplepb_go_proto",
|
||||
compilers = [
|
||||
"@io_bazel_rules_go//proto:go_grpc",
|
||||
"//protoc-gen-grpc-gateway:go_gen_grpc_gateway",
|
||||
],
|
||||
importpath = "github.com/grpc-ecosystem/grpc-gateway/examples/proto/examplepb",
|
||||
proto = ":examplepb_proto",
|
||||
deps = [
|
||||
"//examples/proto/sub:go_default_library",
|
||||
"//examples/proto/sub2:go_default_library",
|
||||
"//protoc-gen-swagger/options:go_default_library",
|
||||
"@com_github_golang_protobuf//ptypes/duration:go_default_library",
|
||||
"@com_github_golang_protobuf//ptypes/empty:go_default_library",
|
||||
"@com_github_golang_protobuf//ptypes/timestamp:go_default_library",
|
||||
"@com_github_golang_protobuf//ptypes/wrappers:go_default_library",
|
||||
"@com_github_googleapis_googleapis//google/api:go_default_library",
|
||||
],
|
||||
)
|
||||
|
||||
go_library(
|
||||
name = "go_default_library",
|
||||
embed = [":examplepb_go_proto"],
|
||||
importpath = "github.com/grpc-ecosystem/grpc-gateway/examples/proto/examplepb",
|
||||
)
|
||||
|
||||
protoc_gen_swagger(
|
||||
name = "expamplepb_protoc_gen_swagger",
|
||||
proto = ":examplepb_proto",
|
||||
)
|
1330
vendor/github.com/grpc-ecosystem/grpc-gateway/examples/proto/examplepb/a_bit_of_everything.pb.go
generated
vendored
Executable file
1330
vendor/github.com/grpc-ecosystem/grpc-gateway/examples/proto/examplepb/a_bit_of_everything.pb.go
generated
vendored
Executable file
File diff suppressed because it is too large
Load Diff
1116
vendor/github.com/grpc-ecosystem/grpc-gateway/examples/proto/examplepb/a_bit_of_everything.pb.gw.go
generated
vendored
Executable file
1116
vendor/github.com/grpc-ecosystem/grpc-gateway/examples/proto/examplepb/a_bit_of_everything.pb.gw.go
generated
vendored
Executable file
File diff suppressed because it is too large
Load Diff
316
vendor/github.com/grpc-ecosystem/grpc-gateway/examples/proto/examplepb/a_bit_of_everything.proto
generated
vendored
Executable file
316
vendor/github.com/grpc-ecosystem/grpc-gateway/examples/proto/examplepb/a_bit_of_everything.proto
generated
vendored
Executable file
@ -0,0 +1,316 @@
|
||||
syntax = "proto3";
|
||||
option go_package = "examplepb";
|
||||
package grpc.gateway.examples.examplepb;
|
||||
|
||||
import "google/api/annotations.proto";
|
||||
import "google/protobuf/empty.proto";
|
||||
import "google/protobuf/duration.proto";
|
||||
import "examples/proto/sub/message.proto";
|
||||
import "examples/proto/sub2/message.proto";
|
||||
import "google/protobuf/timestamp.proto";
|
||||
import "protoc-gen-swagger/options/annotations.proto";
|
||||
|
||||
option (grpc.gateway.protoc_gen_swagger.options.openapiv2_swagger) = {
|
||||
info: {
|
||||
title: "A Bit of Everything";
|
||||
version: "1.0";
|
||||
contact: {
|
||||
name: "gRPC-Gateway project";
|
||||
url: "https://github.com/grpc-ecosystem/grpc-gateway";
|
||||
email: "none@example.com";
|
||||
};
|
||||
};
|
||||
// Overwriting host entry breaks tests, so this is not done here.
|
||||
external_docs: {
|
||||
url: "https://github.com/grpc-ecosystem/grpc-gateway";
|
||||
description: "More about gRPC-Gateway";
|
||||
}
|
||||
schemes: HTTP;
|
||||
schemes: HTTPS;
|
||||
schemes: WSS;
|
||||
consumes: "application/json";
|
||||
consumes: "application/x-foo-mime";
|
||||
produces: "application/json";
|
||||
produces: "application/x-foo-mime";
|
||||
security_definitions: {
|
||||
security: {
|
||||
key: "BasicAuth";
|
||||
value: {
|
||||
type: TYPE_BASIC;
|
||||
}
|
||||
}
|
||||
security: {
|
||||
key: "ApiKeyAuth";
|
||||
value: {
|
||||
type: TYPE_API_KEY;
|
||||
in: IN_HEADER;
|
||||
name: "X-API-Key";
|
||||
}
|
||||
}
|
||||
security: {
|
||||
key: "OAuth2";
|
||||
value: {
|
||||
type: TYPE_OAUTH2;
|
||||
flow: FLOW_ACCESS_CODE;
|
||||
authorization_url: "https://example.com/oauth/authorize";
|
||||
token_url: "https://example.com/oauth/token";
|
||||
scopes: {
|
||||
scope: {
|
||||
key: "read";
|
||||
value: "Grants read access";
|
||||
}
|
||||
scope: {
|
||||
key: "write";
|
||||
value: "Grants write access";
|
||||
}
|
||||
scope: {
|
||||
key: "admin";
|
||||
value: "Grants read and write access to administrative information";
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
security: {
|
||||
security_requirement: {
|
||||
key: "BasicAuth";
|
||||
value: {};
|
||||
}
|
||||
security_requirement: {
|
||||
key: "ApiKeyAuth";
|
||||
value: {};
|
||||
}
|
||||
}
|
||||
security: {
|
||||
security_requirement: {
|
||||
key: "OAuth2";
|
||||
value: {
|
||||
scope: "read";
|
||||
scope: "write";
|
||||
}
|
||||
}
|
||||
security_requirement: {
|
||||
key: "ApiKeyAuth";
|
||||
value: {};
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
// Intentionaly complicated message type to cover much features of Protobuf.
|
||||
// NEXT ID: 30
|
||||
message ABitOfEverything {
|
||||
option (grpc.gateway.protoc_gen_swagger.options.openapiv2_schema) = {
|
||||
external_docs: {
|
||||
url: "https://github.com/grpc-ecosystem/grpc-gateway";
|
||||
description: "Find out more about ABitOfEverything";
|
||||
}
|
||||
};
|
||||
|
||||
// Nested is nested type.
|
||||
message Nested {
|
||||
// name is nested field.
|
||||
string name = 1;
|
||||
uint32 amount = 2;
|
||||
// DeepEnum is one or zero.
|
||||
enum DeepEnum {
|
||||
// FALSE is false.
|
||||
FALSE = 0;
|
||||
// TRUE is true.
|
||||
TRUE = 1;
|
||||
}
|
||||
DeepEnum ok = 3;
|
||||
}
|
||||
Nested single_nested = 25;
|
||||
|
||||
string uuid = 1;
|
||||
repeated Nested nested = 2;
|
||||
float float_value = 3;
|
||||
double double_value = 4;
|
||||
int64 int64_value = 5;
|
||||
uint64 uint64_value = 6;
|
||||
int32 int32_value = 7;
|
||||
fixed64 fixed64_value = 8;
|
||||
fixed32 fixed32_value = 9;
|
||||
bool bool_value = 10;
|
||||
string string_value = 11;
|
||||
bytes bytes_value = 29;
|
||||
uint32 uint32_value = 13;
|
||||
NumericEnum enum_value = 14;
|
||||
sfixed32 sfixed32_value = 15;
|
||||
sfixed64 sfixed64_value = 16;
|
||||
sint32 sint32_value = 17;
|
||||
sint64 sint64_value = 18;
|
||||
repeated string repeated_string_value = 19;
|
||||
oneof oneof_value {
|
||||
google.protobuf.Empty oneof_empty = 20;
|
||||
string oneof_string = 21;
|
||||
}
|
||||
|
||||
map<string, NumericEnum> map_value = 22;
|
||||
map<string, string> mapped_string_value = 23;
|
||||
map<string, Nested> mapped_nested_value = 24;
|
||||
|
||||
string nonConventionalNameValue = 26;
|
||||
|
||||
google.protobuf.Timestamp timestamp_value = 27;
|
||||
|
||||
// repeated enum value. it is comma-separated in query
|
||||
repeated NumericEnum repeated_enum_value = 28;
|
||||
}
|
||||
|
||||
message Body {
|
||||
string name = 1;
|
||||
}
|
||||
|
||||
message MessageWithBody {
|
||||
string id = 1;
|
||||
Body data = 2;
|
||||
}
|
||||
|
||||
|
||||
// NumericEnum is one or zero.
|
||||
enum NumericEnum {
|
||||
// ZERO means 0
|
||||
ZERO = 0;
|
||||
// ONE means 1
|
||||
ONE = 1;
|
||||
}
|
||||
|
||||
// ABitOfEverything service is used to validate that APIs with complicated
|
||||
// proto messages and URL templates are still processed correctly.
|
||||
service ABitOfEverythingService {
|
||||
|
||||
option (grpc.gateway.protoc_gen_swagger.options.openapiv2_tag) = {
|
||||
description: "ABitOfEverythingService description -- which should not be used in place of the documentation comment!"
|
||||
external_docs: {
|
||||
url: "https://github.com/grpc-ecosystem/grpc-gateway";
|
||||
description: "Find out more about EchoService";
|
||||
}
|
||||
};
|
||||
|
||||
rpc Create(ABitOfEverything) returns (ABitOfEverything) {
|
||||
// TODO add enum_value
|
||||
option (google.api.http) = {
|
||||
post: "/v1/example/a_bit_of_everything/{float_value}/{double_value}/{int64_value}/separator/{uint64_value}/{int32_value}/{fixed64_value}/{fixed32_value}/{bool_value}/{string_value=strprefix/*}/{uint32_value}/{sfixed32_value}/{sfixed64_value}/{sint32_value}/{sint64_value}/{nonConventionalNameValue}"
|
||||
};
|
||||
}
|
||||
rpc CreateBody(ABitOfEverything) returns (ABitOfEverything) {
|
||||
option (google.api.http) = {
|
||||
post: "/v1/example/a_bit_of_everything"
|
||||
body: "*"
|
||||
};
|
||||
}
|
||||
rpc Lookup(sub2.IdMessage) returns (ABitOfEverything) {
|
||||
option (google.api.http) = {
|
||||
get: "/v1/example/a_bit_of_everything/{uuid}"
|
||||
};
|
||||
}
|
||||
rpc Update(ABitOfEverything) returns (google.protobuf.Empty) {
|
||||
option (google.api.http) = {
|
||||
put: "/v1/example/a_bit_of_everything/{uuid}"
|
||||
body: "*"
|
||||
};
|
||||
}
|
||||
rpc Delete(sub2.IdMessage) returns (google.protobuf.Empty) {
|
||||
option (google.api.http) = {
|
||||
delete: "/v1/example/a_bit_of_everything/{uuid}"
|
||||
};
|
||||
option (grpc.gateway.protoc_gen_swagger.options.openapiv2_operation) = {
|
||||
security: {
|
||||
security_requirement: {
|
||||
key: "ApiKeyAuth";
|
||||
value: {}
|
||||
}
|
||||
security_requirement: {
|
||||
key: "OAuth2";
|
||||
value: {
|
||||
scope: "read";
|
||||
scope: "write";
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
}
|
||||
rpc GetQuery(ABitOfEverything) returns (google.protobuf.Empty) {
|
||||
option (google.api.http) = {
|
||||
get: "/v1/example/a_bit_of_everything/query/{uuid}"
|
||||
};
|
||||
option (grpc.gateway.protoc_gen_swagger.options.openapiv2_operation) = {
|
||||
deprecated: true // For testing purposes.
|
||||
external_docs: {
|
||||
url: "https://github.com/grpc-ecosystem/grpc-gateway";
|
||||
description: "Find out more about GetQuery";
|
||||
}
|
||||
};
|
||||
}
|
||||
// Echo allows posting a StringMessage value.
|
||||
//
|
||||
// It also exposes multiple bindings.
|
||||
//
|
||||
// This makes it useful when validating that the OpenAPI v2 API
|
||||
// description exposes documentation correctly on all paths
|
||||
// defined as additional_bindings in the proto.
|
||||
rpc Echo(grpc.gateway.examples.sub.StringMessage) returns (grpc.gateway.examples.sub.StringMessage) {
|
||||
option (google.api.http) = {
|
||||
get: "/v1/example/a_bit_of_everything/echo/{value}"
|
||||
additional_bindings {
|
||||
post: "/v2/example/echo"
|
||||
body: "value"
|
||||
}
|
||||
additional_bindings {
|
||||
get: "/v2/example/echo"
|
||||
}
|
||||
};
|
||||
option (grpc.gateway.protoc_gen_swagger.options.openapiv2_operation) = {
|
||||
description: "Description Echo";
|
||||
summary: "Summary: Echo rpc";
|
||||
tags: "echo service";
|
||||
tags: "echo rpc";
|
||||
external_docs: {
|
||||
url: "https://github.com/grpc-ecosystem/grpc-gateway";
|
||||
description: "Find out more Echo";
|
||||
}
|
||||
};
|
||||
}
|
||||
rpc DeepPathEcho(ABitOfEverything) returns (ABitOfEverything) {
|
||||
option (google.api.http) = {
|
||||
post: "/v1/example/a_bit_of_everything/{single_nested.name}"
|
||||
body: "*"
|
||||
};
|
||||
}
|
||||
rpc NoBindings(google.protobuf.Duration) returns (google.protobuf.Empty) {}
|
||||
rpc Timeout(google.protobuf.Empty) returns (google.protobuf.Empty) {
|
||||
option (google.api.http) = {
|
||||
get: "/v2/example/timeout",
|
||||
};
|
||||
}
|
||||
rpc ErrorWithDetails(google.protobuf.Empty) returns (google.protobuf.Empty) {
|
||||
option (google.api.http) = {
|
||||
get: "/v2/example/errorwithdetails",
|
||||
};
|
||||
}
|
||||
rpc GetMessageWithBody(MessageWithBody) returns (google.protobuf.Empty) {
|
||||
option (google.api.http) = {
|
||||
post: "/v2/example/withbody/{id}",
|
||||
body: "data"
|
||||
};
|
||||
}
|
||||
rpc PostWithEmptyBody(Body) returns (google.protobuf.Empty) {
|
||||
option (google.api.http) = {
|
||||
post: "/v2/example/postwithemptybody/{name}",
|
||||
body: "*"
|
||||
};
|
||||
}
|
||||
}
|
||||
// camelCase and lowercase service names are valid but not recommended (use TitleCase instead)
|
||||
service camelCaseServiceName {
|
||||
rpc Empty(google.protobuf.Empty) returns (google.protobuf.Empty) {
|
||||
option (google.api.http) = {
|
||||
get: "/v2/example/empty",
|
||||
};
|
||||
}
|
||||
}
|
||||
service AnotherServiceWithNoBindings {
|
||||
rpc NoBindings(google.protobuf.Empty) returns (google.protobuf.Empty) {}
|
||||
}
|
933
vendor/github.com/grpc-ecosystem/grpc-gateway/examples/proto/examplepb/a_bit_of_everything.swagger.json
generated
vendored
Executable file
933
vendor/github.com/grpc-ecosystem/grpc-gateway/examples/proto/examplepb/a_bit_of_everything.swagger.json
generated
vendored
Executable file
@ -0,0 +1,933 @@
|
||||
{
|
||||
"swagger": "2.0",
|
||||
"info": {
|
||||
"title": "A Bit of Everything",
|
||||
"version": "1.0",
|
||||
"contact": {
|
||||
"name": "gRPC-Gateway project",
|
||||
"url": "https://github.com/grpc-ecosystem/grpc-gateway",
|
||||
"email": "none@example.com"
|
||||
}
|
||||
},
|
||||
"schemes": [
|
||||
"http",
|
||||
"https",
|
||||
"wss"
|
||||
],
|
||||
"consumes": [
|
||||
"application/json",
|
||||
"application/x-foo-mime"
|
||||
],
|
||||
"produces": [
|
||||
"application/json",
|
||||
"application/x-foo-mime"
|
||||
],
|
||||
"paths": {
|
||||
"/v1/example/a_bit_of_everything": {
|
||||
"post": {
|
||||
"operationId": "CreateBody",
|
||||
"responses": {
|
||||
"200": {
|
||||
"description": "",
|
||||
"schema": {
|
||||
"$ref": "#/definitions/examplepbABitOfEverything"
|
||||
}
|
||||
}
|
||||
},
|
||||
"parameters": [
|
||||
{
|
||||
"name": "body",
|
||||
"in": "body",
|
||||
"required": true,
|
||||
"schema": {
|
||||
"$ref": "#/definitions/examplepbABitOfEverything"
|
||||
}
|
||||
}
|
||||
],
|
||||
"tags": [
|
||||
"ABitOfEverythingService"
|
||||
]
|
||||
}
|
||||
},
|
||||
"/v1/example/a_bit_of_everything/echo/{value}": {
|
||||
"get": {
|
||||
"summary": "Summary: Echo rpc",
|
||||
"description": "Description Echo",
|
||||
"operationId": "Echo",
|
||||
"responses": {
|
||||
"200": {
|
||||
"description": "",
|
||||
"schema": {
|
||||
"$ref": "#/definitions/subStringMessage"
|
||||
}
|
||||
}
|
||||
},
|
||||
"parameters": [
|
||||
{
|
||||
"name": "value",
|
||||
"in": "path",
|
||||
"required": true,
|
||||
"type": "string"
|
||||
}
|
||||
],
|
||||
"tags": [
|
||||
"echo service",
|
||||
"echo rpc"
|
||||
],
|
||||
"externalDocs": {
|
||||
"description": "Find out more Echo",
|
||||
"url": "https://github.com/grpc-ecosystem/grpc-gateway"
|
||||
}
|
||||
}
|
||||
},
|
||||
"/v1/example/a_bit_of_everything/query/{uuid}": {
|
||||
"get": {
|
||||
"operationId": "GetQuery",
|
||||
"responses": {
|
||||
"200": {
|
||||
"description": "",
|
||||
"schema": {
|
||||
"$ref": "#/definitions/protobufEmpty"
|
||||
}
|
||||
}
|
||||
},
|
||||
"parameters": [
|
||||
{
|
||||
"name": "uuid",
|
||||
"in": "path",
|
||||
"required": true,
|
||||
"type": "string"
|
||||
},
|
||||
{
|
||||
"name": "single_nested.name",
|
||||
"description": "name is nested field.",
|
||||
"in": "query",
|
||||
"required": false,
|
||||
"type": "string"
|
||||
},
|
||||
{
|
||||
"name": "single_nested.amount",
|
||||
"in": "query",
|
||||
"required": false,
|
||||
"type": "integer",
|
||||
"format": "int64"
|
||||
},
|
||||
{
|
||||
"name": "single_nested.ok",
|
||||
"description": " - FALSE: FALSE is false.\n - TRUE: TRUE is true.",
|
||||
"in": "query",
|
||||
"required": false,
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"FALSE",
|
||||
"TRUE"
|
||||
],
|
||||
"default": "FALSE"
|
||||
},
|
||||
{
|
||||
"name": "float_value",
|
||||
"in": "query",
|
||||
"required": false,
|
||||
"type": "number",
|
||||
"format": "float"
|
||||
},
|
||||
{
|
||||
"name": "double_value",
|
||||
"in": "query",
|
||||
"required": false,
|
||||
"type": "number",
|
||||
"format": "double"
|
||||
},
|
||||
{
|
||||
"name": "int64_value",
|
||||
"in": "query",
|
||||
"required": false,
|
||||
"type": "string",
|
||||
"format": "int64"
|
||||
},
|
||||
{
|
||||
"name": "uint64_value",
|
||||
"in": "query",
|
||||
"required": false,
|
||||
"type": "string",
|
||||
"format": "uint64"
|
||||
},
|
||||
{
|
||||
"name": "int32_value",
|
||||
"in": "query",
|
||||
"required": false,
|
||||
"type": "integer",
|
||||
"format": "int32"
|
||||
},
|
||||
{
|
||||
"name": "fixed64_value",
|
||||
"in": "query",
|
||||
"required": false,
|
||||
"type": "string",
|
||||
"format": "uint64"
|
||||
},
|
||||
{
|
||||
"name": "fixed32_value",
|
||||
"in": "query",
|
||||
"required": false,
|
||||
"type": "integer",
|
||||
"format": "int64"
|
||||
},
|
||||
{
|
||||
"name": "bool_value",
|
||||
"in": "query",
|
||||
"required": false,
|
||||
"type": "boolean",
|
||||
"format": "boolean"
|
||||
},
|
||||
{
|
||||
"name": "string_value",
|
||||
"in": "query",
|
||||
"required": false,
|
||||
"type": "string"
|
||||
},
|
||||
{
|
||||
"name": "bytes_value",
|
||||
"in": "query",
|
||||
"required": false,
|
||||
"type": "string",
|
||||
"format": "byte"
|
||||
},
|
||||
{
|
||||
"name": "uint32_value",
|
||||
"in": "query",
|
||||
"required": false,
|
||||
"type": "integer",
|
||||
"format": "int64"
|
||||
},
|
||||
{
|
||||
"name": "enum_value",
|
||||
"description": " - ZERO: ZERO means 0\n - ONE: ONE means 1",
|
||||
"in": "query",
|
||||
"required": false,
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"ZERO",
|
||||
"ONE"
|
||||
],
|
||||
"default": "ZERO"
|
||||
},
|
||||
{
|
||||
"name": "sfixed32_value",
|
||||
"in": "query",
|
||||
"required": false,
|
||||
"type": "integer",
|
||||
"format": "int32"
|
||||
},
|
||||
{
|
||||
"name": "sfixed64_value",
|
||||
"in": "query",
|
||||
"required": false,
|
||||
"type": "string",
|
||||
"format": "int64"
|
||||
},
|
||||
{
|
||||
"name": "sint32_value",
|
||||
"in": "query",
|
||||
"required": false,
|
||||
"type": "integer",
|
||||
"format": "int32"
|
||||
},
|
||||
{
|
||||
"name": "sint64_value",
|
||||
"in": "query",
|
||||
"required": false,
|
||||
"type": "string",
|
||||
"format": "int64"
|
||||
},
|
||||
{
|
||||
"name": "repeated_string_value",
|
||||
"in": "query",
|
||||
"required": false,
|
||||
"type": "array",
|
||||
"items": {
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "oneof_string",
|
||||
"in": "query",
|
||||
"required": false,
|
||||
"type": "string"
|
||||
},
|
||||
{
|
||||
"name": "nonConventionalNameValue",
|
||||
"in": "query",
|
||||
"required": false,
|
||||
"type": "string"
|
||||
},
|
||||
{
|
||||
"name": "timestamp_value",
|
||||
"in": "query",
|
||||
"required": false,
|
||||
"type": "string",
|
||||
"format": "date-time"
|
||||
},
|
||||
{
|
||||
"name": "repeated_enum_value",
|
||||
"description": "repeated enum value. it is comma-separated in query.\n\n - ZERO: ZERO means 0\n - ONE: ONE means 1",
|
||||
"in": "query",
|
||||
"required": false,
|
||||
"type": "array",
|
||||
"items": {
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"ZERO",
|
||||
"ONE"
|
||||
]
|
||||
}
|
||||
}
|
||||
],
|
||||
"tags": [
|
||||
"ABitOfEverythingService"
|
||||
],
|
||||
"deprecated": true,
|
||||
"externalDocs": {
|
||||
"description": "Find out more about GetQuery",
|
||||
"url": "https://github.com/grpc-ecosystem/grpc-gateway"
|
||||
}
|
||||
}
|
||||
},
|
||||
"/v1/example/a_bit_of_everything/{float_value}/{double_value}/{int64_value}/separator/{uint64_value}/{int32_value}/{fixed64_value}/{fixed32_value}/{bool_value}/{string_value}/{uint32_value}/{sfixed32_value}/{sfixed64_value}/{sint32_value}/{sint64_value}/{nonConventionalNameValue}": {
|
||||
"post": {
|
||||
"operationId": "Create",
|
||||
"responses": {
|
||||
"200": {
|
||||
"description": "",
|
||||
"schema": {
|
||||
"$ref": "#/definitions/examplepbABitOfEverything"
|
||||
}
|
||||
}
|
||||
},
|
||||
"parameters": [
|
||||
{
|
||||
"name": "float_value",
|
||||
"in": "path",
|
||||
"required": true,
|
||||
"type": "number",
|
||||
"format": "float"
|
||||
},
|
||||
{
|
||||
"name": "double_value",
|
||||
"in": "path",
|
||||
"required": true,
|
||||
"type": "number",
|
||||
"format": "double"
|
||||
},
|
||||
{
|
||||
"name": "int64_value",
|
||||
"in": "path",
|
||||
"required": true,
|
||||
"type": "string",
|
||||
"format": "int64"
|
||||
},
|
||||
{
|
||||
"name": "uint64_value",
|
||||
"in": "path",
|
||||
"required": true,
|
||||
"type": "string",
|
||||
"format": "uint64"
|
||||
},
|
||||
{
|
||||
"name": "int32_value",
|
||||
"in": "path",
|
||||
"required": true,
|
||||
"type": "integer",
|
||||
"format": "int32"
|
||||
},
|
||||
{
|
||||
"name": "fixed64_value",
|
||||
"in": "path",
|
||||
"required": true,
|
||||
"type": "string",
|
||||
"format": "uint64"
|
||||
},
|
||||
{
|
||||
"name": "fixed32_value",
|
||||
"in": "path",
|
||||
"required": true,
|
||||
"type": "integer",
|
||||
"format": "int64"
|
||||
},
|
||||
{
|
||||
"name": "bool_value",
|
||||
"in": "path",
|
||||
"required": true,
|
||||
"type": "boolean",
|
||||
"format": "boolean"
|
||||
},
|
||||
{
|
||||
"name": "string_value",
|
||||
"in": "path",
|
||||
"required": true,
|
||||
"type": "string"
|
||||
},
|
||||
{
|
||||
"name": "uint32_value",
|
||||
"in": "path",
|
||||
"required": true,
|
||||
"type": "integer",
|
||||
"format": "int64"
|
||||
},
|
||||
{
|
||||
"name": "sfixed32_value",
|
||||
"in": "path",
|
||||
"required": true,
|
||||
"type": "integer",
|
||||
"format": "int32"
|
||||
},
|
||||
{
|
||||
"name": "sfixed64_value",
|
||||
"in": "path",
|
||||
"required": true,
|
||||
"type": "string",
|
||||
"format": "int64"
|
||||
},
|
||||
{
|
||||
"name": "sint32_value",
|
||||
"in": "path",
|
||||
"required": true,
|
||||
"type": "integer",
|
||||
"format": "int32"
|
||||
},
|
||||
{
|
||||
"name": "sint64_value",
|
||||
"in": "path",
|
||||
"required": true,
|
||||
"type": "string",
|
||||
"format": "int64"
|
||||
},
|
||||
{
|
||||
"name": "nonConventionalNameValue",
|
||||
"in": "path",
|
||||
"required": true,
|
||||
"type": "string"
|
||||
}
|
||||
],
|
||||
"tags": [
|
||||
"ABitOfEverythingService"
|
||||
]
|
||||
}
|
||||
},
|
||||
"/v1/example/a_bit_of_everything/{single_nested.name}": {
|
||||
"post": {
|
||||
"operationId": "DeepPathEcho",
|
||||
"responses": {
|
||||
"200": {
|
||||
"description": "",
|
||||
"schema": {
|
||||
"$ref": "#/definitions/examplepbABitOfEverything"
|
||||
}
|
||||
}
|
||||
},
|
||||
"parameters": [
|
||||
{
|
||||
"name": "single_nested.name",
|
||||
"in": "path",
|
||||
"required": true,
|
||||
"type": "string"
|
||||
},
|
||||
{
|
||||
"name": "body",
|
||||
"in": "body",
|
||||
"required": true,
|
||||
"schema": {
|
||||
"$ref": "#/definitions/examplepbABitOfEverything"
|
||||
}
|
||||
}
|
||||
],
|
||||
"tags": [
|
||||
"ABitOfEverythingService"
|
||||
]
|
||||
}
|
||||
},
|
||||
"/v1/example/a_bit_of_everything/{uuid}": {
|
||||
"get": {
|
||||
"operationId": "Lookup",
|
||||
"responses": {
|
||||
"200": {
|
||||
"description": "",
|
||||
"schema": {
|
||||
"$ref": "#/definitions/examplepbABitOfEverything"
|
||||
}
|
||||
}
|
||||
},
|
||||
"parameters": [
|
||||
{
|
||||
"name": "uuid",
|
||||
"in": "path",
|
||||
"required": true,
|
||||
"type": "string"
|
||||
}
|
||||
],
|
||||
"tags": [
|
||||
"ABitOfEverythingService"
|
||||
]
|
||||
},
|
||||
"delete": {
|
||||
"operationId": "Delete",
|
||||
"responses": {
|
||||
"200": {
|
||||
"description": "",
|
||||
"schema": {
|
||||
"$ref": "#/definitions/protobufEmpty"
|
||||
}
|
||||
}
|
||||
},
|
||||
"parameters": [
|
||||
{
|
||||
"name": "uuid",
|
||||
"in": "path",
|
||||
"required": true,
|
||||
"type": "string"
|
||||
}
|
||||
],
|
||||
"tags": [
|
||||
"ABitOfEverythingService"
|
||||
],
|
||||
"security": [
|
||||
{
|
||||
"ApiKeyAuth": [],
|
||||
"OAuth2": [
|
||||
"read",
|
||||
"write"
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
"put": {
|
||||
"operationId": "Update",
|
||||
"responses": {
|
||||
"200": {
|
||||
"description": "",
|
||||
"schema": {
|
||||
"$ref": "#/definitions/protobufEmpty"
|
||||
}
|
||||
}
|
||||
},
|
||||
"parameters": [
|
||||
{
|
||||
"name": "uuid",
|
||||
"in": "path",
|
||||
"required": true,
|
||||
"type": "string"
|
||||
},
|
||||
{
|
||||
"name": "body",
|
||||
"in": "body",
|
||||
"required": true,
|
||||
"schema": {
|
||||
"$ref": "#/definitions/examplepbABitOfEverything"
|
||||
}
|
||||
}
|
||||
],
|
||||
"tags": [
|
||||
"ABitOfEverythingService"
|
||||
]
|
||||
}
|
||||
},
|
||||
"/v2/example/echo": {
|
||||
"get": {
|
||||
"summary": "Summary: Echo rpc",
|
||||
"description": "Description Echo",
|
||||
"operationId": "Echo3",
|
||||
"responses": {
|
||||
"200": {
|
||||
"description": "",
|
||||
"schema": {
|
||||
"$ref": "#/definitions/subStringMessage"
|
||||
}
|
||||
}
|
||||
},
|
||||
"parameters": [
|
||||
{
|
||||
"name": "value",
|
||||
"in": "query",
|
||||
"required": false,
|
||||
"type": "string"
|
||||
}
|
||||
],
|
||||
"tags": [
|
||||
"echo service",
|
||||
"echo rpc"
|
||||
],
|
||||
"externalDocs": {
|
||||
"description": "Find out more Echo",
|
||||
"url": "https://github.com/grpc-ecosystem/grpc-gateway"
|
||||
}
|
||||
},
|
||||
"post": {
|
||||
"summary": "Summary: Echo rpc",
|
||||
"description": "Description Echo",
|
||||
"operationId": "Echo2",
|
||||
"responses": {
|
||||
"200": {
|
||||
"description": "",
|
||||
"schema": {
|
||||
"$ref": "#/definitions/subStringMessage"
|
||||
}
|
||||
}
|
||||
},
|
||||
"parameters": [
|
||||
{
|
||||
"name": "body",
|
||||
"in": "body",
|
||||
"required": true,
|
||||
"schema": {
|
||||
"type": "string"
|
||||
}
|
||||
}
|
||||
],
|
||||
"tags": [
|
||||
"echo service",
|
||||
"echo rpc"
|
||||
],
|
||||
"externalDocs": {
|
||||
"description": "Find out more Echo",
|
||||
"url": "https://github.com/grpc-ecosystem/grpc-gateway"
|
||||
}
|
||||
}
|
||||
},
|
||||
"/v2/example/empty": {
|
||||
"get": {
|
||||
"operationId": "Empty",
|
||||
"responses": {
|
||||
"200": {
|
||||
"description": "",
|
||||
"schema": {
|
||||
"$ref": "#/definitions/protobufEmpty"
|
||||
}
|
||||
}
|
||||
},
|
||||
"tags": [
|
||||
"camelCaseServiceName"
|
||||
]
|
||||
}
|
||||
},
|
||||
"/v2/example/errorwithdetails": {
|
||||
"get": {
|
||||
"operationId": "ErrorWithDetails",
|
||||
"responses": {
|
||||
"200": {
|
||||
"description": "",
|
||||
"schema": {
|
||||
"$ref": "#/definitions/protobufEmpty"
|
||||
}
|
||||
}
|
||||
},
|
||||
"tags": [
|
||||
"ABitOfEverythingService"
|
||||
]
|
||||
}
|
||||
},
|
||||
"/v2/example/postwithemptybody/{name}": {
|
||||
"post": {
|
||||
"operationId": "PostWithEmptyBody",
|
||||
"responses": {
|
||||
"200": {
|
||||
"description": "",
|
||||
"schema": {
|
||||
"$ref": "#/definitions/protobufEmpty"
|
||||
}
|
||||
}
|
||||
},
|
||||
"parameters": [
|
||||
{
|
||||
"name": "name",
|
||||
"in": "path",
|
||||
"required": true,
|
||||
"type": "string"
|
||||
},
|
||||
{
|
||||
"name": "body",
|
||||
"in": "body",
|
||||
"required": true,
|
||||
"schema": {
|
||||
"$ref": "#/definitions/examplepbBody"
|
||||
}
|
||||
}
|
||||
],
|
||||
"tags": [
|
||||
"ABitOfEverythingService"
|
||||
]
|
||||
}
|
||||
},
|
||||
"/v2/example/timeout": {
|
||||
"get": {
|
||||
"operationId": "Timeout",
|
||||
"responses": {
|
||||
"200": {
|
||||
"description": "",
|
||||
"schema": {
|
||||
"$ref": "#/definitions/protobufEmpty"
|
||||
}
|
||||
}
|
||||
},
|
||||
"tags": [
|
||||
"ABitOfEverythingService"
|
||||
]
|
||||
}
|
||||
},
|
||||
"/v2/example/withbody/{id}": {
|
||||
"post": {
|
||||
"operationId": "GetMessageWithBody",
|
||||
"responses": {
|
||||
"200": {
|
||||
"description": "",
|
||||
"schema": {
|
||||
"$ref": "#/definitions/protobufEmpty"
|
||||
}
|
||||
}
|
||||
},
|
||||
"parameters": [
|
||||
{
|
||||
"name": "id",
|
||||
"in": "path",
|
||||
"required": true,
|
||||
"type": "string"
|
||||
},
|
||||
{
|
||||
"name": "body",
|
||||
"in": "body",
|
||||
"required": true,
|
||||
"schema": {
|
||||
"$ref": "#/definitions/examplepbBody"
|
||||
}
|
||||
}
|
||||
],
|
||||
"tags": [
|
||||
"ABitOfEverythingService"
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
"definitions": {
|
||||
"ABitOfEverythingNested": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"name": {
|
||||
"type": "string",
|
||||
"description": "name is nested field."
|
||||
},
|
||||
"amount": {
|
||||
"type": "integer",
|
||||
"format": "int64"
|
||||
},
|
||||
"ok": {
|
||||
"$ref": "#/definitions/NestedDeepEnum"
|
||||
}
|
||||
},
|
||||
"description": "Nested is nested type."
|
||||
},
|
||||
"NestedDeepEnum": {
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"FALSE",
|
||||
"TRUE"
|
||||
],
|
||||
"default": "FALSE",
|
||||
"description": "DeepEnum is one or zero.\n\n - FALSE: FALSE is false.\n - TRUE: TRUE is true."
|
||||
},
|
||||
"examplepbABitOfEverything": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"single_nested": {
|
||||
"$ref": "#/definitions/ABitOfEverythingNested"
|
||||
},
|
||||
"uuid": {
|
||||
"type": "string"
|
||||
},
|
||||
"nested": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"$ref": "#/definitions/ABitOfEverythingNested"
|
||||
}
|
||||
},
|
||||
"float_value": {
|
||||
"type": "number",
|
||||
"format": "float"
|
||||
},
|
||||
"double_value": {
|
||||
"type": "number",
|
||||
"format": "double"
|
||||
},
|
||||
"int64_value": {
|
||||
"type": "string",
|
||||
"format": "int64"
|
||||
},
|
||||
"uint64_value": {
|
||||
"type": "string",
|
||||
"format": "uint64"
|
||||
},
|
||||
"int32_value": {
|
||||
"type": "integer",
|
||||
"format": "int32"
|
||||
},
|
||||
"fixed64_value": {
|
||||
"type": "string",
|
||||
"format": "uint64"
|
||||
},
|
||||
"fixed32_value": {
|
||||
"type": "integer",
|
||||
"format": "int64"
|
||||
},
|
||||
"bool_value": {
|
||||
"type": "boolean",
|
||||
"format": "boolean"
|
||||
},
|
||||
"string_value": {
|
||||
"type": "string"
|
||||
},
|
||||
"bytes_value": {
|
||||
"type": "string",
|
||||
"format": "byte"
|
||||
},
|
||||
"uint32_value": {
|
||||
"type": "integer",
|
||||
"format": "int64"
|
||||
},
|
||||
"enum_value": {
|
||||
"$ref": "#/definitions/examplepbNumericEnum"
|
||||
},
|
||||
"sfixed32_value": {
|
||||
"type": "integer",
|
||||
"format": "int32"
|
||||
},
|
||||
"sfixed64_value": {
|
||||
"type": "string",
|
||||
"format": "int64"
|
||||
},
|
||||
"sint32_value": {
|
||||
"type": "integer",
|
||||
"format": "int32"
|
||||
},
|
||||
"sint64_value": {
|
||||
"type": "string",
|
||||
"format": "int64"
|
||||
},
|
||||
"repeated_string_value": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
"oneof_empty": {
|
||||
"$ref": "#/definitions/protobufEmpty"
|
||||
},
|
||||
"oneof_string": {
|
||||
"type": "string"
|
||||
},
|
||||
"map_value": {
|
||||
"type": "object",
|
||||
"additionalProperties": {
|
||||
"$ref": "#/definitions/examplepbNumericEnum"
|
||||
}
|
||||
},
|
||||
"mapped_string_value": {
|
||||
"type": "object",
|
||||
"additionalProperties": {
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
"mapped_nested_value": {
|
||||
"type": "object",
|
||||
"additionalProperties": {
|
||||
"$ref": "#/definitions/ABitOfEverythingNested"
|
||||
}
|
||||
},
|
||||
"nonConventionalNameValue": {
|
||||
"type": "string"
|
||||
},
|
||||
"timestamp_value": {
|
||||
"type": "string",
|
||||
"format": "date-time"
|
||||
},
|
||||
"repeated_enum_value": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"$ref": "#/definitions/examplepbNumericEnum"
|
||||
},
|
||||
"title": "repeated enum value. it is comma-separated in query"
|
||||
}
|
||||
},
|
||||
"title": "Intentionaly complicated message type to cover much features of Protobuf.\nNEXT ID: 30",
|
||||
"externalDocs": {
|
||||
"description": "Find out more about ABitOfEverything",
|
||||
"url": "https://github.com/grpc-ecosystem/grpc-gateway"
|
||||
}
|
||||
},
|
||||
"examplepbBody": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"name": {
|
||||
"type": "string"
|
||||
}
|
||||
}
|
||||
},
|
||||
"examplepbNumericEnum": {
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"ZERO",
|
||||
"ONE"
|
||||
],
|
||||
"default": "ZERO",
|
||||
"description": "NumericEnum is one or zero.\n\n - ZERO: ZERO means 0\n - ONE: ONE means 1"
|
||||
},
|
||||
"protobufEmpty": {
|
||||
"type": "object",
|
||||
"description": "service Foo {\n rpc Bar(google.protobuf.Empty) returns (google.protobuf.Empty);\n }\n\nThe JSON representation for `Empty` is empty JSON object `{}`.",
|
||||
"title": "A generic empty message that you can re-use to avoid defining duplicated\nempty messages in your APIs. A typical example is to use it as the request\nor the response type of an API method. For instance:"
|
||||
},
|
||||
"subStringMessage": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"value": {
|
||||
"type": "string"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"securityDefinitions": {
|
||||
"ApiKeyAuth": {
|
||||
"type": "apiKey",
|
||||
"name": "X-API-Key",
|
||||
"in": "header"
|
||||
},
|
||||
"BasicAuth": {
|
||||
"type": "basic"
|
||||
},
|
||||
"OAuth2": {
|
||||
"type": "oauth2",
|
||||
"flow": "accessCode",
|
||||
"authorizationUrl": "https://example.com/oauth/authorize",
|
||||
"tokenUrl": "https://example.com/oauth/token",
|
||||
"scopes": {
|
||||
"admin": "Grants read and write access to administrative information",
|
||||
"read": "Grants read access",
|
||||
"write": "Grants write access"
|
||||
}
|
||||
}
|
||||
},
|
||||
"security": [
|
||||
{
|
||||
"ApiKeyAuth": [],
|
||||
"BasicAuth": []
|
||||
},
|
||||
{
|
||||
"ApiKeyAuth": [],
|
||||
"OAuth2": [
|
||||
"read",
|
||||
"write"
|
||||
]
|
||||
}
|
||||
],
|
||||
"externalDocs": {
|
||||
"description": "More about gRPC-Gateway",
|
||||
"url": "https://github.com/grpc-ecosystem/grpc-gateway"
|
||||
}
|
||||
}
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user