Documentation
¶
Overview ¶
Package v1 is a reverse proxy.
It translates gRPC into RESTful JSON APIs.
Index ¶
- Variables
- func RegisterEchoServiceHandler(ctx context.Context, mux *runtime.ServeMux, conn *grpc.ClientConn) error
- func RegisterEchoServiceHandlerClient(ctx context.Context, mux *runtime.ServeMux, client EchoServiceClient) error
- func RegisterEchoServiceHandlerFromEndpoint(ctx context.Context, mux *runtime.ServeMux, endpoint string, ...) (err error)
- func RegisterEchoServiceHandlerServer(ctx context.Context, mux *runtime.ServeMux, server EchoServiceServer) error
- func RegisterEchoServiceServer(s grpc.ServiceRegistrar, srv EchoServiceServer)
- type CreateEchoRequest
- func (*CreateEchoRequest) Descriptor() ([]byte, []int)deprecated
- func (x *CreateEchoRequest) GetMessage() *wrapperspb.StringValue
- func (*CreateEchoRequest) ProtoMessage()
- func (x *CreateEchoRequest) ProtoReflect() protoreflect.Message
- func (x *CreateEchoRequest) Reset()
- func (x *CreateEchoRequest) String() string
- type CreateEchoResponse
- func (*CreateEchoResponse) Descriptor() ([]byte, []int)deprecated
- func (x *CreateEchoResponse) GetEcho() *wrapperspb.StringValue
- func (*CreateEchoResponse) ProtoMessage()
- func (x *CreateEchoResponse) ProtoReflect() protoreflect.Message
- func (x *CreateEchoResponse) Reset()
- func (x *CreateEchoResponse) String() string
- type DeleteEchoRequest
- func (*DeleteEchoRequest) Descriptor() ([]byte, []int)deprecated
- func (x *DeleteEchoRequest) GetId() *wrapperspb.Int64Value
- func (*DeleteEchoRequest) ProtoMessage()
- func (x *DeleteEchoRequest) ProtoReflect() protoreflect.Message
- func (x *DeleteEchoRequest) Reset()
- func (x *DeleteEchoRequest) String() string
- type DeleteEchoResponse
- func (*DeleteEchoResponse) Descriptor() ([]byte, []int)deprecated
- func (x *DeleteEchoResponse) GetResult() common.OperationResult
- func (*DeleteEchoResponse) ProtoMessage()
- func (x *DeleteEchoResponse) ProtoReflect() protoreflect.Message
- func (x *DeleteEchoResponse) Reset()
- func (x *DeleteEchoResponse) String() string
- type EchoRecord
- func (*EchoRecord) Descriptor() ([]byte, []int)deprecated
- func (x *EchoRecord) GetEcho() *wrapperspb.StringValue
- func (x *EchoRecord) GetEchoTime() *timestamppb.Timestamp
- func (x *EchoRecord) GetId() *wrapperspb.Int64Value
- func (x *EchoRecord) GetMessage() *wrapperspb.StringValue
- func (*EchoRecord) ProtoMessage()
- func (x *EchoRecord) ProtoReflect() protoreflect.Message
- func (x *EchoRecord) Reset()
- func (x *EchoRecord) String() string
- type EchoServiceClient
- type EchoServiceServer
- type ErrorReason
- func (ErrorReason) Descriptor() protoreflect.EnumDescriptor
- func (x ErrorReason) Enum() *ErrorReason
- func (ErrorReason) EnumDescriptor() ([]byte, []int)deprecated
- func (x ErrorReason) Number() protoreflect.EnumNumber
- func (x ErrorReason) String() string
- func (ErrorReason) Type() protoreflect.EnumType
- type GetEchoRequest
- type ListEchoRequest
- func (*ListEchoRequest) Descriptor() ([]byte, []int)deprecated
- func (x *ListEchoRequest) GetLimit() int64
- func (x *ListEchoRequest) GetOffset() int64
- func (*ListEchoRequest) ProtoMessage()
- func (x *ListEchoRequest) ProtoReflect() protoreflect.Message
- func (x *ListEchoRequest) Reset()
- func (x *ListEchoRequest) String() string
- type ListEchoResponse
- func (*ListEchoResponse) Descriptor() ([]byte, []int)deprecated
- func (x *ListEchoResponse) GetListLength() int32
- func (x *ListEchoResponse) GetRecords() []*EchoRecord
- func (*ListEchoResponse) ProtoMessage()
- func (x *ListEchoResponse) ProtoReflect() protoreflect.Message
- func (x *ListEchoResponse) Reset()
- func (x *ListEchoResponse) String() string
- type UnimplementedEchoServiceServer
- func (UnimplementedEchoServiceServer) CreateEcho(context.Context, *CreateEchoRequest) (*CreateEchoResponse, error)
- func (UnimplementedEchoServiceServer) DeleteEcho(context.Context, *DeleteEchoRequest) (*DeleteEchoResponse, error)
- func (UnimplementedEchoServiceServer) GetEcho(context.Context, *GetEchoRequest) (*EchoRecord, error)
- func (UnimplementedEchoServiceServer) ListEcho(context.Context, *ListEchoRequest) (*ListEchoResponse, error)
- func (UnimplementedEchoServiceServer) UpdateEcho(context.Context, *UpdateEchoRequest) (*UpdateEchoResponse, error)
- type UnsafeEchoServiceServer
- type UpdateEchoRequest
- func (*UpdateEchoRequest) Descriptor() ([]byte, []int)deprecated
- func (x *UpdateEchoRequest) GetId() *wrapperspb.Int64Value
- func (x *UpdateEchoRequest) GetNewEcho() *wrapperspb.StringValue
- func (*UpdateEchoRequest) ProtoMessage()
- func (x *UpdateEchoRequest) ProtoReflect() protoreflect.Message
- func (x *UpdateEchoRequest) Reset()
- func (x *UpdateEchoRequest) String() string
- type UpdateEchoResponse
- func (*UpdateEchoResponse) Descriptor() ([]byte, []int)deprecated
- func (x *UpdateEchoResponse) GetResult() common.OperationResult
- func (*UpdateEchoResponse) ProtoMessage()
- func (x *UpdateEchoResponse) ProtoReflect() protoreflect.Message
- func (x *UpdateEchoResponse) Reset()
- func (x *UpdateEchoResponse) String() string
Constants ¶
This section is empty.
Variables ¶
var ( ErrorReason_name = map[int32]string{ 0: "RECORD_NOT_FOUND", 1: "CONTENT_MISSING", } ErrorReason_value = map[string]int32{ "RECORD_NOT_FOUND": 0, "CONTENT_MISSING": 1, } )
Enum value maps for ErrorReason.
var EchoService_ServiceDesc = grpc.ServiceDesc{ ServiceName: "echo.v1.EchoService", HandlerType: (*EchoServiceServer)(nil), Methods: []grpc.MethodDesc{ { MethodName: "CreateEcho", Handler: _EchoService_CreateEcho_Handler, }, { MethodName: "ListEcho", Handler: _EchoService_ListEcho_Handler, }, { MethodName: "UpdateEcho", Handler: _EchoService_UpdateEcho_Handler, }, { MethodName: "DeleteEcho", Handler: _EchoService_DeleteEcho_Handler, }, { MethodName: "GetEcho", Handler: _EchoService_GetEcho_Handler, }, }, Streams: []grpc.StreamDesc{}, Metadata: "echo/v1/echo.proto", }
EchoService_ServiceDesc is the grpc.ServiceDesc for EchoService service. It's only intended for direct use with grpc.RegisterService, and not to be introspected or modified (even as a copy)
var File_echo_v1_echo_proto protoreflect.FileDescriptor
var File_echo_v1_error_reason_proto protoreflect.FileDescriptor
Functions ¶
func RegisterEchoServiceHandler ¶
func RegisterEchoServiceHandler(ctx context.Context, mux *runtime.ServeMux, conn *grpc.ClientConn) error
RegisterEchoServiceHandler registers the http handlers for service EchoService to "mux". The handlers forward requests to the grpc endpoint over "conn".
func RegisterEchoServiceHandlerClient ¶
func RegisterEchoServiceHandlerClient(ctx context.Context, mux *runtime.ServeMux, client EchoServiceClient) error
RegisterEchoServiceHandlerClient registers the http handlers for service EchoService to "mux". The handlers forward requests to the grpc endpoint over the given implementation of "EchoServiceClient". Note: the gRPC framework executes interceptors within the gRPC handler. If the passed in "EchoServiceClient" doesn't go through the normal gRPC flow (creating a gRPC client etc.) then it will be up to the passed in "EchoServiceClient" to call the correct interceptors.
func RegisterEchoServiceHandlerFromEndpoint ¶
func RegisterEchoServiceHandlerFromEndpoint(ctx context.Context, mux *runtime.ServeMux, endpoint string, opts []grpc.DialOption) (err error)
RegisterEchoServiceHandlerFromEndpoint is same as RegisterEchoServiceHandler but automatically dials to "endpoint" and closes the connection when "ctx" gets done.
func RegisterEchoServiceHandlerServer ¶
func RegisterEchoServiceHandlerServer(ctx context.Context, mux *runtime.ServeMux, server EchoServiceServer) error
RegisterEchoServiceHandlerServer registers the http handlers for service EchoService to "mux". UnaryRPC :call EchoServiceServer directly. StreamingRPC :currently unsupported pending https://github.com/grpc/grpc-go/issues/906. Note that using this registration option will cause many gRPC library features to stop working. Consider using RegisterEchoServiceHandlerFromEndpoint instead.
func RegisterEchoServiceServer ¶
func RegisterEchoServiceServer(s grpc.ServiceRegistrar, srv EchoServiceServer)
Types ¶
type CreateEchoRequest ¶
type CreateEchoRequest struct { // echo request message Message *wrapperspb.StringValue `protobuf:"bytes,1,opt,name=message,proto3" json:"message,omitempty"` // contains filtered or unexported fields }
func (*CreateEchoRequest) Descriptor
deprecated
func (*CreateEchoRequest) Descriptor() ([]byte, []int)
Deprecated: Use CreateEchoRequest.ProtoReflect.Descriptor instead.
func (*CreateEchoRequest) GetMessage ¶
func (x *CreateEchoRequest) GetMessage() *wrapperspb.StringValue
func (*CreateEchoRequest) ProtoMessage ¶
func (*CreateEchoRequest) ProtoMessage()
func (*CreateEchoRequest) ProtoReflect ¶
func (x *CreateEchoRequest) ProtoReflect() protoreflect.Message
func (*CreateEchoRequest) Reset ¶
func (x *CreateEchoRequest) Reset()
func (*CreateEchoRequest) String ¶
func (x *CreateEchoRequest) String() string
type CreateEchoResponse ¶
type CreateEchoResponse struct { // echo response message Echo *wrapperspb.StringValue `protobuf:"bytes,1,opt,name=echo,proto3" json:"echo,omitempty"` // contains filtered or unexported fields }
func (*CreateEchoResponse) Descriptor
deprecated
func (*CreateEchoResponse) Descriptor() ([]byte, []int)
Deprecated: Use CreateEchoResponse.ProtoReflect.Descriptor instead.
func (*CreateEchoResponse) GetEcho ¶
func (x *CreateEchoResponse) GetEcho() *wrapperspb.StringValue
func (*CreateEchoResponse) ProtoMessage ¶
func (*CreateEchoResponse) ProtoMessage()
func (*CreateEchoResponse) ProtoReflect ¶
func (x *CreateEchoResponse) ProtoReflect() protoreflect.Message
func (*CreateEchoResponse) Reset ¶
func (x *CreateEchoResponse) Reset()
func (*CreateEchoResponse) String ¶
func (x *CreateEchoResponse) String() string
type DeleteEchoRequest ¶
type DeleteEchoRequest struct { // delete record id Id *wrapperspb.Int64Value `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` // contains filtered or unexported fields }
func (*DeleteEchoRequest) Descriptor
deprecated
func (*DeleteEchoRequest) Descriptor() ([]byte, []int)
Deprecated: Use DeleteEchoRequest.ProtoReflect.Descriptor instead.
func (*DeleteEchoRequest) GetId ¶
func (x *DeleteEchoRequest) GetId() *wrapperspb.Int64Value
func (*DeleteEchoRequest) ProtoMessage ¶
func (*DeleteEchoRequest) ProtoMessage()
func (*DeleteEchoRequest) ProtoReflect ¶
func (x *DeleteEchoRequest) ProtoReflect() protoreflect.Message
func (*DeleteEchoRequest) Reset ¶
func (x *DeleteEchoRequest) Reset()
func (*DeleteEchoRequest) String ¶
func (x *DeleteEchoRequest) String() string
type DeleteEchoResponse ¶
type DeleteEchoResponse struct { // delete result Result common.OperationResult `protobuf:"varint,1,opt,name=result,proto3,enum=common.OperationResult" json:"result,omitempty"` // contains filtered or unexported fields }
func (*DeleteEchoResponse) Descriptor
deprecated
func (*DeleteEchoResponse) Descriptor() ([]byte, []int)
Deprecated: Use DeleteEchoResponse.ProtoReflect.Descriptor instead.
func (*DeleteEchoResponse) GetResult ¶
func (x *DeleteEchoResponse) GetResult() common.OperationResult
func (*DeleteEchoResponse) ProtoMessage ¶
func (*DeleteEchoResponse) ProtoMessage()
func (*DeleteEchoResponse) ProtoReflect ¶
func (x *DeleteEchoResponse) ProtoReflect() protoreflect.Message
func (*DeleteEchoResponse) Reset ¶
func (x *DeleteEchoResponse) Reset()
func (*DeleteEchoResponse) String ¶
func (x *DeleteEchoResponse) String() string
type EchoRecord ¶
type EchoRecord struct { // echo record id Id *wrapperspb.Int64Value `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` // echo request message Message *wrapperspb.StringValue `protobuf:"bytes,2,opt,name=message,proto3" json:"message,omitempty"` // echo response message Echo *wrapperspb.StringValue `protobuf:"bytes,3,opt,name=echo,proto3" json:"echo,omitempty"` // echo request time EchoTime *timestamppb.Timestamp `protobuf:"bytes,4,opt,name=echo_time,json=echoTime,proto3" json:"echo_time,omitempty"` // contains filtered or unexported fields }
func (*EchoRecord) Descriptor
deprecated
func (*EchoRecord) Descriptor() ([]byte, []int)
Deprecated: Use EchoRecord.ProtoReflect.Descriptor instead.
func (*EchoRecord) GetEcho ¶
func (x *EchoRecord) GetEcho() *wrapperspb.StringValue
func (*EchoRecord) GetEchoTime ¶
func (x *EchoRecord) GetEchoTime() *timestamppb.Timestamp
func (*EchoRecord) GetId ¶
func (x *EchoRecord) GetId() *wrapperspb.Int64Value
func (*EchoRecord) GetMessage ¶
func (x *EchoRecord) GetMessage() *wrapperspb.StringValue
func (*EchoRecord) ProtoMessage ¶
func (*EchoRecord) ProtoMessage()
func (*EchoRecord) ProtoReflect ¶
func (x *EchoRecord) ProtoReflect() protoreflect.Message
func (*EchoRecord) Reset ¶
func (x *EchoRecord) Reset()
func (*EchoRecord) String ¶
func (x *EchoRecord) String() string
type EchoServiceClient ¶
type EchoServiceClient interface { CreateEcho(ctx context.Context, in *CreateEchoRequest, opts ...grpc.CallOption) (*CreateEchoResponse, error) ListEcho(ctx context.Context, in *ListEchoRequest, opts ...grpc.CallOption) (*ListEchoResponse, error) UpdateEcho(ctx context.Context, in *UpdateEchoRequest, opts ...grpc.CallOption) (*UpdateEchoResponse, error) DeleteEcho(ctx context.Context, in *DeleteEchoRequest, opts ...grpc.CallOption) (*DeleteEchoResponse, error) GetEcho(ctx context.Context, in *GetEchoRequest, opts ...grpc.CallOption) (*EchoRecord, error) }
EchoServiceClient is the client API for EchoService service.
For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream.
func NewEchoServiceClient ¶
func NewEchoServiceClient(cc grpc.ClientConnInterface) EchoServiceClient
type EchoServiceServer ¶
type EchoServiceServer interface { CreateEcho(context.Context, *CreateEchoRequest) (*CreateEchoResponse, error) ListEcho(context.Context, *ListEchoRequest) (*ListEchoResponse, error) UpdateEcho(context.Context, *UpdateEchoRequest) (*UpdateEchoResponse, error) DeleteEcho(context.Context, *DeleteEchoRequest) (*DeleteEchoResponse, error) GetEcho(context.Context, *GetEchoRequest) (*EchoRecord, error) // contains filtered or unexported methods }
EchoServiceServer is the server API for EchoService service. All implementations must embed UnimplementedEchoServiceServer for forward compatibility
type ErrorReason ¶
type ErrorReason int32
const ( ErrorReason_RECORD_NOT_FOUND ErrorReason = 0 ErrorReason_CONTENT_MISSING ErrorReason = 1 )
func (ErrorReason) Descriptor ¶
func (ErrorReason) Descriptor() protoreflect.EnumDescriptor
func (ErrorReason) Enum ¶
func (x ErrorReason) Enum() *ErrorReason
func (ErrorReason) EnumDescriptor
deprecated
func (ErrorReason) EnumDescriptor() ([]byte, []int)
Deprecated: Use ErrorReason.Descriptor instead.
func (ErrorReason) Number ¶
func (x ErrorReason) Number() protoreflect.EnumNumber
func (ErrorReason) String ¶
func (x ErrorReason) String() string
func (ErrorReason) Type ¶
func (ErrorReason) Type() protoreflect.EnumType
type GetEchoRequest ¶
type GetEchoRequest struct { Id int64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` // contains filtered or unexported fields }
func (*GetEchoRequest) Descriptor
deprecated
func (*GetEchoRequest) Descriptor() ([]byte, []int)
Deprecated: Use GetEchoRequest.ProtoReflect.Descriptor instead.
func (*GetEchoRequest) GetId ¶
func (x *GetEchoRequest) GetId() int64
func (*GetEchoRequest) ProtoMessage ¶
func (*GetEchoRequest) ProtoMessage()
func (*GetEchoRequest) ProtoReflect ¶
func (x *GetEchoRequest) ProtoReflect() protoreflect.Message
func (*GetEchoRequest) Reset ¶
func (x *GetEchoRequest) Reset()
func (*GetEchoRequest) String ¶
func (x *GetEchoRequest) String() string
type ListEchoRequest ¶
type ListEchoRequest struct { Offset int64 `protobuf:"varint,1,opt,name=offset,proto3" json:"offset,omitempty"` Limit int64 `protobuf:"varint,2,opt,name=limit,proto3" json:"limit,omitempty"` // contains filtered or unexported fields }
func (*ListEchoRequest) Descriptor
deprecated
func (*ListEchoRequest) Descriptor() ([]byte, []int)
Deprecated: Use ListEchoRequest.ProtoReflect.Descriptor instead.
func (*ListEchoRequest) GetLimit ¶
func (x *ListEchoRequest) GetLimit() int64
func (*ListEchoRequest) GetOffset ¶
func (x *ListEchoRequest) GetOffset() int64
func (*ListEchoRequest) ProtoMessage ¶
func (*ListEchoRequest) ProtoMessage()
func (*ListEchoRequest) ProtoReflect ¶
func (x *ListEchoRequest) ProtoReflect() protoreflect.Message
func (*ListEchoRequest) Reset ¶
func (x *ListEchoRequest) Reset()
func (*ListEchoRequest) String ¶
func (x *ListEchoRequest) String() string
type ListEchoResponse ¶
type ListEchoResponse struct { // echo record list Records []*EchoRecord `protobuf:"bytes,1,rep,name=records,proto3" json:"records,omitempty"` // list length ListLength int32 `protobuf:"varint,2,opt,name=listLength,proto3" json:"listLength,omitempty"` // contains filtered or unexported fields }
func (*ListEchoResponse) Descriptor
deprecated
func (*ListEchoResponse) Descriptor() ([]byte, []int)
Deprecated: Use ListEchoResponse.ProtoReflect.Descriptor instead.
func (*ListEchoResponse) GetListLength ¶
func (x *ListEchoResponse) GetListLength() int32
func (*ListEchoResponse) GetRecords ¶
func (x *ListEchoResponse) GetRecords() []*EchoRecord
func (*ListEchoResponse) ProtoMessage ¶
func (*ListEchoResponse) ProtoMessage()
func (*ListEchoResponse) ProtoReflect ¶
func (x *ListEchoResponse) ProtoReflect() protoreflect.Message
func (*ListEchoResponse) Reset ¶
func (x *ListEchoResponse) Reset()
func (*ListEchoResponse) String ¶
func (x *ListEchoResponse) String() string
type UnimplementedEchoServiceServer ¶
type UnimplementedEchoServiceServer struct { }
UnimplementedEchoServiceServer must be embedded to have forward compatible implementations.
func (UnimplementedEchoServiceServer) CreateEcho ¶
func (UnimplementedEchoServiceServer) CreateEcho(context.Context, *CreateEchoRequest) (*CreateEchoResponse, error)
func (UnimplementedEchoServiceServer) DeleteEcho ¶
func (UnimplementedEchoServiceServer) DeleteEcho(context.Context, *DeleteEchoRequest) (*DeleteEchoResponse, error)
func (UnimplementedEchoServiceServer) GetEcho ¶
func (UnimplementedEchoServiceServer) GetEcho(context.Context, *GetEchoRequest) (*EchoRecord, error)
func (UnimplementedEchoServiceServer) ListEcho ¶
func (UnimplementedEchoServiceServer) ListEcho(context.Context, *ListEchoRequest) (*ListEchoResponse, error)
func (UnimplementedEchoServiceServer) UpdateEcho ¶
func (UnimplementedEchoServiceServer) UpdateEcho(context.Context, *UpdateEchoRequest) (*UpdateEchoResponse, error)
type UnsafeEchoServiceServer ¶
type UnsafeEchoServiceServer interface {
// contains filtered or unexported methods
}
UnsafeEchoServiceServer may be embedded to opt out of forward compatibility for this service. Use of this interface is not recommended, as added methods to EchoServiceServer will result in compilation errors.
type UpdateEchoRequest ¶
type UpdateEchoRequest struct { // echo record id Id *wrapperspb.Int64Value `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` // new echo message NewEcho *wrapperspb.StringValue `protobuf:"bytes,2,opt,name=new_echo,json=newEcho,proto3" json:"new_echo,omitempty"` // contains filtered or unexported fields }
func (*UpdateEchoRequest) Descriptor
deprecated
func (*UpdateEchoRequest) Descriptor() ([]byte, []int)
Deprecated: Use UpdateEchoRequest.ProtoReflect.Descriptor instead.
func (*UpdateEchoRequest) GetId ¶
func (x *UpdateEchoRequest) GetId() *wrapperspb.Int64Value
func (*UpdateEchoRequest) GetNewEcho ¶
func (x *UpdateEchoRequest) GetNewEcho() *wrapperspb.StringValue
func (*UpdateEchoRequest) ProtoMessage ¶
func (*UpdateEchoRequest) ProtoMessage()
func (*UpdateEchoRequest) ProtoReflect ¶
func (x *UpdateEchoRequest) ProtoReflect() protoreflect.Message
func (*UpdateEchoRequest) Reset ¶
func (x *UpdateEchoRequest) Reset()
func (*UpdateEchoRequest) String ¶
func (x *UpdateEchoRequest) String() string
type UpdateEchoResponse ¶
type UpdateEchoResponse struct { // update result Result common.OperationResult `protobuf:"varint,1,opt,name=result,proto3,enum=common.OperationResult" json:"result,omitempty"` // contains filtered or unexported fields }
func (*UpdateEchoResponse) Descriptor
deprecated
func (*UpdateEchoResponse) Descriptor() ([]byte, []int)
Deprecated: Use UpdateEchoResponse.ProtoReflect.Descriptor instead.
func (*UpdateEchoResponse) GetResult ¶
func (x *UpdateEchoResponse) GetResult() common.OperationResult
func (*UpdateEchoResponse) ProtoMessage ¶
func (*UpdateEchoResponse) ProtoMessage()
func (*UpdateEchoResponse) ProtoReflect ¶
func (x *UpdateEchoResponse) ProtoReflect() protoreflect.Message
func (*UpdateEchoResponse) Reset ¶
func (x *UpdateEchoResponse) Reset()
func (*UpdateEchoResponse) String ¶
func (x *UpdateEchoResponse) String() string