Added the Metadata field to Call and Publish pages.

main
Kirill Lepikhin 2 years ago
parent 566e981e3c
commit a15c496025

@ -57,6 +57,18 @@
</nz-select>
</nz-form-control>
</nz-form-item>
<nz-form-item>
<nz-form-control>
<textarea
nz-input
name="metadata"
placeholder="Request metadata"
[ngModel]="metadata | json"
[nzAutosize]="{ minRows: 2, maxRows: 5 }"
(ngModelChange)="metadataChanged($event)"
></textarea>
</nz-form-control>
</nz-form-item>
<nz-form-item>
<nz-form-control>
<textarea

@ -26,6 +26,7 @@ export class ClientCallComponent implements OnInit {
version: string = '';
endpoint: string = '';
timeout = 10;
metadata: any = undefined;
request: any = undefined;
response: any = undefined;
@ -94,6 +95,7 @@ export class ClientCallComponent implements OnInit {
service: this.service,
version: this.version,
endpoint: this.endpoint,
metadata: JSON.stringify(this.metadata),
request: JSON.stringify(this.request),
timeout: this.timeout
});
@ -142,6 +144,14 @@ export class ClientCallComponent implements OnInit {
}
}
metadataChanged(metadata: string) {
try {
this.metadata = eval(`(${metadata})`);
} catch (e) {
// SyntaxError
}
}
requestChanged(request: string) {
try {
this.request = eval(`(${request})`);

@ -57,6 +57,18 @@
</nz-select>
</nz-form-control>
</nz-form-item>
<nz-form-item>
<nz-form-control>
<textarea
nz-input
name="metadata"
placeholder="Request metadata"
[ngModel]="metadata | json"
[nzAutosize]="{ minRows: 2, maxRows: 5 }"
(ngModelChange)="metadataChanged($event)"
></textarea>
</nz-form-control>
</nz-form-item>
<nz-form-item>
<nz-form-control>
<textarea

@ -26,6 +26,7 @@ export class ClientPublishComponent implements OnInit {
version: string = '';
topic: string = '';
timeout = 10;
metadata: any = undefined;
request: any = undefined;
response: any = undefined;
@ -92,6 +93,7 @@ export class ClientPublishComponent implements OnInit {
this.response = undefined;
var input = new PublishRequest({
topic: this.topic,
metadata: JSON.stringify(this.metadata),
message: JSON.stringify(this.request)
});
this.clientService
@ -139,6 +141,14 @@ export class ClientPublishComponent implements OnInit {
}
}
metadataChanged(metadata: string) {
try {
this.metadata = eval(`(${metadata})`);
} catch (e) {
// SyntaxError
}
}
requestChanged(request: string) {
try {
this.request = eval(`(${request})`);

@ -992,7 +992,7 @@ export class LoginRequest implements ILoginRequest {
data = typeof data === 'object' ? data : {};
data["password"] = this.password;
data["username"] = this.username;
return data;
return data;
}
}
@ -1029,7 +1029,7 @@ export class LoginResponse implements ILoginResponse {
toJSON(data?: any) {
data = typeof data === 'object' ? data : {};
data["token"] = this.token;
return data;
return data;
}
}
@ -1065,7 +1065,7 @@ export class ProfileResponse implements IProfileResponse {
toJSON(data?: any) {
data = typeof data === 'object' ? data : {};
data["name"] = this.name;
return data;
return data;
}
}
@ -1076,6 +1076,7 @@ export interface IProfileResponse {
export class CallRequest implements ICallRequest {
endpoint!: string;
request?: string | undefined;
metadata?: string | undefined;
service!: string;
timeout?: number | undefined;
version?: string | undefined;
@ -1093,6 +1094,7 @@ export class CallRequest implements ICallRequest {
if (_data) {
this.endpoint = _data["endpoint"];
this.request = _data["request"];
this.metadata = _data["metadata"];
this.service = _data["service"];
this.timeout = _data["timeout"];
this.version = _data["version"];
@ -1110,15 +1112,17 @@ export class CallRequest implements ICallRequest {
data = typeof data === 'object' ? data : {};
data["endpoint"] = this.endpoint;
data["request"] = this.request;
data["metadata"] = this.metadata;
data["service"] = this.service;
data["timeout"] = this.timeout;
data["version"] = this.version;
return data;
return data;
}
}
export interface ICallRequest {
endpoint: string;
metadata?: string;
request?: string | undefined;
service: string;
timeout?: number | undefined;
@ -1162,7 +1166,7 @@ export class HealthCheckRequest implements IHealthCheckRequest {
data["service"] = this.service;
data["timeout"] = this.timeout;
data["version"] = this.version;
return data;
return data;
}
}
@ -1176,6 +1180,7 @@ export interface IHealthCheckRequest {
export class PublishRequest implements IPublishRequest {
message!: string;
topic!: string;
metadata?: string | undefined;
constructor(data?: IPublishRequest) {
if (data) {
@ -1189,6 +1194,7 @@ export class PublishRequest implements IPublishRequest {
init(_data?: any) {
if (_data) {
this.message = _data["message"];
this.metadata = _data["metadata"];
this.topic = _data["topic"];
}
}
@ -1204,13 +1210,15 @@ export class PublishRequest implements IPublishRequest {
data = typeof data === 'object' ? data : {};
data["message"] = this.message;
data["topic"] = this.topic;
return data;
data["metadata"] = this.metadata;
return data;
}
}
export interface IPublishRequest {
message: string;
topic: string;
metadata?: string | undefined;
}
export class GetNodeListResponse implements IGetNodeListResponse {
@ -1249,7 +1257,7 @@ export class GetNodeListResponse implements IGetNodeListResponse {
for (let item of this.services)
data["services"].push(item.toJSON());
}
return data;
return data;
}
}
@ -1293,7 +1301,7 @@ export class GetServiceDetailResponse implements IGetServiceDetailResponse {
for (let item of this.services)
data["services"].push(item.toJSON());
}
return data;
return data;
}
}
@ -1337,7 +1345,7 @@ export class GetServiceHandlersResponse implements IGetServiceHandlersResponse {
for (let item of this.handlers)
data["handlers"].push(item.toJSON());
}
return data;
return data;
}
}
@ -1384,7 +1392,7 @@ export class GetServiceListResponse implements IGetServiceListResponse {
for (let item of this.services)
data["services"].push(item.toJSON());
}
return data;
return data;
}
}
@ -1428,7 +1436,7 @@ export class GetServiceSubscribersResponse implements IGetServiceSubscribersResp
for (let item of this.subscribers)
data["subscribers"].push(item.toJSON());
}
return data;
return data;
}
}
@ -1491,7 +1499,7 @@ export class RegistryEndpoint implements IRegistryEndpoint {
data["request"] = this.request ? this.request.toJSON() : <any>undefined;
data["response"] = this.response ? this.response.toJSON() : <any>undefined;
data["stream"] = this.stream;
return data;
return data;
}
}
@ -1549,7 +1557,7 @@ export class RegistryNode implements IRegistryNode {
(<any>data["metadata"])[key] = this.metadata[key];
}
}
return data;
return data;
}
}
@ -1608,7 +1616,7 @@ export class RegistryNodeDetail implements IRegistryNodeDetail {
}
}
data["version"] = this.version;
return data;
return data;
}
}
@ -1698,7 +1706,7 @@ export class RegistryService implements IRegistryService {
data["subscribers"].push(item.toJSON());
}
data["version"] = this.version;
return data;
return data;
}
}
@ -1750,7 +1758,7 @@ export class RegistryServiceNodes implements IRegistryServiceNodes {
for (let item of this.nodes)
data["nodes"].push(item.toJSON());
}
return data;
return data;
}
}
@ -1798,7 +1806,7 @@ export class RegistryServiceSummary implements IRegistryServiceSummary {
for (let item of this.versions)
data["versions"].push(item);
}
return data;
return data;
}
}
@ -1849,7 +1857,7 @@ export class RegistryValue implements IRegistryValue {
for (let item of this.values)
data["values"].push(item.toJSON());
}
return data;
return data;
}
}
@ -1890,7 +1898,7 @@ export class GetSummaryResponse implements IGetSummaryResponse {
data = typeof data === 'object' ? data : {};
data["registry"] = this.registry ? this.registry.toJSON() : <any>undefined;
data["services"] = this.services ? this.services.toJSON() : <any>undefined;
return data;
return data;
}
}
@ -1938,7 +1946,7 @@ export class RegistrySummary implements IRegistrySummary {
data["addrs"].push(item);
}
data["type"] = this.type;
return data;
return data;
}
}
@ -1978,7 +1986,7 @@ export class ServicesSummary implements IServicesSummary {
data = typeof data === 'object' ? data : {};
data["count"] = this.count;
data["nodes_count"] = this.nodes_count;
return data;
return data;
}
}
@ -2032,4 +2040,4 @@ function blobToText(blob: any): Observable<string> {
reader.readAsText(blob);
}
});
}
}

@ -4,13 +4,15 @@ type callRequest struct {
Service string `json:"service" binding:"required"`
Version string `json:"version"`
Endpoint string `json:"endpoint" binding:"required"`
Metadata string `json:"metadata"`
Request string `json:"request"`
Timeout int64 `json:"timeout"`
}
type publishRequest struct {
Topic string `json:"topic" binding:"required"`
Message string `json:"message" binding:"required"`
Topic string `json:"topic" binding:"required"`
Metadata string `json:"metadata"`
Message string `json:"message" binding:"required"`
}
type healthCheckRequest struct {

@ -3,6 +3,7 @@ package client
import (
"context"
"encoding/json"
"go-micro.dev/v4/metadata"
"sync"
"time"
@ -48,7 +49,10 @@ func (s *service) RegisterRoute(router gin.IRoutes) {
// @Failure 500 {object} string
// @Router /api/client/call [post]
func (s *service) Call(ctx *gin.Context) {
var req callRequest
var (
req callRequest
mCtx = context.Context(ctx)
)
if err := ctx.ShouldBindJSON(&req); nil != err {
ctx.Render(400, render.String{Format: err.Error()})
return
@ -60,6 +64,14 @@ func (s *service) Call(ctx *gin.Context) {
return
}
}
if len(req.Metadata) > 0 {
md := metadata.Metadata{}
if err := json.Unmarshal([]byte(req.Metadata), &md); err != nil {
ctx.Render(400, render.String{Format: "parse metadata failed: %s", Data: []interface{}{err.Error()}})
return
}
mCtx = metadata.NewContext(mCtx, md)
}
services, err := s.registry.GetService(req.Service)
if err != nil {
ctx.Render(400, render.String{Format: err.Error()})
@ -90,7 +102,7 @@ func (s *service) Call(ctx *gin.Context) {
if req.Timeout > 0 {
callOpts = append(callOpts, client.WithRequestTimeout(time.Duration(req.Timeout)*time.Second))
}
if err := c.Call(context.TODO(), client.NewRequest(req.Service, req.Endpoint, callReq, requestOpts...), &resp, callOpts...); err != nil {
if err := c.Call(mCtx, client.NewRequest(req.Service, req.Endpoint, callReq, requestOpts...), &resp, callOpts...); err != nil {
if merr := errors.Parse(err.Error()); merr != nil {
ctx.JSON(200, gin.H{"success": false, "error": merr})
} else {
@ -167,7 +179,10 @@ func (s *service) HealthCheck(ctx *gin.Context) {
// @Failure 500 {object} string
// @Router /api/client/publish [post]
func (s *service) Publish(ctx *gin.Context) {
var req publishRequest
var (
req publishRequest
mCtx = context.Context(ctx)
)
if err := ctx.ShouldBindJSON(&req); nil != err {
ctx.Render(400, render.String{Format: err.Error()})
return
@ -179,7 +194,15 @@ func (s *service) Publish(ctx *gin.Context) {
return
}
}
err := s.client.Publish(ctx, client.NewMessage(req.Topic, msg, client.WithMessageContentType("application/json")))
if len(req.Metadata) > 0 {
md := metadata.Metadata{}
if err := json.Unmarshal([]byte(req.Metadata), &md); err != nil {
ctx.Render(400, render.String{Format: "parse metadata failed: %s", Data: []interface{}{err.Error()}})
return
}
mCtx = metadata.NewContext(mCtx, md)
}
err := s.client.Publish(mCtx, client.NewMessage(req.Topic, msg, client.WithMessageContentType("application/json")))
if err != nil {
if merr := errors.Parse(err.Error()); merr != nil {
ctx.JSON(200, gin.H{"success": false, "error": merr})

@ -1,5 +1,5 @@
// Code generated by fileb0x at "2022-04-08 11:51:54.664883 +0800 CST m=+0.015154876" from config file "b0x.yaml" DO NOT EDIT.
// modification hash(0370583dcab5cd93917c847bca2df9fe.f4db6ec17c31519d1f2efc2377822182)
// Code generated by fileb0x at "2022-07-12 08:59:04.7848985 +0300 MSK m=+0.193245501" from config file "b0x.yaml" DO NOT EDIT.
// modification hash(39432b8716bafad5765a8e00bcbd2c75.8be3f833d63e3c844663716446e13a42)
package web

@ -1,6 +1,6 @@
// Code generaTed by fileb0x at "2022-04-08 11:51:54.725046 +0800 CST m=+0.075319168" from config file "b0x.yaml" DO NOT EDIT.
// modified(2022-04-08 11:51:53.726190153 +0800 CST)
// original path: frontend/dist/449.fe5f02b3a65993ed3ea1.js
// Code generaTed by fileb0x at "2022-07-12 08:59:04.8294299 +0300 MSK m=+0.237776901" from config file "b0x.yaml" DO NOT EDIT.
// modified(2022-07-12 08:58:14.243485 +0300 MSK)
// original path: frontend\dist\449.fe5f02b3a65993ed3ea1.js
package web

File diff suppressed because one or more lines are too long

@ -1,6 +1,6 @@
// Code generaTed by fileb0x at "2022-04-08 11:51:54.83783 +0800 CST m=+0.188104876" from config file "b0x.yaml" DO NOT EDIT.
// modified(2022-04-08 11:51:53.737892225 +0800 CST)
// original path: frontend/dist/assets/logo-color.png
// Code generaTed by fileb0x at "2022-07-12 08:59:04.7865792 +0300 MSK m=+0.194926201" from config file "b0x.yaml" DO NOT EDIT.
// modified(2022-07-12 08:58:14.263485 +0300 MSK)
// original path: frontend\dist\assets\logo-color.png
package web

@ -1,6 +1,6 @@
// Code generaTed by fileb0x at "2022-04-08 11:51:54.7223 +0800 CST m=+0.072573668" from config file "b0x.yaml" DO NOT EDIT.
// modified(2022-04-08 11:51:53.738135096 +0800 CST)
// original path: frontend/dist/assets/logo-full.png
// Code generaTed by fileb0x at "2022-07-12 08:59:05.0414017 +0300 MSK m=+0.449748701" from config file "b0x.yaml" DO NOT EDIT.
// modified(2022-07-12 08:58:14.263485 +0300 MSK)
// original path: frontend\dist\assets\logo-full.png
package web

@ -1,6 +1,6 @@
// Code generaTed by fileb0x at "2022-04-08 11:51:54.824424 +0800 CST m=+0.174699084" from config file "b0x.yaml" DO NOT EDIT.
// modified(2022-04-08 11:51:53.738452715 +0800 CST)
// original path: frontend/dist/assets/logo.png
// Code generaTed by fileb0x at "2022-07-12 08:59:04.7903515 +0300 MSK m=+0.198698501" from config file "b0x.yaml" DO NOT EDIT.
// modified(2022-07-12 08:58:14.263485 +0300 MSK)
// original path: frontend\dist\assets\logo.png
package web

@ -1,6 +1,6 @@
// Code generaTed by fileb0x at "2022-04-08 11:51:54.696673 +0800 CST m=+0.046945584" from config file "b0x.yaml" DO NOT EDIT.
// modified(2022-04-08 11:51:53.739628443 +0800 CST)
// original path: frontend/dist/assets/style.compact.css
// Code generaTed by fileb0x at "2022-07-12 08:59:05.0474268 +0300 MSK m=+0.455773801" from config file "b0x.yaml" DO NOT EDIT.
// modified(2022-07-12 08:58:14.263485 +0300 MSK)
// original path: frontend\dist\assets\style.compact.css
package web

@ -1,6 +1,6 @@
// Code generaTed by fileb0x at "2022-04-08 11:51:54.666362 +0800 CST m=+0.016633876" from config file "b0x.yaml" DO NOT EDIT.
// modified(2022-04-08 11:51:53.742400974 +0800 CST)
// original path: frontend/dist/assets/style.dark.css
// Code generaTed by fileb0x at "2022-07-12 08:59:04.7932918 +0300 MSK m=+0.201638801" from config file "b0x.yaml" DO NOT EDIT.
// modified(2022-07-12 08:58:14.273485 +0300 MSK)
// original path: frontend\dist\assets\style.dark.css
package web

@ -1,6 +1,6 @@
// Code generaTed by fileb0x at "2022-04-08 11:51:54.841397 +0800 CST m=+0.191672251" from config file "b0x.yaml" DO NOT EDIT.
// modified(2022-04-08 11:51:53.733958049 +0800 CST)
// original path: frontend/dist/favicon.ico
// Code generaTed by fileb0x at "2022-07-12 08:59:04.8511242 +0300 MSK m=+0.259471201" from config file "b0x.yaml" DO NOT EDIT.
// modified(2022-07-12 08:58:14.263485 +0300 MSK)
// original path: frontend\dist\favicon.ico
package web

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

@ -1,6 +1,6 @@
// Code generaTed by fileb0x at "2022-04-08 11:51:54.799078 +0800 CST m=+0.149353084" from config file "b0x.yaml" DO NOT EDIT.
// modified(2022-04-08 11:51:53.726295818 +0800 CST)
// original path: frontend/dist/polyfills.96f1279b4eda5600c60b.js
// Code generaTed by fileb0x at "2022-07-12 08:59:04.8255124 +0300 MSK m=+0.233859401" from config file "b0x.yaml" DO NOT EDIT.
// modified(2022-07-12 08:58:14.243485 +0300 MSK)
// original path: frontend\dist\polyfills.96f1279b4eda5600c60b.js
package web

@ -1,6 +1,6 @@
// Code generaTed by fileb0x at "2022-04-08 11:51:54.84097 +0800 CST m=+0.191245126" from config file "b0x.yaml" DO NOT EDIT.
// modified(2022-04-08 11:51:53.7263364 +0800 CST)
// original path: frontend/dist/runtime.ff485c8956d3ca0c254a.js
// Code generaTed by fileb0x at "2022-07-12 08:59:04.8288714 +0300 MSK m=+0.237218401" from config file "b0x.yaml" DO NOT EDIT.
// modified(2022-07-12 08:58:14.243485 +0300 MSK)
// original path: frontend\dist\runtime.ff485c8956d3ca0c254a.js
package web

@ -1,6 +1,6 @@
// Code generaTed by fileb0x at "2022-04-08 11:51:54.8014 +0800 CST m=+0.151674793" from config file "b0x.yaml" DO NOT EDIT.
// modified(2022-04-08 11:51:53.726005906 +0800 CST)
// original path: frontend/dist/styles.97e1c0072908a26528bf.css
// Code generaTed by fileb0x at "2022-07-12 08:59:05.0020345 +0300 MSK m=+0.410381501" from config file "b0x.yaml" DO NOT EDIT.
// modified(2022-07-12 08:58:14.243485 +0300 MSK)
// original path: frontend\dist\styles.97e1c0072908a26528bf.css
package web

Loading…
Cancel
Save