update all

Signed-off-by: Vasiliy Tolstov <v.tolstov@unistack.org>
This commit is contained in:
2022-03-03 18:01:37 +03:00
parent 652d74cc3a
commit 2073a6b3f4
36 changed files with 731 additions and 817 deletions

View File

@@ -5,6 +5,8 @@ INC_CODEC=$(go list -f '{{ .Dir }}' -m go.unistack.org/micro/v3)
ARGS="-I${INC}"
CODEC_ARGS="-I${INC_CODEC}"
protoc $ARGS $CODEC_ARGS -Iproto --go_out=paths=source_relative:./proto/ proto/*.proto
protoc $ARGS $CODEC_ARGS -Iproto --go-micro_out=components="micro|http",debug=true,tag_path=./proto/,paths=source_relative:./proto/ proto/*.proto
protoc $ARGS $CODEC_ARGS -Iproto --go-micro_out=openapi_file=apidocs.swagger.json,components="openapiv3",debug=true,paths=source_relative:./proto/ proto/*.proto

View File

@@ -1,478 +1,207 @@
{
"openapi": "3.0.3",
"info": {
"title": "test title",
"description": "test desc",
"version": "0.0.5"
},
"servers": [
{
"url": "{proto}://{sub}.example.com/v1",
"description": "server",
"variables": {
"additionalProperties": [
{
"name": "proto",
"value": {
"enum": [
"http",
"https"
],
"default": "http",
"description": "protocols"
}
},
{
"name": "sub",
"value": {
"enum": [
"test",
"prod"
],
"default": "test",
"description": "subdomain"
}
}
]
}
},
{
"url": "https://other.example.com/v1",
"description": "other test server"
}
],
"paths": {
"path": [
{
"name": "/aml",
"value": {
"post": {
"tags": [
"TestService"
],
"operationId": "TestService_KzAmlRs",
"parameters": [
{
"parameter": {
"name": "kzAmlNewOnlineRs.rquid",
"in": "query",
"schema": {
"schema": {
"type": "string"
}
}
}
},
{
"parameter": {
"name": "kzAmlNewOnlineRs.rqtm",
"in": "query",
"schema": {
"schema": {
"type": "string"
}
}
}
},
{
"parameter": {
"name": "kzAmlNewOnlineRs.status.status_code",
"in": "query",
"schema": {
"schema": {
"type": "integer",
"format": "int64"
}
}
}
},
{
"parameter": {
"name": "kzAmlNewOnlineRs.terr_status",
"in": "query",
"schema": {
"schema": {
"type": "integer",
"format": "int64"
}
}
}
},
{
"parameter": {
"name": "kzAmlNewOnlineRs.aml_status",
"in": "query",
"schema": {
"schema": {
"type": "integer",
"format": "int64"
}
}
}
}
],
"responses": {
"responseOrReference": [
{
"name": "200",
"value": {
"response": {
"description": "OK",
"content": {
"additionalProperties": [
{
"name": "application/json",
"value": {
"schema": {
"reference": {
"Ref": "#/components/schemas/ResponseAml"
}
}
}
}
]
}
}
}
}
]
}
}
}
},
{
"name": "/users/image/upload",
"value": {
"post": {
"tags": [
"TestService"
],
"operationId": "TestService_UploadFile",
"parameters": [
{
"parameter": {
"name": "image",
"in": "query",
"schema": {
"schema": {
"type": "string",
"format": "bytes"
}
}
}
},
{
"parameter": {
"name": "file_name",
"in": "query",
"schema": {
"schema": {
"type": "string"
}
}
}
},
{
"parameter": {
"name": "doc_type",
"in": "query",
"schema": {
"schema": {
"type": "string"
}
}
}
}
],
"responses": {
"responseOrReference": [
{
"name": "200",
"value": {
"response": {
"description": "OK",
"content": {
"additionalProperties": [
{
"name": "application/json",
"value": {
"schema": {
"reference": {
"Ref": "#/components/schemas/ResponseImage"
}
}
}
}
]
}
}
}
}
]
}
}
}
},
{
"name": "/users/test",
"value": {
"get": {
"tags": [
"TestService"
],
"operationId": "TestEndpoint",
"parameters": [
{
"parameter": {
"name": "client_uid",
"in": "header",
"required": true,
"schema": {
"schema": {
"type": "string"
}
}
}
},
{
"parameter": {
"name": "csrftoken",
"in": "cookie",
"required": true,
"schema": {
"schema": {
"type": "string"
}
}
}
},
{
"parameter": {
"name": "id",
"in": "query",
"schema": {
"schema": {
"type": "string"
}
}
}
},
{
"parameter": {
"name": "client_uid",
"in": "query",
"schema": {
"schema": {
"type": "string"
}
}
}
}
],
"responses": {
"responseOrReference": [
{
"name": "200",
"value": {
"response": {
"description": "OK",
"content": {
"additionalProperties": [
{
"name": "application/json",
"value": {
"schema": {
"reference": {
"Ref": "#/components/schemas/Response"
}
}
}
}
]
}
}
}
}
]
}
}
}
},
{
"name": "/users/{id}",
"value": {
"get": {
"tags": [
"TestService"
],
"operationId": "TestService_UserByID",
"parameters": [
{
"parameter": {
"name": "id",
"in": "path",
"required": true,
"schema": {
"schema": {
"type": "string"
}
}
}
},
{
"parameter": {
"name": "client_uid",
"in": "query",
"schema": {
"schema": {
"type": "string"
}
}
}
}
],
"responses": {
"responseOrReference": [
{
"name": "200",
"value": {
"response": {
"description": "OK",
"content": {
"additionalProperties": [
{
"name": "application/json",
"value": {
"schema": {
"reference": {
"Ref": "#/components/schemas/Response"
}
}
}
}
]
}
}
}
}
]
}
}
}
},
{
"name": "/users/{id}/image",
"value": {
"get": {
"tags": [
"TestService"
],
"operationId": "TestService_UserImageByID",
"parameters": [
{
"parameter": {
"name": "id",
"in": "path",
"required": true,
"schema": {
"schema": {
"type": "string"
}
}
}
},
{
"parameter": {
"name": "client_uid",
"in": "query",
"schema": {
"schema": {
"type": "string"
}
}
}
}
],
"responses": {
"responseOrReference": [
{
"name": "200",
"value": {
"response": {
"description": "OK",
"content": {
"additionalProperties": [
{
"name": "application/octet-stream",
"value": {}
}
]
}
}
}
}
]
}
}
}
}
]
},
"components": {
"schemas": {
"additionalProperties": [
{
"name": "Response",
"value": {
"schema": {
"properties": {
"additionalProperties": [
{
"name": "encoded_id",
"value": {
"schema": {
"type": "string"
}
}
}
]
}
}
}
},
{
"name": "ResponseAml",
"value": {
"schema": {
"properties": {
"additionalProperties": [
{
"name": "resp",
"value": {
"schema": {
"type": "string"
}
}
}
]
}
}
}
},
{
"name": "ResponseImage",
"value": {
"schema": {
"properties": {}
}
}
}
]
}
},
"tags": [
{
"name": "TestService"
}
]
}
# Generated with protoc-gen-go-micro
openapi: 3.0.3
info:
title: test title
description: test desc
version: 0.0.5
servers:
- url: '{proto}://{sub}.example.com/v1'
description: server
variables:
proto:
enum:
- http
- https
default: http
description: protocols
sub:
enum:
- test
- prod
default: test
description: subdomain
- url: https://other.example.com/v1
description: other test server
paths:
/aml:
post:
tags:
- TestService
operationId: TestService_KzAmlRs
parameters:
- name: kzAmlNewOnlineRs.rquid
in: query
schema:
type: string
- name: kzAmlNewOnlineRs.rqtm
in: query
schema:
type: string
- name: kzAmlNewOnlineRs.status.status_code
in: query
schema:
type: integer
format: int64
- name: kzAmlNewOnlineRs.terr_status
in: query
schema:
type: integer
format: int64
- name: kzAmlNewOnlineRs.aml_status
in: query
schema:
type: integer
format: int64
responses:
"200":
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/ResponseAml'
/users/image/upload:
post:
tags:
- TestService
operationId: TestService_UploadFile
parameters:
- name: image
in: query
schema:
type: string
format: bytes
- name: file_name
in: query
schema:
type: string
- name: doc_type
in: query
schema:
type: string
responses:
"200":
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/ResponseImage'
/users/multipart:
post:
tags:
- TestService
operationId: TestMultipart
requestBody:
content:
multipart/form-data:
schema:
$ref: '#/components/schemas/MultipartReq'
required: true
responses:
"200":
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/MultipartRsp'
/users/test:
get:
tags:
- TestService
operationId: TestEndpoint
parameters:
- name: client_uid
in: header
required: true
schema:
type: string
- name: csrftoken
in: cookie
required: true
schema:
type: string
- name: id
in: query
schema:
type: string
- name: client_uid
in: query
schema:
type: string
responses:
"200":
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/Response'
/users/{id}:
get:
tags:
- TestService
operationId: TestService_UserByID
parameters:
- name: id
in: path
required: true
schema:
type: string
- name: client_uid
in: query
schema:
type: string
responses:
"200":
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/Response'
/users/{id}/image:
get:
tags:
- TestService
operationId: TestService_UserImageByID
parameters:
- name: id
in: path
required: true
schema:
type: string
- name: client_uid
in: query
schema:
type: string
responses:
"200":
description: OK
content:
application/octet-stream: {}
components:
schemas:
MultipartReq:
type: object
properties:
prefix:
type: string
body:
type: string
format: bytes
MultipartRsp:
type: object
properties: {}
Response:
type: object
properties:
encoded_id:
type: string
ResponseAml:
type: object
properties:
resp:
type: string
ResponseImage:
type: object
properties: {}
tags:
- name: TestService

View File

@@ -1,21 +1,20 @@
// Code generated by protoc-gen-go. DO NOT EDIT.
// versions:
// protoc-gen-go v1.26.0
// protoc v3.17.3
// protoc v3.19.4
// source: test.proto
package pb
import (
reflect "reflect"
sync "sync"
_ "go.unistack.org/micro-proto/v3/api"
_ "go.unistack.org/micro-proto/v3/openapiv3"
_ "go.unistack.org/micro-proto/v3/tag"
codec "go.unistack.org/micro/v3/codec"
protoreflect "google.golang.org/protobuf/reflect/protoreflect"
protoimpl "google.golang.org/protobuf/runtime/protoimpl"
reflect "reflect"
sync "sync"
)
const (
@@ -25,6 +24,99 @@ const (
_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
)
type MultipartReq struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
Prefix string `protobuf:"bytes,1,opt,name=prefix,proto3" json:"prefix,omitempty"`
Body []byte `protobuf:"bytes,2,opt,name=body,proto3" json:"body,omitempty"`
}
func (x *MultipartReq) Reset() {
*x = MultipartReq{}
if protoimpl.UnsafeEnabled {
mi := &file_test_proto_msgTypes[0]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *MultipartReq) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*MultipartReq) ProtoMessage() {}
func (x *MultipartReq) ProtoReflect() protoreflect.Message {
mi := &file_test_proto_msgTypes[0]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use MultipartReq.ProtoReflect.Descriptor instead.
func (*MultipartReq) Descriptor() ([]byte, []int) {
return file_test_proto_rawDescGZIP(), []int{0}
}
func (x *MultipartReq) GetPrefix() string {
if x != nil {
return x.Prefix
}
return ""
}
func (x *MultipartReq) GetBody() []byte {
if x != nil {
return x.Body
}
return nil
}
type MultipartRsp struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
}
func (x *MultipartRsp) Reset() {
*x = MultipartRsp{}
if protoimpl.UnsafeEnabled {
mi := &file_test_proto_msgTypes[1]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *MultipartRsp) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*MultipartRsp) ProtoMessage() {}
func (x *MultipartRsp) ProtoReflect() protoreflect.Message {
mi := &file_test_proto_msgTypes[1]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use MultipartRsp.ProtoReflect.Descriptor instead.
func (*MultipartRsp) Descriptor() ([]byte, []int) {
return file_test_proto_rawDescGZIP(), []int{1}
}
type RequestAml struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
@@ -36,7 +128,7 @@ type RequestAml struct {
func (x *RequestAml) Reset() {
*x = RequestAml{}
if protoimpl.UnsafeEnabled {
mi := &file_test_proto_msgTypes[0]
mi := &file_test_proto_msgTypes[2]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -49,7 +141,7 @@ func (x *RequestAml) String() string {
func (*RequestAml) ProtoMessage() {}
func (x *RequestAml) ProtoReflect() protoreflect.Message {
mi := &file_test_proto_msgTypes[0]
mi := &file_test_proto_msgTypes[2]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -62,7 +154,7 @@ func (x *RequestAml) ProtoReflect() protoreflect.Message {
// Deprecated: Use RequestAml.ProtoReflect.Descriptor instead.
func (*RequestAml) Descriptor() ([]byte, []int) {
return file_test_proto_rawDescGZIP(), []int{0}
return file_test_proto_rawDescGZIP(), []int{2}
}
func (x *RequestAml) GetKzAmlNewOnlineRs() *KZAmlNewOnlineRs {
@@ -87,7 +179,7 @@ type KZAmlNewOnlineRs struct {
func (x *KZAmlNewOnlineRs) Reset() {
*x = KZAmlNewOnlineRs{}
if protoimpl.UnsafeEnabled {
mi := &file_test_proto_msgTypes[1]
mi := &file_test_proto_msgTypes[3]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -100,7 +192,7 @@ func (x *KZAmlNewOnlineRs) String() string {
func (*KZAmlNewOnlineRs) ProtoMessage() {}
func (x *KZAmlNewOnlineRs) ProtoReflect() protoreflect.Message {
mi := &file_test_proto_msgTypes[1]
mi := &file_test_proto_msgTypes[3]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -113,7 +205,7 @@ func (x *KZAmlNewOnlineRs) ProtoReflect() protoreflect.Message {
// Deprecated: Use KZAmlNewOnlineRs.ProtoReflect.Descriptor instead.
func (*KZAmlNewOnlineRs) Descriptor() ([]byte, []int) {
return file_test_proto_rawDescGZIP(), []int{1}
return file_test_proto_rawDescGZIP(), []int{3}
}
func (x *KZAmlNewOnlineRs) GetRquid() string {
@@ -162,7 +254,7 @@ type Status struct {
func (x *Status) Reset() {
*x = Status{}
if protoimpl.UnsafeEnabled {
mi := &file_test_proto_msgTypes[2]
mi := &file_test_proto_msgTypes[4]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -175,7 +267,7 @@ func (x *Status) String() string {
func (*Status) ProtoMessage() {}
func (x *Status) ProtoReflect() protoreflect.Message {
mi := &file_test_proto_msgTypes[2]
mi := &file_test_proto_msgTypes[4]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -188,7 +280,7 @@ func (x *Status) ProtoReflect() protoreflect.Message {
// Deprecated: Use Status.ProtoReflect.Descriptor instead.
func (*Status) Descriptor() ([]byte, []int) {
return file_test_proto_rawDescGZIP(), []int{2}
return file_test_proto_rawDescGZIP(), []int{4}
}
func (x *Status) GetStatusCode() int64 {
@@ -209,7 +301,7 @@ type ResponseAml struct {
func (x *ResponseAml) Reset() {
*x = ResponseAml{}
if protoimpl.UnsafeEnabled {
mi := &file_test_proto_msgTypes[3]
mi := &file_test_proto_msgTypes[5]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -222,7 +314,7 @@ func (x *ResponseAml) String() string {
func (*ResponseAml) ProtoMessage() {}
func (x *ResponseAml) ProtoReflect() protoreflect.Message {
mi := &file_test_proto_msgTypes[3]
mi := &file_test_proto_msgTypes[5]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -235,7 +327,7 @@ func (x *ResponseAml) ProtoReflect() protoreflect.Message {
// Deprecated: Use ResponseAml.ProtoReflect.Descriptor instead.
func (*ResponseAml) Descriptor() ([]byte, []int) {
return file_test_proto_rawDescGZIP(), []int{3}
return file_test_proto_rawDescGZIP(), []int{5}
}
func (x *ResponseAml) GetResp() string {
@@ -258,7 +350,7 @@ type RequestImage struct {
func (x *RequestImage) Reset() {
*x = RequestImage{}
if protoimpl.UnsafeEnabled {
mi := &file_test_proto_msgTypes[4]
mi := &file_test_proto_msgTypes[6]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -271,7 +363,7 @@ func (x *RequestImage) String() string {
func (*RequestImage) ProtoMessage() {}
func (x *RequestImage) ProtoReflect() protoreflect.Message {
mi := &file_test_proto_msgTypes[4]
mi := &file_test_proto_msgTypes[6]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -284,7 +376,7 @@ func (x *RequestImage) ProtoReflect() protoreflect.Message {
// Deprecated: Use RequestImage.ProtoReflect.Descriptor instead.
func (*RequestImage) Descriptor() ([]byte, []int) {
return file_test_proto_rawDescGZIP(), []int{4}
return file_test_proto_rawDescGZIP(), []int{6}
}
func (x *RequestImage) GetImage() []byte {
@@ -317,7 +409,7 @@ type ResponseImage struct {
func (x *ResponseImage) Reset() {
*x = ResponseImage{}
if protoimpl.UnsafeEnabled {
mi := &file_test_proto_msgTypes[5]
mi := &file_test_proto_msgTypes[7]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -330,7 +422,7 @@ func (x *ResponseImage) String() string {
func (*ResponseImage) ProtoMessage() {}
func (x *ResponseImage) ProtoReflect() protoreflect.Message {
mi := &file_test_proto_msgTypes[5]
mi := &file_test_proto_msgTypes[7]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -343,7 +435,7 @@ func (x *ResponseImage) ProtoReflect() protoreflect.Message {
// Deprecated: Use ResponseImage.ProtoReflect.Descriptor instead.
func (*ResponseImage) Descriptor() ([]byte, []int) {
return file_test_proto_rawDescGZIP(), []int{5}
return file_test_proto_rawDescGZIP(), []int{7}
}
type Request struct {
@@ -351,13 +443,14 @@ type Request struct {
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
ClientUid string `protobuf:"bytes,2,opt,name=client_uid,json=clientUid,proto3" json:"client_uid,omitempty"`
}
func (x *Request) Reset() {
*x = Request{}
if protoimpl.UnsafeEnabled {
mi := &file_test_proto_msgTypes[6]
mi := &file_test_proto_msgTypes[8]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -370,7 +463,7 @@ func (x *Request) String() string {
func (*Request) ProtoMessage() {}
func (x *Request) ProtoReflect() protoreflect.Message {
mi := &file_test_proto_msgTypes[6]
mi := &file_test_proto_msgTypes[8]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -383,7 +476,7 @@ func (x *Request) ProtoReflect() protoreflect.Message {
// Deprecated: Use Request.ProtoReflect.Descriptor instead.
func (*Request) Descriptor() ([]byte, []int) {
return file_test_proto_rawDescGZIP(), []int{6}
return file_test_proto_rawDescGZIP(), []int{8}
}
func (x *Request) GetId() string {
@@ -393,6 +486,13 @@ func (x *Request) GetId() string {
return ""
}
func (x *Request) GetClientUid() string {
if x != nil {
return x.ClientUid
}
return ""
}
type Response struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
@@ -404,7 +504,7 @@ type Response struct {
func (x *Response) Reset() {
*x = Response{}
if protoimpl.UnsafeEnabled {
mi := &file_test_proto_msgTypes[7]
mi := &file_test_proto_msgTypes[9]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -417,7 +517,7 @@ func (x *Response) String() string {
func (*Response) ProtoMessage() {}
func (x *Response) ProtoReflect() protoreflect.Message {
mi := &file_test_proto_msgTypes[7]
mi := &file_test_proto_msgTypes[9]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -430,7 +530,7 @@ func (x *Response) ProtoReflect() protoreflect.Message {
// Deprecated: Use Response.ProtoReflect.Descriptor instead.
func (*Response) Descriptor() ([]byte, []int) {
return file_test_proto_rawDescGZIP(), []int{7}
return file_test_proto_rawDescGZIP(), []int{9}
}
func (x *Response) GetEncodedId() string {
@@ -449,77 +549,110 @@ var file_test_proto_rawDesc = []byte{
0x2f, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x0d, 0x74, 0x61,
0x67, 0x2f, 0x74, 0x61, 0x67, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1b, 0x6f, 0x70, 0x65,
0x6e, 0x61, 0x70, 0x69, 0x76, 0x33, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f,
0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x6d, 0x0a, 0x0a, 0x52, 0x65, 0x71, 0x75,
0x65, 0x73, 0x74, 0x41, 0x6d, 0x6c, 0x12, 0x5f, 0x0a, 0x10, 0x6b, 0x7a, 0x41, 0x6d, 0x6c, 0x4e,
0x65, 0x77, 0x4f, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x52, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b,
0x32, 0x16, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x4b, 0x5a, 0x41, 0x6d, 0x6c, 0x4e, 0x65, 0x77,
0x4f, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x52, 0x73, 0x42, 0x1b, 0x9a, 0x84, 0x9e, 0x03, 0x16, 0x78,
0x6d, 0x6c, 0x3a, 0x22, 0x4b, 0x5a, 0x41, 0x6d, 0x6c, 0x4e, 0x65, 0x77, 0x4f, 0x6e, 0x6c, 0x69,
0x6e, 0x65, 0x52, 0x73, 0x22, 0x52, 0x10, 0x6b, 0x7a, 0x41, 0x6d, 0x6c, 0x4e, 0x65, 0x77, 0x4f,
0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x52, 0x73, 0x22, 0x85, 0x02, 0x0a, 0x10, 0x4b, 0x5a, 0x41, 0x6d,
0x6c, 0x4e, 0x65, 0x77, 0x4f, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x52, 0x73, 0x12, 0x26, 0x0a, 0x05,
0x72, 0x71, 0x75, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x10, 0x9a, 0x84, 0x9e,
0x03, 0x0b, 0x78, 0x6d, 0x6c, 0x3a, 0x22, 0x52, 0x71, 0x55, 0x49, 0x44, 0x22, 0x52, 0x05, 0x72,
0x71, 0x75, 0x69, 0x64, 0x12, 0x23, 0x0a, 0x04, 0x72, 0x71, 0x74, 0x6d, 0x18, 0x02, 0x20, 0x01,
0x28, 0x09, 0x42, 0x0f, 0x9a, 0x84, 0x9e, 0x03, 0x0a, 0x78, 0x6d, 0x6c, 0x3a, 0x22, 0x52, 0x71,
0x54, 0x6d, 0x22, 0x52, 0x04, 0x72, 0x71, 0x74, 0x6d, 0x12, 0x37, 0x0a, 0x06, 0x73, 0x74, 0x61,
0x74, 0x75, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x74, 0x65, 0x73, 0x74,
0x2e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x42, 0x11, 0x9a, 0x84, 0x9e, 0x03, 0x0c, 0x78, 0x6d,
0x6c, 0x3a, 0x22, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74,
0x75, 0x73, 0x12, 0x36, 0x0a, 0x0b, 0x74, 0x65, 0x72, 0x72, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75,
0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x42, 0x15, 0x9a, 0x84, 0x9e, 0x03, 0x10, 0x78, 0x6d,
0x6c, 0x3a, 0x22, 0x54, 0x65, 0x72, 0x72, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, 0x52, 0x0a,
0x74, 0x65, 0x72, 0x72, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x33, 0x0a, 0x0a, 0x61, 0x6d,
0x6c, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x42, 0x14,
0x9a, 0x84, 0x9e, 0x03, 0x0f, 0x78, 0x6d, 0x6c, 0x3a, 0x22, 0x41, 0x4d, 0x4c, 0x53, 0x74, 0x61,
0x74, 0x75, 0x73, 0x22, 0x52, 0x09, 0x61, 0x6d, 0x6c, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22,
0x40, 0x0a, 0x06, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x36, 0x0a, 0x0b, 0x73, 0x74, 0x61,
0x74, 0x75, 0x73, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x42, 0x15,
0x9a, 0x84, 0x9e, 0x03, 0x10, 0x78, 0x6d, 0x6c, 0x3a, 0x22, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73,
0x43, 0x6f, 0x64, 0x65, 0x22, 0x52, 0x0a, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x43, 0x6f, 0x64,
0x65, 0x22, 0x21, 0x0a, 0x0b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x41, 0x6d, 0x6c,
0x12, 0x12, 0x0a, 0x04, 0x72, 0x65, 0x73, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04,
0x72, 0x65, 0x73, 0x70, 0x22, 0x5c, 0x0a, 0x0c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x49,
0x6d, 0x61, 0x67, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x18, 0x01, 0x20,
0x01, 0x28, 0x0c, 0x52, 0x05, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x66, 0x69,
0x6c, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x66,
0x69, 0x6c, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x64, 0x6f, 0x63, 0x5f, 0x74,
0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x64, 0x6f, 0x63, 0x54, 0x79,
0x70, 0x65, 0x22, 0x0f, 0x0a, 0x0d, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x49, 0x6d,
0x61, 0x67, 0x65, 0x22, 0x19, 0x0a, 0x07, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e,
0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x22, 0x45,
0x0a, 0x08, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x39, 0x0a, 0x0a, 0x65, 0x6e,
0x63, 0x6f, 0x64, 0x65, 0x64, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x1a,
0x9a, 0x84, 0x9e, 0x03, 0x15, 0x78, 0x6d, 0x6c, 0x3a, 0x22, 0x65, 0x6e, 0x63, 0x6f, 0x64, 0x65,
0x64, 0x5f, 0x69, 0x64, 0x2c, 0x61, 0x74, 0x74, 0x72, 0x22, 0x52, 0x09, 0x65, 0x6e, 0x63, 0x6f,
0x64, 0x65, 0x64, 0x49, 0x64, 0x32, 0xf2, 0x02, 0x0a, 0x0b, 0x54, 0x65, 0x73, 0x74, 0x53, 0x65,
0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x42, 0x0a, 0x0c, 0x54, 0x65, 0x73, 0x74, 0x45, 0x6e, 0x64,
0x70, 0x6f, 0x69, 0x6e, 0x74, 0x12, 0x0d, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x52, 0x65, 0x71,
0x75, 0x65, 0x73, 0x74, 0x1a, 0x0e, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x52, 0x65, 0x73, 0x70,
0x6f, 0x6e, 0x73, 0x65, 0x22, 0x13, 0xb2, 0xea, 0xff, 0xf9, 0x01, 0x0d, 0x12, 0x0b, 0x2f, 0x75,
0x73, 0x65, 0x72, 0x73, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x12, 0x3e, 0x0a, 0x08, 0x55, 0x73, 0x65,
0x72, 0x42, 0x79, 0x49, 0x44, 0x12, 0x0d, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x52, 0x65, 0x71,
0x75, 0x65, 0x73, 0x74, 0x1a, 0x0e, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x52, 0x65, 0x73, 0x70,
0x6f, 0x6e, 0x73, 0x65, 0x22, 0x13, 0xb2, 0xea, 0xff, 0xf9, 0x01, 0x0d, 0x12, 0x0b, 0x2f, 0x75,
0x73, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x7d, 0x12, 0x4d, 0x0a, 0x0d, 0x55, 0x73, 0x65,
0x72, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x42, 0x79, 0x49, 0x44, 0x12, 0x0d, 0x2e, 0x74, 0x65, 0x73,
0x74, 0x2e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x12, 0x2e, 0x6d, 0x69, 0x63, 0x72,
0x6f, 0x2e, 0x63, 0x6f, 0x64, 0x65, 0x63, 0x2e, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x22, 0x19, 0xb2,
0xea, 0xff, 0xf9, 0x01, 0x13, 0x12, 0x11, 0x2f, 0x75, 0x73, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x69,
0x64, 0x7d, 0x2f, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x12, 0x52, 0x0a, 0x0a, 0x55, 0x70, 0x6c, 0x6f,
0x61, 0x64, 0x46, 0x69, 0x6c, 0x65, 0x12, 0x12, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x52, 0x65,
0x71, 0x75, 0x65, 0x73, 0x74, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x1a, 0x13, 0x2e, 0x74, 0x65, 0x73,
0x74, 0x2e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x22,
0x1b, 0xb2, 0xea, 0xff, 0xf9, 0x01, 0x15, 0x22, 0x13, 0x2f, 0x75, 0x73, 0x65, 0x72, 0x73, 0x2f,
0x69, 0x6d, 0x61, 0x67, 0x65, 0x2f, 0x75, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x3c, 0x0a, 0x07,
0x4b, 0x7a, 0x41, 0x6d, 0x6c, 0x52, 0x73, 0x12, 0x10, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x52,
0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x41, 0x6d, 0x6c, 0x1a, 0x11, 0x2e, 0x74, 0x65, 0x73, 0x74,
0x2e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x41, 0x6d, 0x6c, 0x22, 0x0c, 0xb2, 0xea,
0xff, 0xf9, 0x01, 0x06, 0x22, 0x04, 0x2f, 0x61, 0x6d, 0x6c, 0x42, 0x30, 0x5a, 0x09, 0x2f, 0x70,
0x72, 0x6f, 0x74, 0x6f, 0x3b, 0x70, 0x62, 0xaa, 0x84, 0x9e, 0x03, 0x20, 0x12, 0x1e, 0x0a, 0x0a,
0x74, 0x65, 0x73, 0x74, 0x20, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x09, 0x74, 0x65, 0x73, 0x74,
0x20, 0x64, 0x65, 0x73, 0x63, 0x32, 0x05, 0x30, 0x2e, 0x30, 0x2e, 0x35, 0x62, 0x06, 0x70, 0x72,
0x6f, 0x74, 0x6f, 0x33,
0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x3a, 0x0a, 0x0c, 0x4d, 0x75, 0x6c, 0x74,
0x69, 0x70, 0x61, 0x72, 0x74, 0x52, 0x65, 0x71, 0x12, 0x16, 0x0a, 0x06, 0x70, 0x72, 0x65, 0x66,
0x69, 0x78, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78,
0x12, 0x12, 0x0a, 0x04, 0x62, 0x6f, 0x64, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x04,
0x62, 0x6f, 0x64, 0x79, 0x22, 0x0e, 0x0a, 0x0c, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x70, 0x61, 0x72,
0x74, 0x52, 0x73, 0x70, 0x22, 0x6d, 0x0a, 0x0a, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x41,
0x6d, 0x6c, 0x12, 0x5f, 0x0a, 0x10, 0x6b, 0x7a, 0x41, 0x6d, 0x6c, 0x4e, 0x65, 0x77, 0x4f, 0x6e,
0x6c, 0x69, 0x6e, 0x65, 0x52, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x74,
0x65, 0x73, 0x74, 0x2e, 0x4b, 0x5a, 0x41, 0x6d, 0x6c, 0x4e, 0x65, 0x77, 0x4f, 0x6e, 0x6c, 0x69,
0x6e, 0x65, 0x52, 0x73, 0x42, 0x1b, 0x9a, 0x84, 0x9e, 0x03, 0x16, 0x78, 0x6d, 0x6c, 0x3a, 0x22,
0x4b, 0x5a, 0x41, 0x6d, 0x6c, 0x4e, 0x65, 0x77, 0x4f, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x52, 0x73,
0x22, 0x52, 0x10, 0x6b, 0x7a, 0x41, 0x6d, 0x6c, 0x4e, 0x65, 0x77, 0x4f, 0x6e, 0x6c, 0x69, 0x6e,
0x65, 0x52, 0x73, 0x22, 0x85, 0x02, 0x0a, 0x10, 0x4b, 0x5a, 0x41, 0x6d, 0x6c, 0x4e, 0x65, 0x77,
0x4f, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x52, 0x73, 0x12, 0x26, 0x0a, 0x05, 0x72, 0x71, 0x75, 0x69,
0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x10, 0x9a, 0x84, 0x9e, 0x03, 0x0b, 0x78, 0x6d,
0x6c, 0x3a, 0x22, 0x52, 0x71, 0x55, 0x49, 0x44, 0x22, 0x52, 0x05, 0x72, 0x71, 0x75, 0x69, 0x64,
0x12, 0x23, 0x0a, 0x04, 0x72, 0x71, 0x74, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0f,
0x9a, 0x84, 0x9e, 0x03, 0x0a, 0x78, 0x6d, 0x6c, 0x3a, 0x22, 0x52, 0x71, 0x54, 0x6d, 0x22, 0x52,
0x04, 0x72, 0x71, 0x74, 0x6d, 0x12, 0x37, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18,
0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x53, 0x74, 0x61,
0x74, 0x75, 0x73, 0x42, 0x11, 0x9a, 0x84, 0x9e, 0x03, 0x0c, 0x78, 0x6d, 0x6c, 0x3a, 0x22, 0x53,
0x74, 0x61, 0x74, 0x75, 0x73, 0x22, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x36,
0x0a, 0x0b, 0x74, 0x65, 0x72, 0x72, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x04, 0x20,
0x01, 0x28, 0x03, 0x42, 0x15, 0x9a, 0x84, 0x9e, 0x03, 0x10, 0x78, 0x6d, 0x6c, 0x3a, 0x22, 0x54,
0x65, 0x72, 0x72, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, 0x52, 0x0a, 0x74, 0x65, 0x72, 0x72,
0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x33, 0x0a, 0x0a, 0x61, 0x6d, 0x6c, 0x5f, 0x73, 0x74,
0x61, 0x74, 0x75, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x42, 0x14, 0x9a, 0x84, 0x9e, 0x03,
0x0f, 0x78, 0x6d, 0x6c, 0x3a, 0x22, 0x41, 0x4d, 0x4c, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22,
0x52, 0x09, 0x61, 0x6d, 0x6c, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, 0x40, 0x0a, 0x06, 0x53,
0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x36, 0x0a, 0x0b, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x5f,
0x63, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x42, 0x15, 0x9a, 0x84, 0x9e, 0x03,
0x10, 0x78, 0x6d, 0x6c, 0x3a, 0x22, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x43, 0x6f, 0x64, 0x65,
0x22, 0x52, 0x0a, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x43, 0x6f, 0x64, 0x65, 0x22, 0x21, 0x0a,
0x0b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x41, 0x6d, 0x6c, 0x12, 0x12, 0x0a, 0x04,
0x72, 0x65, 0x73, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x72, 0x65, 0x73, 0x70,
0x22, 0x5c, 0x0a, 0x0c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x49, 0x6d, 0x61, 0x67, 0x65,
0x12, 0x14, 0x0a, 0x05, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52,
0x05, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x6e,
0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x66, 0x69, 0x6c, 0x65, 0x4e,
0x61, 0x6d, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x64, 0x6f, 0x63, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18,
0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x64, 0x6f, 0x63, 0x54, 0x79, 0x70, 0x65, 0x22, 0x0f,
0x0a, 0x0d, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x22,
0x38, 0x0a, 0x07, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64,
0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x6c,
0x69, 0x65, 0x6e, 0x74, 0x5f, 0x75, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09,
0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x55, 0x69, 0x64, 0x22, 0x45, 0x0a, 0x08, 0x52, 0x65, 0x73,
0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x39, 0x0a, 0x0a, 0x65, 0x6e, 0x63, 0x6f, 0x64, 0x65, 0x64,
0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x1a, 0x9a, 0x84, 0x9e, 0x03, 0x15,
0x78, 0x6d, 0x6c, 0x3a, 0x22, 0x65, 0x6e, 0x63, 0x6f, 0x64, 0x65, 0x64, 0x5f, 0x69, 0x64, 0x2c,
0x61, 0x74, 0x74, 0x72, 0x22, 0x52, 0x09, 0x65, 0x6e, 0x63, 0x6f, 0x64, 0x65, 0x64, 0x49, 0x64,
0x32, 0xf0, 0x04, 0x0a, 0x0b, 0x54, 0x65, 0x73, 0x74, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65,
0x12, 0x9a, 0x01, 0x0a, 0x0d, 0x54, 0x65, 0x73, 0x74, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x70, 0x61,
0x72, 0x74, 0x12, 0x12, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x70,
0x61, 0x72, 0x74, 0x52, 0x65, 0x71, 0x1a, 0x12, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x4d, 0x75,
0x6c, 0x74, 0x69, 0x70, 0x61, 0x72, 0x74, 0x52, 0x73, 0x70, 0x22, 0x61, 0xb2, 0xea, 0xff, 0xf9,
0x01, 0x15, 0x22, 0x10, 0x2f, 0x75, 0x73, 0x65, 0x72, 0x73, 0x2f, 0x6d, 0x75, 0x6c, 0x74, 0x69,
0x70, 0x61, 0x72, 0x74, 0x3a, 0x01, 0x2a, 0xaa, 0x84, 0x9e, 0x03, 0x41, 0x2a, 0x0d, 0x54, 0x65,
0x73, 0x74, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x70, 0x61, 0x72, 0x74, 0x3a, 0x30, 0x0a, 0x2e, 0x12,
0x2c, 0x0a, 0x2a, 0x0a, 0x13, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x70, 0x61, 0x72, 0x74, 0x2f, 0x66,
0x6f, 0x72, 0x6d, 0x2d, 0x64, 0x61, 0x74, 0x61, 0x12, 0x13, 0x0a, 0x11, 0x12, 0x0f, 0x0a, 0x0d,
0x2e, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x70, 0x61, 0x72, 0x74, 0x52, 0x65, 0x71, 0x12, 0xa2, 0x01,
0x0a, 0x0c, 0x54, 0x65, 0x73, 0x74, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x12, 0x0d,
0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x0e, 0x2e,
0x74, 0x65, 0x73, 0x74, 0x2e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x73, 0xb2,
0xea, 0xff, 0xf9, 0x01, 0x0d, 0x12, 0x0b, 0x2f, 0x75, 0x73, 0x65, 0x72, 0x73, 0x2f, 0x74, 0x65,
0x73, 0x74, 0xaa, 0x84, 0x9e, 0x03, 0x5b, 0x2a, 0x0c, 0x54, 0x65, 0x73, 0x74, 0x45, 0x6e, 0x64,
0x70, 0x6f, 0x69, 0x6e, 0x74, 0x32, 0x25, 0x0a, 0x23, 0x0a, 0x0a, 0x63, 0x6c, 0x69, 0x65, 0x6e,
0x74, 0x5f, 0x75, 0x69, 0x64, 0x12, 0x06, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x20, 0x01, 0x52,
0x0b, 0x0a, 0x09, 0xca, 0x01, 0x06, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x32, 0x24, 0x0a, 0x22,
0x0a, 0x09, 0x63, 0x73, 0x72, 0x66, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x06, 0x63, 0x6f, 0x6f,
0x6b, 0x69, 0x65, 0x20, 0x01, 0x52, 0x0b, 0x0a, 0x09, 0xca, 0x01, 0x06, 0x73, 0x74, 0x72, 0x69,
0x6e, 0x67, 0x12, 0x3e, 0x0a, 0x08, 0x55, 0x73, 0x65, 0x72, 0x42, 0x79, 0x49, 0x44, 0x12, 0x0d,
0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x0e, 0x2e,
0x74, 0x65, 0x73, 0x74, 0x2e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x13, 0xb2,
0xea, 0xff, 0xf9, 0x01, 0x0d, 0x12, 0x0b, 0x2f, 0x75, 0x73, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x69,
0x64, 0x7d, 0x12, 0x4d, 0x0a, 0x0d, 0x55, 0x73, 0x65, 0x72, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x42,
0x79, 0x49, 0x44, 0x12, 0x0d, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x52, 0x65, 0x71, 0x75, 0x65,
0x73, 0x74, 0x1a, 0x12, 0x2e, 0x6d, 0x69, 0x63, 0x72, 0x6f, 0x2e, 0x63, 0x6f, 0x64, 0x65, 0x63,
0x2e, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x22, 0x19, 0xb2, 0xea, 0xff, 0xf9, 0x01, 0x13, 0x12, 0x11,
0x2f, 0x75, 0x73, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x7d, 0x2f, 0x69, 0x6d, 0x61, 0x67,
0x65, 0x12, 0x52, 0x0a, 0x0a, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x46, 0x69, 0x6c, 0x65, 0x12,
0x12, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x49, 0x6d,
0x61, 0x67, 0x65, 0x1a, 0x13, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x52, 0x65, 0x73, 0x70, 0x6f,
0x6e, 0x73, 0x65, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x22, 0x1b, 0xb2, 0xea, 0xff, 0xf9, 0x01, 0x15,
0x22, 0x13, 0x2f, 0x75, 0x73, 0x65, 0x72, 0x73, 0x2f, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x2f, 0x75,
0x70, 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x3c, 0x0a, 0x07, 0x4b, 0x7a, 0x41, 0x6d, 0x6c, 0x52, 0x73,
0x12, 0x10, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x41,
0x6d, 0x6c, 0x1a, 0x11, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e,
0x73, 0x65, 0x41, 0x6d, 0x6c, 0x22, 0x0c, 0xb2, 0xea, 0xff, 0xf9, 0x01, 0x06, 0x22, 0x04, 0x2f,
0x61, 0x6d, 0x6c, 0x42, 0xdf, 0x01, 0x5a, 0x09, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x3b, 0x70,
0x62, 0xaa, 0x84, 0x9e, 0x03, 0xce, 0x01, 0x12, 0x1e, 0x0a, 0x0a, 0x74, 0x65, 0x73, 0x74, 0x20,
0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x09, 0x74, 0x65, 0x73, 0x74, 0x20, 0x64, 0x65, 0x73, 0x63,
0x32, 0x05, 0x30, 0x2e, 0x30, 0x2e, 0x35, 0x1a, 0x79, 0x0a, 0x1e, 0x7b, 0x70, 0x72, 0x6f, 0x74,
0x6f, 0x7d, 0x3a, 0x2f, 0x2f, 0x7b, 0x73, 0x75, 0x62, 0x7d, 0x2e, 0x65, 0x78, 0x61, 0x6d, 0x70,
0x6c, 0x65, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x76, 0x31, 0x12, 0x06, 0x73, 0x65, 0x72, 0x76, 0x65,
0x72, 0x1a, 0x4f, 0x0a, 0x27, 0x0a, 0x05, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x1e, 0x0a, 0x04,
0x68, 0x74, 0x74, 0x70, 0x0a, 0x05, 0x68, 0x74, 0x74, 0x70, 0x73, 0x12, 0x04, 0x68, 0x74, 0x74,
0x70, 0x1a, 0x09, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x73, 0x0a, 0x24, 0x0a, 0x03,
0x73, 0x75, 0x62, 0x12, 0x1d, 0x0a, 0x04, 0x74, 0x65, 0x73, 0x74, 0x0a, 0x04, 0x70, 0x72, 0x6f,
0x64, 0x12, 0x04, 0x74, 0x65, 0x73, 0x74, 0x1a, 0x09, 0x73, 0x75, 0x62, 0x64, 0x6f, 0x6d, 0x61,
0x69, 0x6e, 0x1a, 0x31, 0x0a, 0x1c, 0x68, 0x74, 0x74, 0x70, 0x73, 0x3a, 0x2f, 0x2f, 0x6f, 0x74,
0x68, 0x65, 0x72, 0x2e, 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x2e, 0x63, 0x6f, 0x6d, 0x2f,
0x76, 0x31, 0x12, 0x11, 0x6f, 0x74, 0x68, 0x65, 0x72, 0x20, 0x74, 0x65, 0x73, 0x74, 0x20, 0x73,
0x65, 0x72, 0x76, 0x65, 0x72, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
}
var (
@@ -534,39 +667,40 @@ func file_test_proto_rawDescGZIP() []byte {
return file_test_proto_rawDescData
}
var (
file_test_proto_msgTypes = make([]protoimpl.MessageInfo, 8)
file_test_proto_goTypes = []interface{}{
(*RequestAml)(nil), // 0: test.RequestAml
(*KZAmlNewOnlineRs)(nil), // 1: test.KZAmlNewOnlineRs
(*Status)(nil), // 2: test.Status
(*ResponseAml)(nil), // 3: test.ResponseAml
(*RequestImage)(nil), // 4: test.RequestImage
(*ResponseImage)(nil), // 5: test.ResponseImage
(*Request)(nil), // 6: test.Request
(*Response)(nil), // 7: test.Response
(*codec.Frame)(nil), // 8: micro.codec.Frame
}
)
var file_test_proto_msgTypes = make([]protoimpl.MessageInfo, 10)
var file_test_proto_goTypes = []interface{}{
(*MultipartReq)(nil), // 0: test.MultipartReq
(*MultipartRsp)(nil), // 1: test.MultipartRsp
(*RequestAml)(nil), // 2: test.RequestAml
(*KZAmlNewOnlineRs)(nil), // 3: test.KZAmlNewOnlineRs
(*Status)(nil), // 4: test.Status
(*ResponseAml)(nil), // 5: test.ResponseAml
(*RequestImage)(nil), // 6: test.RequestImage
(*ResponseImage)(nil), // 7: test.ResponseImage
(*Request)(nil), // 8: test.Request
(*Response)(nil), // 9: test.Response
(*codec.Frame)(nil), // 10: micro.codec.Frame
}
var file_test_proto_depIdxs = []int32{
1, // 0: test.RequestAml.kzAmlNewOnlineRs:type_name -> test.KZAmlNewOnlineRs
2, // 1: test.KZAmlNewOnlineRs.status:type_name -> test.Status
6, // 2: test.TestService.TestEndpoint:input_type -> test.Request
6, // 3: test.TestService.UserByID:input_type -> test.Request
6, // 4: test.TestService.UserImageByID:input_type -> test.Request
4, // 5: test.TestService.UploadFile:input_type -> test.RequestImage
0, // 6: test.TestService.KzAmlRs:input_type -> test.RequestAml
7, // 7: test.TestService.TestEndpoint:output_type -> test.Response
7, // 8: test.TestService.UserByID:output_type -> test.Response
8, // 9: test.TestService.UserImageByID:output_type -> micro.codec.Frame
5, // 10: test.TestService.UploadFile:output_type -> test.ResponseImage
3, // 11: test.TestService.KzAmlRs:output_type -> test.ResponseAml
7, // [7:12] is the sub-list for method output_type
2, // [2:7] is the sub-list for method input_type
2, // [2:2] is the sub-list for extension type_name
2, // [2:2] is the sub-list for extension extendee
0, // [0:2] is the sub-list for field type_name
3, // 0: test.RequestAml.kzAmlNewOnlineRs:type_name -> test.KZAmlNewOnlineRs
4, // 1: test.KZAmlNewOnlineRs.status:type_name -> test.Status
0, // 2: test.TestService.TestMultipart:input_type -> test.MultipartReq
8, // 3: test.TestService.TestEndpoint:input_type -> test.Request
8, // 4: test.TestService.UserByID:input_type -> test.Request
8, // 5: test.TestService.UserImageByID:input_type -> test.Request
6, // 6: test.TestService.UploadFile:input_type -> test.RequestImage
2, // 7: test.TestService.KzAmlRs:input_type -> test.RequestAml
1, // 8: test.TestService.TestMultipart:output_type -> test.MultipartRsp
9, // 9: test.TestService.TestEndpoint:output_type -> test.Response
9, // 10: test.TestService.UserByID:output_type -> test.Response
10, // 11: test.TestService.UserImageByID:output_type -> micro.codec.Frame
7, // 12: test.TestService.UploadFile:output_type -> test.ResponseImage
5, // 13: test.TestService.KzAmlRs:output_type -> test.ResponseAml
8, // [8:14] is the sub-list for method output_type
2, // [2:8] is the sub-list for method input_type
2, // [2:2] is the sub-list for extension type_name
2, // [2:2] is the sub-list for extension extendee
0, // [0:2] is the sub-list for field type_name
}
func init() { file_test_proto_init() }
@@ -576,7 +710,7 @@ func file_test_proto_init() {
}
if !protoimpl.UnsafeEnabled {
file_test_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*RequestAml); i {
switch v := v.(*MultipartReq); i {
case 0:
return &v.state
case 1:
@@ -588,7 +722,7 @@ func file_test_proto_init() {
}
}
file_test_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*KZAmlNewOnlineRs); i {
switch v := v.(*MultipartRsp); i {
case 0:
return &v.state
case 1:
@@ -600,7 +734,7 @@ func file_test_proto_init() {
}
}
file_test_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*Status); i {
switch v := v.(*RequestAml); i {
case 0:
return &v.state
case 1:
@@ -612,7 +746,7 @@ func file_test_proto_init() {
}
}
file_test_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*ResponseAml); i {
switch v := v.(*KZAmlNewOnlineRs); i {
case 0:
return &v.state
case 1:
@@ -624,7 +758,7 @@ func file_test_proto_init() {
}
}
file_test_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*RequestImage); i {
switch v := v.(*Status); i {
case 0:
return &v.state
case 1:
@@ -636,7 +770,7 @@ func file_test_proto_init() {
}
}
file_test_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*ResponseImage); i {
switch v := v.(*ResponseAml); i {
case 0:
return &v.state
case 1:
@@ -648,7 +782,7 @@ func file_test_proto_init() {
}
}
file_test_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*Request); i {
switch v := v.(*RequestImage); i {
case 0:
return &v.state
case 1:
@@ -660,6 +794,30 @@ func file_test_proto_init() {
}
}
file_test_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*ResponseImage); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_test_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*Request); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_test_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*Response); i {
case 0:
return &v.state
@@ -678,7 +836,7 @@ func file_test_proto_init() {
GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
RawDescriptor: file_test_proto_rawDesc,
NumEnums: 0,
NumMessages: 8,
NumMessages: 10,
NumExtensions: 0,
NumServices: 1,
},

View File

@@ -44,6 +44,30 @@ option (micro.openapiv3.openapiv3_swagger) = {
};
service TestService {
rpc TestMultipart(MultipartReq) returns (MultipartRsp) {
option (micro.api.http) = {
post: "/users/multipart"; body: "*";
};
option (micro.openapiv3.openapiv3_operation) = {
operation_id: "TestMultipart";
request_body: {
request_body: {
content: {
additional_properties: {
name: "multipart/form-data";
value: {
schema: {
reference: {
_ref: ".MultipartReq";
};
};
};
};
};
};
};
};
};
rpc TestEndpoint(Request) returns (Response) {
option (micro.api.http) = {
get: "/users/test"
@@ -98,6 +122,15 @@ service TestService {
}
};
message MultipartReq {
string prefix = 1;
bytes body = 2;
};
message MultipartRsp {
};
message RequestAml {
KZAmlNewOnlineRs kzAmlNewOnlineRs = 1 [(micro.tag.tags) = "xml:\"KZAmlNewOnlineRs\"" ];
}

View File

@@ -6,7 +6,6 @@ package pb
import (
context "context"
api "go.unistack.org/micro/v3/api"
client "go.unistack.org/micro/v3/client"
codec "go.unistack.org/micro/v3/codec"
@@ -16,6 +15,13 @@ var (
TestServiceName = "TestService"
TestServiceEndpoints = []api.Endpoint{
{
Name: "TestService.TestMultipart",
Path: []string{"/users/multipart"},
Method: []string{"POST"},
Body: "*",
Handler: "rpc",
},
{
Name: "TestService.TestEndpoint",
Path: []string{"/users/test"},
@@ -54,6 +60,7 @@ func NewTestServiceEndpoints() []api.Endpoint {
}
type TestServiceClient interface {
TestMultipart(ctx context.Context, req *MultipartReq, opts ...client.CallOption) (*MultipartRsp, error)
TestEndpoint(ctx context.Context, req *Request, opts ...client.CallOption) (*Response, error)
UserByID(ctx context.Context, req *Request, opts ...client.CallOption) (*Response, error)
UserImageByID(ctx context.Context, req *Request, opts ...client.CallOption) (*codec.Frame, error)
@@ -62,6 +69,7 @@ type TestServiceClient interface {
}
type TestServiceServer interface {
TestMultipart(ctx context.Context, req *MultipartReq, rsp *MultipartRsp) error
TestEndpoint(ctx context.Context, req *Request, rsp *Response) error
UserByID(ctx context.Context, req *Request, rsp *Response) error
UserImageByID(ctx context.Context, req *Request, rsp *codec.Frame) error

View File

@@ -6,14 +6,13 @@ package pb
import (
context "context"
http "net/http"
v3 "go.unistack.org/micro-client-http/v3"
v31 "go.unistack.org/micro-server-http/v3"
api "go.unistack.org/micro/v3/api"
client "go.unistack.org/micro/v3/client"
codec "go.unistack.org/micro/v3/codec"
server "go.unistack.org/micro/v3/server"
http "net/http"
)
type testServiceClient struct {
@@ -25,6 +24,20 @@ func NewTestServiceClient(name string, c client.Client) TestServiceClient {
return &testServiceClient{c: c, name: name}
}
func (c *testServiceClient) TestMultipart(ctx context.Context, req *MultipartReq, opts ...client.CallOption) (*MultipartRsp, error) {
opts = append(opts,
v3.Method(http.MethodPost),
v3.Path("/users/multipart"),
v3.Body("*"),
)
rsp := &MultipartRsp{}
err := c.c.Call(ctx, c.c.NewRequest(c.name, "TestService.TestMultipart", req), rsp, opts...)
if err != nil {
return nil, err
}
return rsp, nil
}
func (c *testServiceClient) TestEndpoint(ctx context.Context, req *Request, opts ...client.CallOption) (*Response, error) {
opts = append(opts,
v3.Method(http.MethodGet),
@@ -98,6 +111,10 @@ type testServiceServer struct {
TestServiceServer
}
func (h *testServiceServer) TestMultipart(ctx context.Context, req *MultipartReq, rsp *MultipartRsp) error {
return h.TestServiceServer.TestMultipart(ctx, req, rsp)
}
func (h *testServiceServer) TestEndpoint(ctx context.Context, req *Request, rsp *Response) error {
v31.FillRequest(ctx, req,
v31.Header("client_uid", "true"),
@@ -124,6 +141,7 @@ func (h *testServiceServer) KzAmlRs(ctx context.Context, req *RequestAml, rsp *R
func RegisterTestServiceServer(s server.Server, sh TestServiceServer, opts ...server.HandlerOption) error {
type testService interface {
TestMultipart(ctx context.Context, req *MultipartReq, rsp *MultipartRsp) error
TestEndpoint(ctx context.Context, req *Request, rsp *Response) error
UserByID(ctx context.Context, req *Request, rsp *Response) error
UserImageByID(ctx context.Context, req *Request, rsp *codec.Frame) error