diff --git a/cmd/server.go b/cmd/server.go index 87b5f54f..fae78c24 100644 --- a/cmd/server.go +++ b/cmd/server.go @@ -366,6 +366,7 @@ func (o *serverOption) runE(cmd *cobra.Command, args []string) (err error) { mux.HandlePath(http.MethodGet, "/healthz", frontEndHandlerWithLocation(o.consolePath)) mux.HandlePath(http.MethodGet, "/favicon.ico", frontEndHandlerWithLocation(o.consolePath)) mux.HandlePath(http.MethodGet, "/swagger.json", frontEndHandlerWithLocation(o.consolePath)) + mux.HandlePath(http.MethodGet, "/data/{data}", o.dataFromExtension(remoteServer.(server.UIExtensionServer))) mux.HandlePath(http.MethodGet, "/get", o.getAtestBinary) mux.HandlePath(http.MethodPost, "/runner/{suite}/{case}", service.WebRunnerHandler) mux.HandlePath(http.MethodGet, "/api/v1/sbom", service.SBomHandler) @@ -531,6 +532,27 @@ func debugHandler(mux *runtime.ServeMux, remoteServer server.RunnerServer) { }) } +func (o *serverOption) dataFromExtension(extServer server.UIExtensionServer) func(w http.ResponseWriter, + r *http.Request, pathParams map[string]string) { + return func(w http.ResponseWriter, r *http.Request, pathParams map[string]string) { + ctx := r.Context() + for k, v := range r.Header { + if !strings.HasPrefix(k, "X-Extension-") { + continue + } + ctx = context.WithValue(ctx, k, v) + } + result, err := extServer.GetPageOfStatic(ctx, &server.SimpleName{ + Name: pathParams["data"], + }) + if err == nil { + w.Write([]byte(result.GetMessage())) + } else { + w.Write([]byte(err.Error())) + } + } +} + func (o *serverOption) getAtestBinary(w http.ResponseWriter, r *http.Request, pathParams map[string]string) { name := util.EmptyThenDefault(r.URL.Query().Get("name"), "atest") diff --git a/cmd/server_test.go b/cmd/server_test.go index 82acca34..467d450c 100644 --- a/cmd/server_test.go +++ b/cmd/server_test.go @@ -1,5 +1,5 @@ /* -Copyright 2023-2024 API Testing Authors. +Copyright 2023-2025 API Testing Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -145,6 +145,15 @@ func TestFrontEndHandlerWithLocation(t *testing.T) { assert.Equal(t, "ok", resp.GetBody().String()) }) + t.Run("swagger", func(t *testing.T) { + req, err := http.NewRequest(http.MethodGet, "/swagger.json", nil) + assert.NoError(t, err) + + resp := newFakeResponseWriter() + handler(resp, req, map[string]string{}) + assert.Equal(t, string(server.SwaggerJSON), resp.GetBody().String()) + }) + t.Run("pprof", func(t *testing.T) { apis := []string{"", "cmdline", "symbol", "trace", "profile", @@ -339,6 +348,24 @@ func TestStartPlugins(t *testing.T) { }) } +func TestDataFromExtension(t *testing.T) { + opt := &serverOption{} + + handler := opt.dataFromExtension(server.UnimplementedUIExtensionServer{}) + t.Run("not found", func(t *testing.T) { + req, err := http.NewRequest(http.MethodGet, "/data/fake", nil) + req.Header.Set("X-Extension-Fake", "fake") + req.Header.Set("Content-Type", "application/json") + assert.NoError(t, err) + + resp := newFakeResponseWriter() + handler(resp, req, map[string]string{ + "data": "fake", + }) + assert.Contains(t, resp.GetBody().String(), "not implemented") + }) +} + type fakeResponseWriter struct { buf *bytes.Buffer header http.Header diff --git a/console/atest-ui/vite.config.ts b/console/atest-ui/vite.config.ts index 423edbf5..49be2379 100644 --- a/console/atest-ui/vite.config.ts +++ b/console/atest-ui/vite.config.ts @@ -68,6 +68,10 @@ export default defineConfig({ target: 'http://127.0.0.1:8080', changeOrigin: true, }, + '/data': { + target: 'http://127.0.0.1:8080', + changeOrigin: true, + }, }, }, }) diff --git a/pkg/server/remote_server.go b/pkg/server/remote_server.go index fe6396e3..c88017ee 100644 --- a/pkg/server/remote_server.go +++ b/pkg/server/remote_server.go @@ -1,5 +1,5 @@ /* -Copyright 2023-2024 API Testing Authors. +Copyright 2023-2025 API Testing Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -1405,9 +1405,12 @@ func (s *server) GetTheme(ctx context.Context, in *SimpleName) (result *CommonRe loader := s.getLoader(ctx) defer loader.Close() - result = &CommonResult{} + result = &CommonResult{ + Success: true, + } result.Message, err = loader.GetTheme(in.Name) if err != nil { + result.Success = false result.Message = fmt.Sprintf("failed to get theme: %v", err) } return @@ -1420,9 +1423,9 @@ func (s *server) GetBindings(ctx context.Context, _ *Empty) (result *SimpleList, result = &SimpleList{} var bindings []string if bindings, err = loader.GetBindings(); err == nil { - for _, theme := range bindings { + for _, binding := range bindings { result.Data = append(result.Data, &Pair{ - Key: theme, + Key: binding, Value: "", }) } @@ -1434,9 +1437,12 @@ func (s *server) GetBinding(ctx context.Context, in *SimpleName) (result *Common loader := s.getLoader(ctx) defer loader.Close() - result = &CommonResult{} + result = &CommonResult{ + Success: true, + } result.Message, err = loader.GetBinding(in.Name) if err != nil { + result.Success = false result.Message = fmt.Sprintf("failed to get binding: %v", err) } return @@ -1531,6 +1537,36 @@ func (s *server) GetPageOfCSS(ctx context.Context, in *SimpleName) (result *Comm return } +func (s *server) GetPageOfStatic(ctx context.Context, in *SimpleName) (result *CommonResult, err error) { + result = &CommonResult{} + extNameInter := ctx.Value("X-Extension-Name") + if extNameInter == nil { + result.Message = "X-Extension-Name is required" + result.Success = false + return + } + + var extName string + switch v := extNameInter.(type) { + case []string: + extName = v[0] + case string: + extName = v + } + + if loader, ok := uiExtensionLoaders[extName]; ok { + if js, err := loader.GetPageOfStatic(in.Name); err == nil { + result.Message = js + result.Success = true + } else { + result.Message = err.Error() + } + } else { + result.Message = fmt.Sprintf("not found loader for %s", extName) + } + return +} + // implement the mock server // Start starts the mock server @@ -1561,9 +1597,12 @@ func (s *mockServerController) Reload(ctx context.Context, in *MockConfig) (repl case "memory": s.mockWriter = mock.NewInMemoryReader(in.Config) case "localFile": + if in.StoreLocalFile == "" { + return nil, errors.New("StoreLocalFile is required") + } s.mockWriter = mock.NewLocalFileReader(in.StoreLocalFile) - case "remote": - case "url": + default: + return nil, fmt.Errorf("unsupported store kind: %s", in.StoreKind) } s.config = in diff --git a/pkg/server/remote_server_test.go b/pkg/server/remote_server_test.go index fb20f51e..2dbde95d 100644 --- a/pkg/server/remote_server_test.go +++ b/pkg/server/remote_server_test.go @@ -31,6 +31,7 @@ import ( _ "embed" "github.com/h2non/gock" + "github.com/linuxsuren/api-testing/pkg/mock" atest "github.com/linuxsuren/api-testing/pkg/testing" "github.com/linuxsuren/api-testing/pkg/util" "github.com/linuxsuren/api-testing/sample" @@ -966,6 +967,10 @@ func getRemoteServerInTempDir() (server RunnerServer, call func()) { os.MkdirAll(themePath, 0755) os.WriteFile(filepath.Join(themePath, "simple.json"), []byte(simplePostman), 0755) + bindinPath := filepath.Join(dir, "data", "key-binding") + os.MkdirAll(bindinPath, 0755) + os.WriteFile(filepath.Join(bindinPath, "default.json"), binding, 0755) + writer := atest.NewFileWriter(dir) server = NewRemoteServer(writer, newLocalloaderFromStore(), nil, nil, dir, 1024*1024*4) return @@ -992,6 +997,9 @@ var simpleTestCase string //go:embed testdata/postman.json var simplePostman string +//go:embed testdata/keybinding.json +var binding []byte + const urlFoo = "http://foo" type fakeServerStream struct { @@ -1079,4 +1087,113 @@ func TestGetThemes(t *testing.T) { }) assert.NoError(t, err) assert.NotNil(t, theme) + + theme, err = themeServer.GetTheme(context.Background(), &SimpleName{ + Name: "not-exist", + }) + assert.Error(t, err) + assert.False(t, theme.Success) +} + +func TestKeybinding(t *testing.T) { + server, clean := getRemoteServerInTempDir() + defer clean() + + themeServer, ok := server.(ThemeExtensionServer) + assert.True(t, ok) + + reply, err := themeServer.GetBindings(context.Background(), &Empty{}) + assert.NoError(t, err) + assert.Equal(t, 1, len(reply.Data)) + + var theme *CommonResult + theme, err = themeServer.GetBinding(context.Background(), &SimpleName{ + Name: "default", + }) + assert.NoError(t, err) + assert.NotNil(t, theme) + + theme, err = themeServer.GetBinding(context.Background(), &SimpleName{ + Name: "not-exist", + }) + assert.Error(t, err) + assert.False(t, theme.Success) +} + +func TestMockServer(t *testing.T) { + loader := mock.NewInMemoryServer(context.Background(), 0) + loader.SetupHandler(mock.NewInMemoryReader(""), "/") + mockServer := NewMockServerController(nil, loader, 0) + + t.Run("reload as unsupported kind", func(t *testing.T) { + _, err := mockServer.Reload(context.Background(), &MockConfig{}) + assert.Error(t, err) + }) + + t.Run("reload as memory kind", func(t *testing.T) { + _, err := mockServer.Reload(context.Background(), &MockConfig{ + StoreKind: "memory", + }) + assert.NoError(t, err) + }) + + t.Run("reload as localFile kind, but file is empty", func(t *testing.T) { + _, err := mockServer.Reload(context.Background(), &MockConfig{ + StoreKind: "localFile", + }) + assert.Error(t, err) + }) + + t.Run("reload as localFile kind, invalid file", func(t *testing.T) { + _, err := mockServer.Reload(context.Background(), &MockConfig{ + StoreKind: "localFile", + StoreLocalFile: "testdata/simple.yaml", + }) + assert.Error(t, err) + }) + + t.Run("reload as localFile kind", func(t *testing.T) { + _, err := mockServer.Reload(context.Background(), &MockConfig{ + StoreKind: "localFile", + StoreLocalFile: "testdata/simple_mock.yaml", + }) + assert.NoError(t, err) + + config, err := mockServer.GetConfig(context.Background(), &Empty{}) + assert.NoError(t, err) + assert.Equal(t, "localFile", config.StoreKind) + }) +} + +func TestUIExtension(t *testing.T) { + server, clean := getRemoteServerInTempDir() + defer clean() + + uiServer, ok := server.(UIExtensionServer) + assert.True(t, ok) + assert.NotNil(t, uiServer) + + ctx := context.Background() + menuList, err := uiServer.GetMenus(ctx, &Empty{}) + assert.NoError(t, err) + assert.Equal(t, 0, len(menuList.Data)) + + result, _ := uiServer.GetPageOfJS(ctx, &SimpleName{Name: "name"}) + assert.False(t, result.Success) + + result, _ = uiServer.GetPageOfCSS(ctx, &SimpleName{Name: "name"}) + assert.False(t, result.Success) + + result, _ = uiServer.GetPageOfStatic(ctx, &SimpleName{Name: "name"}) + assert.False(t, result.Success) + + result, _ = uiServer.GetPageOfStatic( + context.WithValue(ctx, "X-Extension-Name", "fake"), + &SimpleName{Name: "name"}) + assert.False(t, result.Success) + + result, _ = uiServer.GetPageOfStatic( + context.WithValue(ctx, "X-Extension-Name", []string{"fake"}), + &SimpleName{Name: "name"}) + assert.False(t, result.Success) } diff --git a/pkg/server/server.pb.go b/pkg/server/server.pb.go index 8969284b..496dd8ba 100644 --- a/pkg/server/server.pb.go +++ b/pkg/server/server.pb.go @@ -4645,7 +4645,7 @@ var file_pkg_server_server_proto_rawDesc = []byte{ 0x68, 0x43, 0x61, 0x73, 0x65, 0x1a, 0x14, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0x20, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1a, 0x22, 0x15, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x65, 0x78, 0x74, - 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x2f, 0x72, 0x75, 0x6e, 0x3a, 0x01, 0x2a, 0x32, 0xa5, 0x02, + 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x2f, 0x72, 0x75, 0x6e, 0x3a, 0x01, 0x2a, 0x32, 0x91, 0x03, 0x0a, 0x0b, 0x55, 0x49, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x4c, 0x0a, 0x08, 0x47, 0x65, 0x74, 0x4d, 0x65, 0x6e, 0x75, 0x73, 0x12, 0x0d, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x10, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, @@ -4664,53 +4664,59 @@ var file_pkg_server_server_proto_rawDesc = []byte{ 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0x2a, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x24, 0x12, 0x22, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x2f, 0x70, 0x61, 0x67, 0x65, 0x73, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, - 0x7d, 0x2f, 0x63, 0x73, 0x73, 0x32, 0xd2, 0x02, 0x0a, 0x0e, 0x54, 0x68, 0x65, 0x6d, 0x65, 0x45, - 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x46, 0x0a, 0x09, 0x47, 0x65, 0x74, 0x54, - 0x68, 0x65, 0x6d, 0x65, 0x73, 0x12, 0x0d, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x45, - 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x12, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x53, 0x69, - 0x6d, 0x70, 0x6c, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x22, 0x16, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x10, - 0x12, 0x0e, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x74, 0x68, 0x65, 0x6d, 0x65, 0x73, - 0x12, 0x53, 0x0a, 0x08, 0x47, 0x65, 0x74, 0x54, 0x68, 0x65, 0x6d, 0x65, 0x12, 0x12, 0x2e, 0x73, - 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x53, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x4e, 0x61, 0x6d, 0x65, - 0x1a, 0x14, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, - 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0x1d, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x17, 0x12, 0x15, - 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x74, 0x68, 0x65, 0x6d, 0x65, 0x73, 0x2f, 0x7b, - 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x12, 0x4a, 0x0a, 0x0b, 0x47, 0x65, 0x74, 0x42, 0x69, 0x6e, 0x64, - 0x69, 0x6e, 0x67, 0x73, 0x12, 0x0d, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x45, 0x6d, - 0x70, 0x74, 0x79, 0x1a, 0x12, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x53, 0x69, 0x6d, - 0x70, 0x6c, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x22, 0x18, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x12, 0x12, - 0x10, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x62, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, - 0x73, 0x12, 0x57, 0x0a, 0x0a, 0x47, 0x65, 0x74, 0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x12, - 0x12, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x53, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x4e, - 0x61, 0x6d, 0x65, 0x1a, 0x14, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x43, 0x6f, 0x6d, - 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0x1f, 0x82, 0xd3, 0xe4, 0x93, 0x02, - 0x19, 0x12, 0x17, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x62, 0x69, 0x6e, 0x64, 0x69, - 0x6e, 0x67, 0x73, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x32, 0xed, 0x01, 0x0a, 0x04, 0x4d, - 0x6f, 0x63, 0x6b, 0x12, 0x4b, 0x0a, 0x06, 0x52, 0x65, 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x12, 0x2e, - 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x4d, 0x6f, 0x63, 0x6b, 0x43, 0x6f, 0x6e, 0x66, 0x69, - 0x67, 0x1a, 0x0d, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, - 0x22, 0x1e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x18, 0x22, 0x13, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, - 0x31, 0x2f, 0x6d, 0x6f, 0x63, 0x6b, 0x2f, 0x72, 0x65, 0x6c, 0x6f, 0x61, 0x64, 0x3a, 0x01, 0x2a, - 0x12, 0x4b, 0x0a, 0x09, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x0d, 0x2e, - 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x12, 0x2e, 0x73, - 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x4d, 0x6f, 0x63, 0x6b, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, - 0x22, 0x1b, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x15, 0x12, 0x13, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, - 0x31, 0x2f, 0x6d, 0x6f, 0x63, 0x6b, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x4b, 0x0a, - 0x08, 0x4c, 0x6f, 0x67, 0x57, 0x61, 0x74, 0x63, 0x68, 0x12, 0x0d, 0x2e, 0x73, 0x65, 0x72, 0x76, - 0x65, 0x72, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x14, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, - 0x72, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0x18, - 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x12, 0x12, 0x10, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, - 0x6d, 0x6f, 0x63, 0x6b, 0x2f, 0x6c, 0x6f, 0x67, 0x30, 0x01, 0x32, 0x60, 0x0a, 0x0a, 0x44, 0x61, - 0x74, 0x61, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x12, 0x52, 0x0a, 0x05, 0x51, 0x75, 0x65, 0x72, - 0x79, 0x12, 0x11, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x51, - 0x75, 0x65, 0x72, 0x79, 0x1a, 0x17, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x61, - 0x74, 0x61, 0x51, 0x75, 0x65, 0x72, 0x79, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0x1d, 0x82, - 0xd3, 0xe4, 0x93, 0x02, 0x17, 0x22, 0x12, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x64, - 0x61, 0x74, 0x61, 0x2f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x3a, 0x01, 0x2a, 0x42, 0x2e, 0x5a, 0x2c, - 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x6c, 0x69, 0x6e, 0x75, 0x78, - 0x73, 0x75, 0x72, 0x65, 0x6e, 0x2f, 0x61, 0x70, 0x69, 0x2d, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, - 0x67, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x62, 0x06, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x33, + 0x7d, 0x2f, 0x63, 0x73, 0x73, 0x12, 0x6a, 0x0a, 0x0f, 0x47, 0x65, 0x74, 0x50, 0x61, 0x67, 0x65, + 0x4f, 0x66, 0x53, 0x74, 0x61, 0x74, 0x69, 0x63, 0x12, 0x12, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, + 0x72, 0x2e, 0x53, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x1a, 0x14, 0x2e, 0x73, + 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x75, + 0x6c, 0x74, 0x22, 0x2d, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x27, 0x12, 0x25, 0x2f, 0x61, 0x70, 0x69, + 0x2f, 0x76, 0x31, 0x2f, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x2f, 0x70, 0x61, + 0x67, 0x65, 0x73, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x73, 0x74, 0x61, 0x74, 0x69, + 0x63, 0x32, 0xd2, 0x02, 0x0a, 0x0e, 0x54, 0x68, 0x65, 0x6d, 0x65, 0x45, 0x78, 0x74, 0x65, 0x6e, + 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x46, 0x0a, 0x09, 0x47, 0x65, 0x74, 0x54, 0x68, 0x65, 0x6d, 0x65, + 0x73, 0x12, 0x0d, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, + 0x1a, 0x12, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x53, 0x69, 0x6d, 0x70, 0x6c, 0x65, + 0x4c, 0x69, 0x73, 0x74, 0x22, 0x16, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x10, 0x12, 0x0e, 0x2f, 0x61, + 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x74, 0x68, 0x65, 0x6d, 0x65, 0x73, 0x12, 0x53, 0x0a, 0x08, + 0x47, 0x65, 0x74, 0x54, 0x68, 0x65, 0x6d, 0x65, 0x12, 0x12, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, + 0x72, 0x2e, 0x53, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x1a, 0x14, 0x2e, 0x73, + 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x75, + 0x6c, 0x74, 0x22, 0x1d, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x17, 0x12, 0x15, 0x2f, 0x61, 0x70, 0x69, + 0x2f, 0x76, 0x31, 0x2f, 0x74, 0x68, 0x65, 0x6d, 0x65, 0x73, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, + 0x7d, 0x12, 0x4a, 0x0a, 0x0b, 0x47, 0x65, 0x74, 0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x73, + 0x12, 0x0d, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, + 0x12, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x53, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x4c, + 0x69, 0x73, 0x74, 0x22, 0x18, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x12, 0x12, 0x10, 0x2f, 0x61, 0x70, + 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x62, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x57, 0x0a, + 0x0a, 0x47, 0x65, 0x74, 0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x12, 0x12, 0x2e, 0x73, 0x65, + 0x72, 0x76, 0x65, 0x72, 0x2e, 0x53, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x1a, + 0x14, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, + 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0x1f, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x19, 0x12, 0x17, 0x2f, + 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x62, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x73, 0x2f, + 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x32, 0xed, 0x01, 0x0a, 0x04, 0x4d, 0x6f, 0x63, 0x6b, 0x12, + 0x4b, 0x0a, 0x06, 0x52, 0x65, 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x12, 0x2e, 0x73, 0x65, 0x72, 0x76, + 0x65, 0x72, 0x2e, 0x4d, 0x6f, 0x63, 0x6b, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x1a, 0x0d, 0x2e, + 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x1e, 0x82, 0xd3, + 0xe4, 0x93, 0x02, 0x18, 0x22, 0x13, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x6d, 0x6f, + 0x63, 0x6b, 0x2f, 0x72, 0x65, 0x6c, 0x6f, 0x61, 0x64, 0x3a, 0x01, 0x2a, 0x12, 0x4b, 0x0a, 0x09, + 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x0d, 0x2e, 0x73, 0x65, 0x72, 0x76, + 0x65, 0x72, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x12, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, + 0x72, 0x2e, 0x4d, 0x6f, 0x63, 0x6b, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x22, 0x1b, 0x82, 0xd3, + 0xe4, 0x93, 0x02, 0x15, 0x12, 0x13, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x6d, 0x6f, + 0x63, 0x6b, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x4b, 0x0a, 0x08, 0x4c, 0x6f, 0x67, + 0x57, 0x61, 0x74, 0x63, 0x68, 0x12, 0x0d, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x45, + 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x14, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x43, 0x6f, + 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0x18, 0x82, 0xd3, 0xe4, 0x93, + 0x02, 0x12, 0x12, 0x10, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x6d, 0x6f, 0x63, 0x6b, + 0x2f, 0x6c, 0x6f, 0x67, 0x30, 0x01, 0x32, 0x60, 0x0a, 0x0a, 0x44, 0x61, 0x74, 0x61, 0x53, 0x65, + 0x72, 0x76, 0x65, 0x72, 0x12, 0x52, 0x0a, 0x05, 0x51, 0x75, 0x65, 0x72, 0x79, 0x12, 0x11, 0x2e, + 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x51, 0x75, 0x65, 0x72, 0x79, + 0x1a, 0x17, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x51, 0x75, + 0x65, 0x72, 0x79, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0x1d, 0x82, 0xd3, 0xe4, 0x93, 0x02, + 0x17, 0x22, 0x12, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x64, 0x61, 0x74, 0x61, 0x2f, + 0x71, 0x75, 0x65, 0x72, 0x79, 0x3a, 0x01, 0x2a, 0x42, 0x2e, 0x5a, 0x2c, 0x67, 0x69, 0x74, 0x68, + 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x6c, 0x69, 0x6e, 0x75, 0x78, 0x73, 0x75, 0x72, 0x65, + 0x6e, 0x2f, 0x61, 0x70, 0x69, 0x2d, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2f, 0x70, 0x6b, + 0x67, 0x2f, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -4900,78 +4906,80 @@ var file_pkg_server_server_proto_depIdxs = []int32{ 52, // 105: server.UIExtension.GetMenus:input_type -> server.Empty 44, // 106: server.UIExtension.GetPageOfJS:input_type -> server.SimpleName 44, // 107: server.UIExtension.GetPageOfCSS:input_type -> server.SimpleName - 52, // 108: server.ThemeExtension.GetThemes:input_type -> server.Empty - 44, // 109: server.ThemeExtension.GetTheme:input_type -> server.SimpleName - 52, // 110: server.ThemeExtension.GetBindings:input_type -> server.Empty - 44, // 111: server.ThemeExtension.GetBinding:input_type -> server.SimpleName - 53, // 112: server.Mock.Reload:input_type -> server.MockConfig - 52, // 113: server.Mock.GetConfig:input_type -> server.Empty - 52, // 114: server.Mock.LogWatch:input_type -> server.Empty - 56, // 115: server.DataServer.Query:input_type -> server.DataQuery - 19, // 116: server.Runner.Run:output_type -> server.TestResult - 19, // 117: server.Runner.RunTestSuite:output_type -> server.TestResult - 2, // 118: server.Runner.GetSuites:output_type -> server.Suites - 21, // 119: server.Runner.CreateTestSuite:output_type -> server.HelloReply - 42, // 120: server.Runner.ImportTestSuite:output_type -> server.CommonResult - 9, // 121: server.Runner.GetTestSuite:output_type -> server.TestSuite - 21, // 122: server.Runner.UpdateTestSuite:output_type -> server.HelloReply - 21, // 123: server.Runner.DeleteTestSuite:output_type -> server.HelloReply - 21, // 124: server.Runner.DuplicateTestSuite:output_type -> server.HelloReply - 21, // 125: server.Runner.RenameTestSuite:output_type -> server.HelloReply - 22, // 126: server.Runner.GetTestSuiteYaml:output_type -> server.YamlData - 23, // 127: server.Runner.ListTestCase:output_type -> server.Suite - 32, // 128: server.Runner.RunTestCase:output_type -> server.TestCaseResult - 19, // 129: server.Runner.BatchRun:output_type -> server.TestResult - 26, // 130: server.Runner.GetTestCase:output_type -> server.TestCase - 21, // 131: server.Runner.CreateTestCase:output_type -> server.HelloReply - 21, // 132: server.Runner.UpdateTestCase:output_type -> server.HelloReply - 21, // 133: server.Runner.DeleteTestCase:output_type -> server.HelloReply - 21, // 134: server.Runner.DuplicateTestCase:output_type -> server.HelloReply - 21, // 135: server.Runner.RenameTestCase:output_type -> server.HelloReply - 25, // 136: server.Runner.GetSuggestedAPIs:output_type -> server.TestCases - 4, // 137: server.Runner.GetHistorySuites:output_type -> server.HistorySuites - 20, // 138: server.Runner.GetHistoryTestCaseWithResult:output_type -> server.HistoryTestResult - 27, // 139: server.Runner.GetHistoryTestCase:output_type -> server.HistoryTestCase - 21, // 140: server.Runner.DeleteHistoryTestCase:output_type -> server.HelloReply - 21, // 141: server.Runner.DeleteAllHistoryTestCase:output_type -> server.HelloReply - 28, // 142: server.Runner.GetTestCaseAllHistory:output_type -> server.HistoryTestCases - 43, // 143: server.Runner.ListCodeGenerator:output_type -> server.SimpleList - 42, // 144: server.Runner.GenerateCode:output_type -> server.CommonResult - 42, // 145: server.Runner.HistoryGenerateCode:output_type -> server.CommonResult - 43, // 146: server.Runner.ListConverter:output_type -> server.SimpleList - 42, // 147: server.Runner.ConvertTestSuite:output_type -> server.CommonResult - 34, // 148: server.Runner.PopularHeaders:output_type -> server.Pairs - 34, // 149: server.Runner.FunctionsQuery:output_type -> server.Pairs - 34, // 150: server.Runner.FunctionsQueryStream:output_type -> server.Pairs - 42, // 151: server.Runner.GetSchema:output_type -> server.CommonResult - 54, // 152: server.Runner.GetVersion:output_type -> server.Version - 21, // 153: server.Runner.Sample:output_type -> server.HelloReply - 51, // 154: server.Runner.DownloadResponseFile:output_type -> server.FileData - 38, // 155: server.Runner.GetStoreKinds:output_type -> server.StoreKinds - 36, // 156: server.Runner.GetStores:output_type -> server.Stores - 37, // 157: server.Runner.CreateStore:output_type -> server.Store - 37, // 158: server.Runner.UpdateStore:output_type -> server.Store - 37, // 159: server.Runner.DeleteStore:output_type -> server.Store - 48, // 160: server.Runner.VerifyStore:output_type -> server.ExtensionStatus - 46, // 161: server.Runner.GetSecrets:output_type -> server.Secrets - 42, // 162: server.Runner.CreateSecret:output_type -> server.CommonResult - 42, // 163: server.Runner.DeleteSecret:output_type -> server.CommonResult - 42, // 164: server.Runner.UpdateSecret:output_type -> server.CommonResult - 50, // 165: server.Runner.PProf:output_type -> server.PProfData - 42, // 166: server.RunnerExtension.Run:output_type -> server.CommonResult - 1, // 167: server.UIExtension.GetMenus:output_type -> server.MenuList - 42, // 168: server.UIExtension.GetPageOfJS:output_type -> server.CommonResult - 42, // 169: server.UIExtension.GetPageOfCSS:output_type -> server.CommonResult - 43, // 170: server.ThemeExtension.GetThemes:output_type -> server.SimpleList - 42, // 171: server.ThemeExtension.GetTheme:output_type -> server.CommonResult - 43, // 172: server.ThemeExtension.GetBindings:output_type -> server.SimpleList - 42, // 173: server.ThemeExtension.GetBinding:output_type -> server.CommonResult - 52, // 174: server.Mock.Reload:output_type -> server.Empty - 53, // 175: server.Mock.GetConfig:output_type -> server.MockConfig - 42, // 176: server.Mock.LogWatch:output_type -> server.CommonResult - 57, // 177: server.DataServer.Query:output_type -> server.DataQueryResult - 116, // [116:178] is the sub-list for method output_type - 54, // [54:116] is the sub-list for method input_type + 44, // 108: server.UIExtension.GetPageOfStatic:input_type -> server.SimpleName + 52, // 109: server.ThemeExtension.GetThemes:input_type -> server.Empty + 44, // 110: server.ThemeExtension.GetTheme:input_type -> server.SimpleName + 52, // 111: server.ThemeExtension.GetBindings:input_type -> server.Empty + 44, // 112: server.ThemeExtension.GetBinding:input_type -> server.SimpleName + 53, // 113: server.Mock.Reload:input_type -> server.MockConfig + 52, // 114: server.Mock.GetConfig:input_type -> server.Empty + 52, // 115: server.Mock.LogWatch:input_type -> server.Empty + 56, // 116: server.DataServer.Query:input_type -> server.DataQuery + 19, // 117: server.Runner.Run:output_type -> server.TestResult + 19, // 118: server.Runner.RunTestSuite:output_type -> server.TestResult + 2, // 119: server.Runner.GetSuites:output_type -> server.Suites + 21, // 120: server.Runner.CreateTestSuite:output_type -> server.HelloReply + 42, // 121: server.Runner.ImportTestSuite:output_type -> server.CommonResult + 9, // 122: server.Runner.GetTestSuite:output_type -> server.TestSuite + 21, // 123: server.Runner.UpdateTestSuite:output_type -> server.HelloReply + 21, // 124: server.Runner.DeleteTestSuite:output_type -> server.HelloReply + 21, // 125: server.Runner.DuplicateTestSuite:output_type -> server.HelloReply + 21, // 126: server.Runner.RenameTestSuite:output_type -> server.HelloReply + 22, // 127: server.Runner.GetTestSuiteYaml:output_type -> server.YamlData + 23, // 128: server.Runner.ListTestCase:output_type -> server.Suite + 32, // 129: server.Runner.RunTestCase:output_type -> server.TestCaseResult + 19, // 130: server.Runner.BatchRun:output_type -> server.TestResult + 26, // 131: server.Runner.GetTestCase:output_type -> server.TestCase + 21, // 132: server.Runner.CreateTestCase:output_type -> server.HelloReply + 21, // 133: server.Runner.UpdateTestCase:output_type -> server.HelloReply + 21, // 134: server.Runner.DeleteTestCase:output_type -> server.HelloReply + 21, // 135: server.Runner.DuplicateTestCase:output_type -> server.HelloReply + 21, // 136: server.Runner.RenameTestCase:output_type -> server.HelloReply + 25, // 137: server.Runner.GetSuggestedAPIs:output_type -> server.TestCases + 4, // 138: server.Runner.GetHistorySuites:output_type -> server.HistorySuites + 20, // 139: server.Runner.GetHistoryTestCaseWithResult:output_type -> server.HistoryTestResult + 27, // 140: server.Runner.GetHistoryTestCase:output_type -> server.HistoryTestCase + 21, // 141: server.Runner.DeleteHistoryTestCase:output_type -> server.HelloReply + 21, // 142: server.Runner.DeleteAllHistoryTestCase:output_type -> server.HelloReply + 28, // 143: server.Runner.GetTestCaseAllHistory:output_type -> server.HistoryTestCases + 43, // 144: server.Runner.ListCodeGenerator:output_type -> server.SimpleList + 42, // 145: server.Runner.GenerateCode:output_type -> server.CommonResult + 42, // 146: server.Runner.HistoryGenerateCode:output_type -> server.CommonResult + 43, // 147: server.Runner.ListConverter:output_type -> server.SimpleList + 42, // 148: server.Runner.ConvertTestSuite:output_type -> server.CommonResult + 34, // 149: server.Runner.PopularHeaders:output_type -> server.Pairs + 34, // 150: server.Runner.FunctionsQuery:output_type -> server.Pairs + 34, // 151: server.Runner.FunctionsQueryStream:output_type -> server.Pairs + 42, // 152: server.Runner.GetSchema:output_type -> server.CommonResult + 54, // 153: server.Runner.GetVersion:output_type -> server.Version + 21, // 154: server.Runner.Sample:output_type -> server.HelloReply + 51, // 155: server.Runner.DownloadResponseFile:output_type -> server.FileData + 38, // 156: server.Runner.GetStoreKinds:output_type -> server.StoreKinds + 36, // 157: server.Runner.GetStores:output_type -> server.Stores + 37, // 158: server.Runner.CreateStore:output_type -> server.Store + 37, // 159: server.Runner.UpdateStore:output_type -> server.Store + 37, // 160: server.Runner.DeleteStore:output_type -> server.Store + 48, // 161: server.Runner.VerifyStore:output_type -> server.ExtensionStatus + 46, // 162: server.Runner.GetSecrets:output_type -> server.Secrets + 42, // 163: server.Runner.CreateSecret:output_type -> server.CommonResult + 42, // 164: server.Runner.DeleteSecret:output_type -> server.CommonResult + 42, // 165: server.Runner.UpdateSecret:output_type -> server.CommonResult + 50, // 166: server.Runner.PProf:output_type -> server.PProfData + 42, // 167: server.RunnerExtension.Run:output_type -> server.CommonResult + 1, // 168: server.UIExtension.GetMenus:output_type -> server.MenuList + 42, // 169: server.UIExtension.GetPageOfJS:output_type -> server.CommonResult + 42, // 170: server.UIExtension.GetPageOfCSS:output_type -> server.CommonResult + 42, // 171: server.UIExtension.GetPageOfStatic:output_type -> server.CommonResult + 43, // 172: server.ThemeExtension.GetThemes:output_type -> server.SimpleList + 42, // 173: server.ThemeExtension.GetTheme:output_type -> server.CommonResult + 43, // 174: server.ThemeExtension.GetBindings:output_type -> server.SimpleList + 42, // 175: server.ThemeExtension.GetBinding:output_type -> server.CommonResult + 52, // 176: server.Mock.Reload:output_type -> server.Empty + 53, // 177: server.Mock.GetConfig:output_type -> server.MockConfig + 42, // 178: server.Mock.LogWatch:output_type -> server.CommonResult + 57, // 179: server.DataServer.Query:output_type -> server.DataQueryResult + 117, // [117:180] is the sub-list for method output_type + 54, // [54:117] is the sub-list for method input_type 54, // [54:54] is the sub-list for extension type_name 54, // [54:54] is the sub-list for extension extendee 0, // [0:54] is the sub-list for field type_name diff --git a/pkg/server/server.pb.gw.go b/pkg/server/server.pb.gw.go index 61946929..bba4be98 100644 --- a/pkg/server/server.pb.gw.go +++ b/pkg/server/server.pb.gw.go @@ -2816,6 +2816,58 @@ func local_request_UIExtension_GetPageOfCSS_0(ctx context.Context, marshaler run } +func request_UIExtension_GetPageOfStatic_0(ctx context.Context, marshaler runtime.Marshaler, client UIExtensionClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq SimpleName + var metadata runtime.ServerMetadata + + var ( + val string + ok bool + err error + _ = err + ) + + val, ok = pathParams["name"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "name") + } + + protoReq.Name, err = runtime.String(val) + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "name", err) + } + + msg, err := client.GetPageOfStatic(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + return msg, metadata, err + +} + +func local_request_UIExtension_GetPageOfStatic_0(ctx context.Context, marshaler runtime.Marshaler, server UIExtensionServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq SimpleName + var metadata runtime.ServerMetadata + + var ( + val string + ok bool + err error + _ = err + ) + + val, ok = pathParams["name"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "name") + } + + protoReq.Name, err = runtime.String(val) + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "name", err) + } + + msg, err := server.GetPageOfStatic(ctx, &protoReq) + return msg, metadata, err + +} + func request_ThemeExtension_GetThemes_0(ctx context.Context, marshaler runtime.Marshaler, client ThemeExtensionClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { var protoReq Empty var metadata runtime.ServerMetadata @@ -4379,6 +4431,31 @@ func RegisterUIExtensionHandlerServer(ctx context.Context, mux *runtime.ServeMux }) + mux.Handle("GET", pattern_UIExtension_GetPageOfStatic_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + var stream runtime.ServerTransportStream + ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/server.UIExtension/GetPageOfStatic", runtime.WithHTTPPathPattern("/api/v1/extension/pages/{name}/static")) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := local_request_UIExtension_GetPageOfStatic_0(annotatedContext, inboundMarshaler, server, req, pathParams) + md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) + if err != nil { + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) + return + } + + forward_UIExtension_GetPageOfStatic_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + return nil } @@ -6111,6 +6188,28 @@ func RegisterUIExtensionHandlerClient(ctx context.Context, mux *runtime.ServeMux }) + mux.Handle("GET", pattern_UIExtension_GetPageOfStatic_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/server.UIExtension/GetPageOfStatic", runtime.WithHTTPPathPattern("/api/v1/extension/pages/{name}/static")) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := request_UIExtension_GetPageOfStatic_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) + if err != nil { + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) + return + } + + forward_UIExtension_GetPageOfStatic_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + return nil } @@ -6120,6 +6219,8 @@ var ( pattern_UIExtension_GetPageOfJS_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3, 1, 0, 4, 1, 5, 4, 2, 5}, []string{"api", "v1", "extension", "pages", "name", "js"}, "")) pattern_UIExtension_GetPageOfCSS_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3, 1, 0, 4, 1, 5, 4, 2, 5}, []string{"api", "v1", "extension", "pages", "name", "css"}, "")) + + pattern_UIExtension_GetPageOfStatic_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3, 1, 0, 4, 1, 5, 4, 2, 5}, []string{"api", "v1", "extension", "pages", "name", "static"}, "")) ) var ( @@ -6128,6 +6229,8 @@ var ( forward_UIExtension_GetPageOfJS_0 = runtime.ForwardResponseMessage forward_UIExtension_GetPageOfCSS_0 = runtime.ForwardResponseMessage + + forward_UIExtension_GetPageOfStatic_0 = runtime.ForwardResponseMessage ) // RegisterThemeExtensionHandlerFromEndpoint is same as RegisterThemeExtensionHandler but diff --git a/pkg/server/server.proto b/pkg/server/server.proto index d17cce00..9ef4ee21 100644 --- a/pkg/server/server.proto +++ b/pkg/server/server.proto @@ -328,6 +328,11 @@ service UIExtension { get: "/api/v1/extension/pages/{name}/css" }; } + rpc GetPageOfStatic(SimpleName) returns (CommonResult) { + option (google.api.http) = { + get: "/api/v1/extension/pages/{name}/static" + }; + } } message Menu { diff --git a/pkg/server/server_grpc.pb.go b/pkg/server/server_grpc.pb.go index 4f4773e0..065f3efa 100644 --- a/pkg/server/server_grpc.pb.go +++ b/pkg/server/server_grpc.pb.go @@ -2080,6 +2080,7 @@ type UIExtensionClient interface { GetMenus(ctx context.Context, in *Empty, opts ...grpc.CallOption) (*MenuList, error) GetPageOfJS(ctx context.Context, in *SimpleName, opts ...grpc.CallOption) (*CommonResult, error) GetPageOfCSS(ctx context.Context, in *SimpleName, opts ...grpc.CallOption) (*CommonResult, error) + GetPageOfStatic(ctx context.Context, in *SimpleName, opts ...grpc.CallOption) (*CommonResult, error) } type uIExtensionClient struct { @@ -2117,6 +2118,15 @@ func (c *uIExtensionClient) GetPageOfCSS(ctx context.Context, in *SimpleName, op return out, nil } +func (c *uIExtensionClient) GetPageOfStatic(ctx context.Context, in *SimpleName, opts ...grpc.CallOption) (*CommonResult, error) { + out := new(CommonResult) + err := c.cc.Invoke(ctx, "/server.UIExtension/GetPageOfStatic", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + // UIExtensionServer is the server API for UIExtension service. // All implementations must embed UnimplementedUIExtensionServer // for forward compatibility @@ -2124,6 +2134,7 @@ type UIExtensionServer interface { GetMenus(context.Context, *Empty) (*MenuList, error) GetPageOfJS(context.Context, *SimpleName) (*CommonResult, error) GetPageOfCSS(context.Context, *SimpleName) (*CommonResult, error) + GetPageOfStatic(context.Context, *SimpleName) (*CommonResult, error) mustEmbedUnimplementedUIExtensionServer() } @@ -2140,6 +2151,9 @@ func (UnimplementedUIExtensionServer) GetPageOfJS(context.Context, *SimpleName) func (UnimplementedUIExtensionServer) GetPageOfCSS(context.Context, *SimpleName) (*CommonResult, error) { return nil, status.Errorf(codes.Unimplemented, "method GetPageOfCSS not implemented") } +func (UnimplementedUIExtensionServer) GetPageOfStatic(context.Context, *SimpleName) (*CommonResult, error) { + return nil, status.Errorf(codes.Unimplemented, "method GetPageOfStatic not implemented") +} func (UnimplementedUIExtensionServer) mustEmbedUnimplementedUIExtensionServer() {} // UnsafeUIExtensionServer may be embedded to opt out of forward compatibility for this service. @@ -2207,6 +2221,24 @@ func _UIExtension_GetPageOfCSS_Handler(srv interface{}, ctx context.Context, dec return interceptor(ctx, in, info, handler) } +func _UIExtension_GetPageOfStatic_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(SimpleName) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(UIExtensionServer).GetPageOfStatic(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/server.UIExtension/GetPageOfStatic", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(UIExtensionServer).GetPageOfStatic(ctx, req.(*SimpleName)) + } + return interceptor(ctx, in, info, handler) +} + // UIExtension_ServiceDesc is the grpc.ServiceDesc for UIExtension service. // It's only intended for direct use with grpc.RegisterService, // and not to be introspected or modified (even as a copy) @@ -2226,6 +2258,10 @@ var UIExtension_ServiceDesc = grpc.ServiceDesc{ MethodName: "GetPageOfCSS", Handler: _UIExtension_GetPageOfCSS_Handler, }, + { + MethodName: "GetPageOfStatic", + Handler: _UIExtension_GetPageOfStatic_Handler, + }, }, Streams: []grpc.StreamDesc{}, Metadata: "pkg/server/server.proto", diff --git a/pkg/server/testdata/keybinding.json b/pkg/server/testdata/keybinding.json new file mode 100644 index 00000000..4264bb84 --- /dev/null +++ b/pkg/server/testdata/keybinding.json @@ -0,0 +1,18 @@ +{ + "name": "Default Key Bindings", + "pages": [ + { + "name": "DataManager", + "bindings": [ + { + "keys": [ + "Ctrl+E", + "Ctrl+Enter" + ], + "action": "executeQuery", + "description": "Execute query" + } + ] + } + ] +} diff --git a/pkg/server/testdata/simple_mock.yaml b/pkg/server/testdata/simple_mock.yaml new file mode 100644 index 00000000..02e04a64 --- /dev/null +++ b/pkg/server/testdata/simple_mock.yaml @@ -0,0 +1,5 @@ +objects: + - name: user + fields: + - name: username + kind: string diff --git a/pkg/testing/loader.go b/pkg/testing/loader.go index 3e94e1b7..744af112 100644 --- a/pkg/testing/loader.go +++ b/pkg/testing/loader.go @@ -36,6 +36,7 @@ type Loader interface { GetMenus() ([]*Menu, error) GetPageOfJS(string) (string, error) GetPageOfCSS(string) (string, error) + GetPageOfStatic(string) (string, error) } type Menu struct { diff --git a/pkg/testing/loader_file.go b/pkg/testing/loader_file.go index 3c0e1337..8a26276f 100644 --- a/pkg/testing/loader_file.go +++ b/pkg/testing/loader_file.go @@ -568,7 +568,7 @@ func (l *fileLoader) GetTheme(name string) (result string, err error) { } func (l *fileLoader) GetBindings() (result []string, err error) { - dataDir := home.GetBindingDir() + dataDir := filepath.Join(l.userConfigDir, "data/key-binding") _ = filepath.WalkDir(dataDir, func(path string, d os.DirEntry, err error) error { if err != nil { return err @@ -583,7 +583,7 @@ func (l *fileLoader) GetBindings() (result []string, err error) { } func (l *fileLoader) GetBinding(name string) (result string, err error) { - dataDir := home.GetBindingDir() + dataDir := filepath.Join(l.userConfigDir, "data/key-binding") themeFile := filepath.Join(dataDir, name+".json") var data []byte if data, err = os.ReadFile(themeFile); err == nil { @@ -606,3 +606,8 @@ func (l *fileLoader) GetPageOfCSS(s string) (string, error) { // no need to implement return "", nil } + +func (l *fileLoader) GetPageOfStatic(s string) (string, error) { + // no need to implement + return "", nil +} diff --git a/pkg/testing/loader_non.go b/pkg/testing/loader_non.go index 2d20cac0..5d2c376a 100644 --- a/pkg/testing/loader_non.go +++ b/pkg/testing/loader_non.go @@ -196,3 +196,7 @@ func (l *nonLoader) GetPageOfJS(s string) (string, error) { func (l *nonLoader) GetPageOfCSS(s string) (string, error) { return "", fmt.Errorf("not support") } + +func (l *nonLoader) GetPageOfStatic(s string) (string, error) { + return "", fmt.Errorf("not support") +} diff --git a/pkg/testing/remote/grpc_store.go b/pkg/testing/remote/grpc_store.go index 55c5f89b..8e25cf9e 100644 --- a/pkg/testing/remote/grpc_store.go +++ b/pkg/testing/remote/grpc_store.go @@ -417,6 +417,16 @@ func (g *gRPCLoader) GetPageOfCSS(name string) (result string, err error) { return } +func (g *gRPCLoader) GetPageOfStatic(name string) (result string, err error) { + var data *server.CommonResult + if data, err = g.client.GetPageOfStatic(g.ctx, &server.SimpleName{ + Name: name, + }); err == nil && data != nil { + result = data.Message + } + return +} + func (g *gRPCLoader) Parse() (server *mock.Server, err error) { return } diff --git a/pkg/testing/remote/loader.pb.go b/pkg/testing/remote/loader.pb.go index b0884d13..f00a2025 100644 --- a/pkg/testing/remote/loader.pb.go +++ b/pkg/testing/remote/loader.pb.go @@ -408,7 +408,7 @@ var file_pkg_testing_remote_loader_proto_rawDesc = []byte{ 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, - 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x32, 0xfd, 0x0d, 0x0a, 0x06, 0x4c, 0x6f, 0x61, 0x64, + 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x32, 0xbc, 0x0e, 0x0a, 0x06, 0x4c, 0x6f, 0x61, 0x64, 0x65, 0x72, 0x12, 0x34, 0x0a, 0x0d, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x65, 0x73, 0x74, 0x53, 0x75, 0x69, 0x74, 0x65, 0x12, 0x0d, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x12, 0x2e, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x2e, 0x54, 0x65, 0x73, 0x74, @@ -520,47 +520,50 @@ var file_pkg_testing_remote_loader_proto_rawDesc = []byte{ 0x65, 0x74, 0x50, 0x61, 0x67, 0x65, 0x4f, 0x66, 0x43, 0x53, 0x53, 0x12, 0x12, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x53, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x1a, 0x14, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, - 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0x00, 0x32, 0x96, 0x02, 0x0a, 0x0d, 0x53, 0x65, 0x63, 0x72, - 0x65, 0x74, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x2d, 0x0a, 0x09, 0x47, 0x65, 0x74, - 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x12, 0x0e, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, - 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x1a, 0x0e, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, - 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x22, 0x00, 0x12, 0x2e, 0x0a, 0x0a, 0x47, 0x65, 0x74, 0x53, - 0x65, 0x63, 0x72, 0x65, 0x74, 0x73, 0x12, 0x0d, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, - 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x0f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x53, - 0x65, 0x63, 0x72, 0x65, 0x74, 0x73, 0x22, 0x00, 0x12, 0x36, 0x0a, 0x0c, 0x43, 0x72, 0x65, 0x61, - 0x74, 0x65, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x12, 0x0e, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, - 0x72, 0x2e, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x1a, 0x14, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, - 0x72, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0x00, - 0x12, 0x36, 0x0a, 0x0c, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, - 0x12, 0x0e, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, - 0x1a, 0x14, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, - 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0x00, 0x12, 0x36, 0x0a, 0x0c, 0x55, 0x70, 0x64, 0x61, - 0x74, 0x65, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x12, 0x0e, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, - 0x72, 0x2e, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x1a, 0x14, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, + 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0x00, 0x12, 0x3d, 0x0a, 0x0f, 0x47, 0x65, 0x74, 0x50, 0x61, + 0x67, 0x65, 0x4f, 0x66, 0x53, 0x74, 0x61, 0x74, 0x69, 0x63, 0x12, 0x12, 0x2e, 0x73, 0x65, 0x72, + 0x76, 0x65, 0x72, 0x2e, 0x53, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x1a, 0x14, + 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, + 0x73, 0x75, 0x6c, 0x74, 0x22, 0x00, 0x32, 0x96, 0x02, 0x0a, 0x0d, 0x53, 0x65, 0x63, 0x72, 0x65, + 0x74, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x2d, 0x0a, 0x09, 0x47, 0x65, 0x74, 0x53, + 0x65, 0x63, 0x72, 0x65, 0x74, 0x12, 0x0e, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x53, + 0x65, 0x63, 0x72, 0x65, 0x74, 0x1a, 0x0e, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x53, + 0x65, 0x63, 0x72, 0x65, 0x74, 0x22, 0x00, 0x12, 0x2e, 0x0a, 0x0a, 0x47, 0x65, 0x74, 0x53, 0x65, + 0x63, 0x72, 0x65, 0x74, 0x73, 0x12, 0x0d, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x45, + 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x0f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x53, 0x65, + 0x63, 0x72, 0x65, 0x74, 0x73, 0x22, 0x00, 0x12, 0x36, 0x0a, 0x0c, 0x43, 0x72, 0x65, 0x61, 0x74, + 0x65, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x12, 0x0e, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, + 0x2e, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x1a, 0x14, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, + 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0x00, 0x12, + 0x36, 0x0a, 0x0c, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x12, + 0x0e, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x1a, + 0x14, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, + 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0x00, 0x12, 0x36, 0x0a, 0x0c, 0x55, 0x70, 0x64, 0x61, 0x74, + 0x65, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x12, 0x0e, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, + 0x2e, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x1a, 0x14, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, + 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0x00, 0x32, + 0x9e, 0x02, 0x0a, 0x0d, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, + 0x65, 0x12, 0x2e, 0x0a, 0x0a, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x73, 0x12, + 0x0d, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x0f, + 0x2e, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x73, 0x22, + 0x00, 0x12, 0x31, 0x0a, 0x09, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x12, + 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x53, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x4e, 0x61, + 0x6d, 0x65, 0x1a, 0x0e, 0x2e, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x2e, 0x43, 0x6f, 0x6e, 0x66, + 0x69, 0x67, 0x22, 0x00, 0x12, 0x36, 0x0a, 0x0c, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, 0x6f, + 0x6e, 0x66, 0x69, 0x67, 0x12, 0x0e, 0x2e, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x2e, 0x43, 0x6f, + 0x6e, 0x66, 0x69, 0x67, 0x1a, 0x14, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x43, 0x6f, + 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0x00, 0x12, 0x36, 0x0a, 0x0c, + 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x0e, 0x2e, 0x72, + 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x1a, 0x14, 0x2e, 0x73, + 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x75, + 0x6c, 0x74, 0x22, 0x00, 0x12, 0x3a, 0x0a, 0x0c, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x6f, + 0x6e, 0x66, 0x69, 0x67, 0x12, 0x12, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x53, 0x69, + 0x6d, 0x70, 0x6c, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x1a, 0x14, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0x00, - 0x32, 0x9e, 0x02, 0x0a, 0x0d, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x53, 0x65, 0x72, 0x76, 0x69, - 0x63, 0x65, 0x12, 0x2e, 0x0a, 0x0a, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x73, - 0x12, 0x0d, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, - 0x0f, 0x2e, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x73, - 0x22, 0x00, 0x12, 0x31, 0x0a, 0x09, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, - 0x12, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x53, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x4e, - 0x61, 0x6d, 0x65, 0x1a, 0x0e, 0x2e, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x2e, 0x43, 0x6f, 0x6e, - 0x66, 0x69, 0x67, 0x22, 0x00, 0x12, 0x36, 0x0a, 0x0c, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, - 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x0e, 0x2e, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x2e, 0x43, - 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x1a, 0x14, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x43, - 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0x00, 0x12, 0x36, 0x0a, - 0x0c, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x0e, 0x2e, - 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x1a, 0x14, 0x2e, - 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, - 0x75, 0x6c, 0x74, 0x22, 0x00, 0x12, 0x3a, 0x0a, 0x0c, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, - 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x12, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x53, - 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x1a, 0x14, 0x2e, 0x73, 0x65, 0x72, 0x76, - 0x65, 0x72, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, - 0x00, 0x42, 0x36, 0x5a, 0x34, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, - 0x6c, 0x69, 0x6e, 0x75, 0x78, 0x73, 0x75, 0x72, 0x65, 0x6e, 0x2f, 0x61, 0x70, 0x69, 0x2d, 0x74, - 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x69, - 0x6e, 0x67, 0x2f, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x33, + 0x42, 0x36, 0x5a, 0x34, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x6c, + 0x69, 0x6e, 0x75, 0x78, 0x73, 0x75, 0x72, 0x65, 0x6e, 0x2f, 0x61, 0x70, 0x69, 0x2d, 0x74, 0x65, + 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, + 0x67, 0x2f, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -645,58 +648,60 @@ var file_pkg_testing_remote_loader_proto_depIdxs = []int32{ 10, // 34: remote.Loader.GetMenus:input_type -> server.Empty 16, // 35: remote.Loader.GetPageOfJS:input_type -> server.SimpleName 16, // 36: remote.Loader.GetPageOfCSS:input_type -> server.SimpleName - 17, // 37: remote.SecretService.GetSecret:input_type -> server.Secret - 10, // 38: remote.SecretService.GetSecrets:input_type -> server.Empty - 17, // 39: remote.SecretService.CreateSecret:input_type -> server.Secret - 17, // 40: remote.SecretService.DeleteSecret:input_type -> server.Secret - 17, // 41: remote.SecretService.UpdateSecret:input_type -> server.Secret - 10, // 42: remote.ConfigService.GetConfigs:input_type -> server.Empty - 16, // 43: remote.ConfigService.GetConfig:input_type -> server.SimpleName - 5, // 44: remote.ConfigService.CreateConfig:input_type -> remote.Config - 5, // 45: remote.ConfigService.UpdateConfig:input_type -> remote.Config - 16, // 46: remote.ConfigService.DeleteConfig:input_type -> server.SimpleName - 0, // 47: remote.Loader.ListTestSuite:output_type -> remote.TestSuites - 10, // 48: remote.Loader.CreateTestSuite:output_type -> server.Empty - 1, // 49: remote.Loader.GetTestSuite:output_type -> remote.TestSuite - 1, // 50: remote.Loader.UpdateTestSuite:output_type -> remote.TestSuite - 10, // 51: remote.Loader.DeleteTestSuite:output_type -> server.Empty - 18, // 52: remote.Loader.RenameTestSuite:output_type -> server.HelloReply - 19, // 53: remote.Loader.ListTestCases:output_type -> server.TestCases - 10, // 54: remote.Loader.CreateTestCase:output_type -> server.Empty - 8, // 55: remote.Loader.GetTestCase:output_type -> server.TestCase - 8, // 56: remote.Loader.UpdateTestCase:output_type -> server.TestCase - 10, // 57: remote.Loader.DeleteTestCase:output_type -> server.Empty - 18, // 58: remote.Loader.RenameTestCase:output_type -> server.HelloReply - 2, // 59: remote.Loader.ListHistoryTestSuite:output_type -> remote.HistoryTestSuites - 10, // 60: remote.Loader.CreateTestCaseHistory:output_type -> server.Empty - 13, // 61: remote.Loader.GetHistoryTestCaseWithResult:output_type -> server.HistoryTestResult - 9, // 62: remote.Loader.GetHistoryTestCase:output_type -> server.HistoryTestCase - 10, // 63: remote.Loader.DeleteHistoryTestCase:output_type -> server.Empty - 10, // 64: remote.Loader.DeleteAllHistoryTestCase:output_type -> server.Empty - 20, // 65: remote.Loader.GetTestCaseAllHistory:output_type -> server.HistoryTestCases - 21, // 66: remote.Loader.GetVersion:output_type -> server.Version - 22, // 67: remote.Loader.Verify:output_type -> server.ExtensionStatus - 23, // 68: remote.Loader.PProf:output_type -> server.PProfData - 24, // 69: remote.Loader.Query:output_type -> server.DataQueryResult - 25, // 70: remote.Loader.GetThemes:output_type -> server.SimpleList - 26, // 71: remote.Loader.GetTheme:output_type -> server.CommonResult - 25, // 72: remote.Loader.GetBindings:output_type -> server.SimpleList - 26, // 73: remote.Loader.GetBinding:output_type -> server.CommonResult - 27, // 74: remote.Loader.GetMenus:output_type -> server.MenuList - 26, // 75: remote.Loader.GetPageOfJS:output_type -> server.CommonResult - 26, // 76: remote.Loader.GetPageOfCSS:output_type -> server.CommonResult - 17, // 77: remote.SecretService.GetSecret:output_type -> server.Secret - 28, // 78: remote.SecretService.GetSecrets:output_type -> server.Secrets - 26, // 79: remote.SecretService.CreateSecret:output_type -> server.CommonResult - 26, // 80: remote.SecretService.DeleteSecret:output_type -> server.CommonResult - 26, // 81: remote.SecretService.UpdateSecret:output_type -> server.CommonResult - 4, // 82: remote.ConfigService.GetConfigs:output_type -> remote.Configs - 5, // 83: remote.ConfigService.GetConfig:output_type -> remote.Config - 26, // 84: remote.ConfigService.CreateConfig:output_type -> server.CommonResult - 26, // 85: remote.ConfigService.UpdateConfig:output_type -> server.CommonResult - 26, // 86: remote.ConfigService.DeleteConfig:output_type -> server.CommonResult - 47, // [47:87] is the sub-list for method output_type - 7, // [7:47] is the sub-list for method input_type + 16, // 37: remote.Loader.GetPageOfStatic:input_type -> server.SimpleName + 17, // 38: remote.SecretService.GetSecret:input_type -> server.Secret + 10, // 39: remote.SecretService.GetSecrets:input_type -> server.Empty + 17, // 40: remote.SecretService.CreateSecret:input_type -> server.Secret + 17, // 41: remote.SecretService.DeleteSecret:input_type -> server.Secret + 17, // 42: remote.SecretService.UpdateSecret:input_type -> server.Secret + 10, // 43: remote.ConfigService.GetConfigs:input_type -> server.Empty + 16, // 44: remote.ConfigService.GetConfig:input_type -> server.SimpleName + 5, // 45: remote.ConfigService.CreateConfig:input_type -> remote.Config + 5, // 46: remote.ConfigService.UpdateConfig:input_type -> remote.Config + 16, // 47: remote.ConfigService.DeleteConfig:input_type -> server.SimpleName + 0, // 48: remote.Loader.ListTestSuite:output_type -> remote.TestSuites + 10, // 49: remote.Loader.CreateTestSuite:output_type -> server.Empty + 1, // 50: remote.Loader.GetTestSuite:output_type -> remote.TestSuite + 1, // 51: remote.Loader.UpdateTestSuite:output_type -> remote.TestSuite + 10, // 52: remote.Loader.DeleteTestSuite:output_type -> server.Empty + 18, // 53: remote.Loader.RenameTestSuite:output_type -> server.HelloReply + 19, // 54: remote.Loader.ListTestCases:output_type -> server.TestCases + 10, // 55: remote.Loader.CreateTestCase:output_type -> server.Empty + 8, // 56: remote.Loader.GetTestCase:output_type -> server.TestCase + 8, // 57: remote.Loader.UpdateTestCase:output_type -> server.TestCase + 10, // 58: remote.Loader.DeleteTestCase:output_type -> server.Empty + 18, // 59: remote.Loader.RenameTestCase:output_type -> server.HelloReply + 2, // 60: remote.Loader.ListHistoryTestSuite:output_type -> remote.HistoryTestSuites + 10, // 61: remote.Loader.CreateTestCaseHistory:output_type -> server.Empty + 13, // 62: remote.Loader.GetHistoryTestCaseWithResult:output_type -> server.HistoryTestResult + 9, // 63: remote.Loader.GetHistoryTestCase:output_type -> server.HistoryTestCase + 10, // 64: remote.Loader.DeleteHistoryTestCase:output_type -> server.Empty + 10, // 65: remote.Loader.DeleteAllHistoryTestCase:output_type -> server.Empty + 20, // 66: remote.Loader.GetTestCaseAllHistory:output_type -> server.HistoryTestCases + 21, // 67: remote.Loader.GetVersion:output_type -> server.Version + 22, // 68: remote.Loader.Verify:output_type -> server.ExtensionStatus + 23, // 69: remote.Loader.PProf:output_type -> server.PProfData + 24, // 70: remote.Loader.Query:output_type -> server.DataQueryResult + 25, // 71: remote.Loader.GetThemes:output_type -> server.SimpleList + 26, // 72: remote.Loader.GetTheme:output_type -> server.CommonResult + 25, // 73: remote.Loader.GetBindings:output_type -> server.SimpleList + 26, // 74: remote.Loader.GetBinding:output_type -> server.CommonResult + 27, // 75: remote.Loader.GetMenus:output_type -> server.MenuList + 26, // 76: remote.Loader.GetPageOfJS:output_type -> server.CommonResult + 26, // 77: remote.Loader.GetPageOfCSS:output_type -> server.CommonResult + 26, // 78: remote.Loader.GetPageOfStatic:output_type -> server.CommonResult + 17, // 79: remote.SecretService.GetSecret:output_type -> server.Secret + 28, // 80: remote.SecretService.GetSecrets:output_type -> server.Secrets + 26, // 81: remote.SecretService.CreateSecret:output_type -> server.CommonResult + 26, // 82: remote.SecretService.DeleteSecret:output_type -> server.CommonResult + 26, // 83: remote.SecretService.UpdateSecret:output_type -> server.CommonResult + 4, // 84: remote.ConfigService.GetConfigs:output_type -> remote.Configs + 5, // 85: remote.ConfigService.GetConfig:output_type -> remote.Config + 26, // 86: remote.ConfigService.CreateConfig:output_type -> server.CommonResult + 26, // 87: remote.ConfigService.UpdateConfig:output_type -> server.CommonResult + 26, // 88: remote.ConfigService.DeleteConfig:output_type -> server.CommonResult + 48, // [48:89] is the sub-list for method output_type + 7, // [7:48] is the sub-list for method input_type 7, // [7:7] is the sub-list for extension type_name 7, // [7:7] is the sub-list for extension extendee 0, // [0:7] is the sub-list for field type_name diff --git a/pkg/testing/remote/loader.proto b/pkg/testing/remote/loader.proto index d9827cd3..efe326df 100644 --- a/pkg/testing/remote/loader.proto +++ b/pkg/testing/remote/loader.proto @@ -42,6 +42,7 @@ service Loader { rpc GetMenus(server.Empty) returns (server.MenuList) {} rpc GetPageOfJS(server.SimpleName) returns (server.CommonResult) {} rpc GetPageOfCSS(server.SimpleName) returns (server.CommonResult) {} + rpc GetPageOfStatic(server.SimpleName) returns (server.CommonResult) {} } message TestSuites { diff --git a/pkg/testing/remote/loader_grpc.pb.go b/pkg/testing/remote/loader_grpc.pb.go index a8fc909d..2c97d019 100644 --- a/pkg/testing/remote/loader_grpc.pb.go +++ b/pkg/testing/remote/loader_grpc.pb.go @@ -53,6 +53,7 @@ type LoaderClient interface { GetMenus(ctx context.Context, in *server.Empty, opts ...grpc.CallOption) (*server.MenuList, error) GetPageOfJS(ctx context.Context, in *server.SimpleName, opts ...grpc.CallOption) (*server.CommonResult, error) GetPageOfCSS(ctx context.Context, in *server.SimpleName, opts ...grpc.CallOption) (*server.CommonResult, error) + GetPageOfStatic(ctx context.Context, in *server.SimpleName, opts ...grpc.CallOption) (*server.CommonResult, error) } type loaderClient struct { @@ -333,6 +334,15 @@ func (c *loaderClient) GetPageOfCSS(ctx context.Context, in *server.SimpleName, return out, nil } +func (c *loaderClient) GetPageOfStatic(ctx context.Context, in *server.SimpleName, opts ...grpc.CallOption) (*server.CommonResult, error) { + out := new(server.CommonResult) + err := c.cc.Invoke(ctx, "/remote.Loader/GetPageOfStatic", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + // LoaderServer is the server API for Loader service. // All implementations must embed UnimplementedLoaderServer // for forward compatibility @@ -367,6 +377,7 @@ type LoaderServer interface { GetMenus(context.Context, *server.Empty) (*server.MenuList, error) GetPageOfJS(context.Context, *server.SimpleName) (*server.CommonResult, error) GetPageOfCSS(context.Context, *server.SimpleName) (*server.CommonResult, error) + GetPageOfStatic(context.Context, *server.SimpleName) (*server.CommonResult, error) mustEmbedUnimplementedLoaderServer() } @@ -464,6 +475,9 @@ func (UnimplementedLoaderServer) GetPageOfJS(context.Context, *server.SimpleName func (UnimplementedLoaderServer) GetPageOfCSS(context.Context, *server.SimpleName) (*server.CommonResult, error) { return nil, status.Errorf(codes.Unimplemented, "method GetPageOfCSS not implemented") } +func (UnimplementedLoaderServer) GetPageOfStatic(context.Context, *server.SimpleName) (*server.CommonResult, error) { + return nil, status.Errorf(codes.Unimplemented, "method GetPageOfStatic not implemented") +} func (UnimplementedLoaderServer) mustEmbedUnimplementedLoaderServer() {} // UnsafeLoaderServer may be embedded to opt out of forward compatibility for this service. @@ -1017,6 +1031,24 @@ func _Loader_GetPageOfCSS_Handler(srv interface{}, ctx context.Context, dec func return interceptor(ctx, in, info, handler) } +func _Loader_GetPageOfStatic_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(server.SimpleName) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(LoaderServer).GetPageOfStatic(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/remote.Loader/GetPageOfStatic", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(LoaderServer).GetPageOfStatic(ctx, req.(*server.SimpleName)) + } + return interceptor(ctx, in, info, handler) +} + // Loader_ServiceDesc is the grpc.ServiceDesc for Loader service. // It's only intended for direct use with grpc.RegisterService, // and not to be introspected or modified (even as a copy) @@ -1144,6 +1176,10 @@ var Loader_ServiceDesc = grpc.ServiceDesc{ MethodName: "GetPageOfCSS", Handler: _Loader_GetPageOfCSS_Handler, }, + { + MethodName: "GetPageOfStatic", + Handler: _Loader_GetPageOfStatic_Handler, + }, }, Streams: []grpc.StreamDesc{}, Metadata: "pkg/testing/remote/loader.proto", diff --git a/pkg/testing/store_test.go b/pkg/testing/store_test.go index 7af2f016..311c2fee 100644 --- a/pkg/testing/store_test.go +++ b/pkg/testing/store_test.go @@ -54,9 +54,12 @@ func TestStoreFactory(t *testing.T) { assert.Equal(t, &Store{ Name: "db", Kind: StoreKind{ - Name: "database", - URL: "localhost:7071", - Enabled: true, + Name: "database", + URL: "localhost:7071", + Enabled: true, + Dependencies: []StoreKindDependency{}, + Params: []StoreKindParam{}, + Categories: []string{}, }, URL: "localhost:4000", Username: "root", diff --git a/pkg/testing/testdata/stores.yaml b/pkg/testing/testdata/stores.yaml index a21fff25..b869efee 100644 --- a/pkg/testing/testdata/stores.yaml +++ b/pkg/testing/testdata/stores.yaml @@ -3,8 +3,12 @@ stores: owner: "" kind: name: database + dependencies: [] url: localhost:7071 + params: [] + link: "" enabled: true + categories: [] description: "" url: localhost:4000 username: root @@ -17,8 +21,12 @@ stores: owner: rick kind: name: "" + dependencies: [] url: "" + params: [] + link: "" enabled: false + categories: [] description: "" url: "" username: "" @@ -28,5 +36,10 @@ stores: properties: {} plugins: - name: database + dependencies: [] url: localhost:7071 + params: [] + link: "" enabled: true + categories: [] +items: []