diff --git a/console/atest-ui/src/components/MagicKey.vue b/console/atest-ui/src/components/MagicKey.vue
index 1855e3c1..031d1736 100644
--- a/console/atest-ui/src/components/MagicKey.vue
+++ b/console/atest-ui/src/components/MagicKey.vue
@@ -1,5 +1,6 @@
@@ -384,6 +396,7 @@ Magic.AdvancedKeys([{
>({
name: [{ required: true, message: 'Name is required', trigger: 'blur' }],
diff --git a/console/atest-ui/src/views/TestCase.vue b/console/atest-ui/src/views/TestCase.vue
index 64d3a71a..de0f4237 100644
--- a/console/atest-ui/src/views/TestCase.vue
+++ b/console/atest-ui/src/views/TestCase.vue
@@ -919,42 +919,30 @@ const renameTestCase = (name: string) => {
})
}
-Magic.AdvancedKeys([{
- Keys: ['Alt+S', 'Alt+ß'],
- Func: sendRequest,
- Description: 'Send the request'
-}, {
- Keys: ['Alt+KeyD'],
- Func: openDuplicateTestCaseDialog,
- Description: 'Duplicate the test case'
-}, {
- Keys: ['Alt+KeyO'],
- Func: () => {
+const openOutputTab = () => {
if (duplicateTestCaseDialog.value) {
duplicateTestCase()
}
testResultActiveTab.value = 'output'
- },
- Description: 'Open the output tab'
-}, {
- Keys: ['Alt+KeyB'],
- Func: () => {
+}
+const openBodyTab = () => {
testResultActiveTab.value = 'body'
- },
- Description: 'Open the body tab'
-}, {
- Keys: ['Alt+KeyH'],
- Func: () => {
+}
+const openHeaderTab = () => {
testResultActiveTab.value = 'header'
- },
- Description: 'Open the header tab'
-}, {
- Keys: ['Alt+KeyQ'],
- Func: () => {
+}
+const openQueryTab = () => {
testResultActiveTab.value = 'query'
- },
- Description: 'Open the query tab'
-}])
+}
+
+Magic.LoadMagicKeys(import.meta.url), {
+ "sendRequest": sendRequest,
+ "openDuplicateTestCaseDialog": openDuplicateTestCaseDialog,
+ "openOutputTab": openOutputTab,
+ "openBodyTab": openBodyTab,
+ "openHeaderTab": openHeaderTab,
+ "openQueryTab": openQueryTab
+}
diff --git a/console/atest-ui/src/views/TestSuite.vue b/console/atest-ui/src/views/TestSuite.vue
index 5ac01b48..a7a0a7b7 100644
--- a/console/atest-ui/src/views/TestSuite.vue
+++ b/console/atest-ui/src/views/TestSuite.vue
@@ -153,15 +153,10 @@ function openNewTestCaseDialog() {
querySuggestedAPIs = NewSuggestedAPIsQuery(Cache.GetCurrentStore().name!, props.name!)
}
-Magic.AdvancedKeys([{
- Keys: ['Alt+N', 'Alt+dead'],
- Func: openNewTestCaseDialog,
- Description: 'Open new test case dialog',
-}, {
- Keys: ['Alt+S', 'Alt+ß'],
- Func: saveTestSuite,
- Description: 'Save test suite',
-}])
+Magic.LoadMagicKeys(import.meta.url, {
+ "openNewTestCaseDialog": openNewTestCaseDialog,
+ "saveTestSuite": saveTestSuite,
+})
const submitTestCaseForm = async (formEl: FormInstance | undefined) => {
if (!formEl) return
diff --git a/console/atest-ui/src/views/magicKeys.ts b/console/atest-ui/src/views/magicKeys.ts
index be9c32b3..e03669f4 100644
--- a/console/atest-ui/src/views/magicKeys.ts
+++ b/console/atest-ui/src/views/magicKeys.ts
@@ -16,6 +16,7 @@ limitations under the License.
import { watch } from 'vue'
import { useMagicKeys } from '@vueuse/core'
+import { API } from './net'
function Keys(func: (() => void) | ((k: string) => void), keys: string[]) {
const magicKeys = useMagicKeys()
@@ -54,6 +55,46 @@ const AdvancedKeys = (keys: MagicKey[]) => {
})
}
+interface KeyBindings {
+ name: string
+ pages: Page[]
+}
+
+interface Page {
+ name: string
+ bindings: KeyBinding[]
+}
+
+interface KeyBinding {
+ keys: string[]
+ description?: string
+ action: string
+}
+
+const LoadMagicKeys = (url: String, mapping: Map) => {
+ const fileName = url.substring(url.lastIndexOf('/') + 1);
+ const pageName = fileName.split(".vue")[0];
+ API.GetBinding("default", (data) => {
+ const bindings = JSON.parse(data.message) as KeyBindings;
+ bindings.pages.forEach((page: Page) => {
+ if (page.name === pageName) {
+ const keys = [] as MagicKey[]
+ page.bindings.forEach((binding: KeyBinding) => {
+ keys.push({
+ Keys: binding.keys,
+ Func: () => {
+ mapping.has(binding.action) ? mapping.get(binding.action)!() : console.warn(`No action found for ${binding.action}`);
+ },
+ Description: binding.description,
+ });
+ });
+ AdvancedKeys(keys);
+ return;
+ }
+ })
+ })
+}
+
export const Magic = {
- Keys, AdvancedKeys, MagicKeyEventName
+ Keys, AdvancedKeys, MagicKeyEventName, LoadMagicKeys
}
diff --git a/console/atest-ui/src/views/net.ts b/console/atest-ui/src/views/net.ts
index d9c2c597..340cd989 100644
--- a/console/atest-ui/src/views/net.ts
+++ b/console/atest-ui/src/views/net.ts
@@ -908,6 +908,11 @@ const GetTheme = (name: string, callback: (d: any) => void | null) => {
.then(DefaultResponseProcess).then(callback)
}
+const GetBinding = (name: string, callback: (d: any) => void | null) => {
+ return fetch(`/api/v1/bindings/${name}`, {})
+ .then(DefaultResponseProcess).then(callback)
+}
+
export const API = {
DefaultResponseProcess,
GetVersion,
@@ -921,6 +926,6 @@ export const API = {
GetSecrets, DeleteSecret, CreateOrUpdateSecret,
GetSuggestedAPIs, GetSwaggers,
ReloadMockServer, GetMockConfig, SBOM, DataQuery, DataQueryAsync,
- GetThemes, GetTheme,
+ GetThemes, GetTheme, GetBinding,
getToken
}
diff --git a/pkg/server/remote_server.go b/pkg/server/remote_server.go
index 7fbc8262..0913b427 100644
--- a/pkg/server/remote_server.go
+++ b/pkg/server/remote_server.go
@@ -1322,6 +1322,35 @@ func (s *server) GetTheme(ctx context.Context, in *SimpleName) (result *CommonRe
return
}
+func (s *server) GetBindings(ctx context.Context, _ *Empty) (result *SimpleList, err error) {
+ loader := s.getLoader(ctx)
+ defer loader.Close()
+
+ result = &SimpleList{}
+ var bindings []string
+ if bindings, err = loader.GetBindings(); err == nil {
+ for _, theme := range bindings {
+ result.Data = append(result.Data, &Pair{
+ Key: theme,
+ Value: "",
+ })
+ }
+ }
+ return
+}
+
+func (s *server) GetBinding(ctx context.Context, in *SimpleName) (result *CommonResult, err error) {
+ loader := s.getLoader(ctx)
+ defer loader.Close()
+
+ result = &CommonResult{}
+ result.Message, err = loader.GetBinding(in.Name)
+ if err != nil {
+ result.Message = fmt.Sprintf("failed to get binding: %v", err)
+ }
+ return
+}
+
// implement the mock server
// Start starts the mock server
diff --git a/pkg/server/server.pb.go b/pkg/server/server.pb.go
index 64b22e20..86a85080 100644
--- a/pkg/server/server.pb.go
+++ b/pkg/server/server.pb.go
@@ -4301,7 +4301,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, 0xad, 0x01,
+ 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x2f, 0x72, 0x75, 0x6e, 0x3a, 0x01, 0x2a, 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,
@@ -4312,27 +4312,37 @@ var file_pkg_server_server_proto_rawDesc = []byte{
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, 0x32, 0xa0, 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,
- 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,
+ 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, 0xa0, 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, 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 (
@@ -4513,66 +4523,70 @@ var file_pkg_server_server_proto_depIdxs = []int32{
8, // 100: server.RunnerExtension.Run:input_type -> server.TestSuiteWithCase
48, // 101: server.ThemeExtension.GetThemes:input_type -> server.Empty
40, // 102: server.ThemeExtension.GetTheme:input_type -> server.SimpleName
- 49, // 103: server.Mock.Reload:input_type -> server.MockConfig
- 48, // 104: server.Mock.GetConfig:input_type -> server.Empty
- 52, // 105: server.DataServer.Query:input_type -> server.DataQuery
- 17, // 106: server.Runner.Run:output_type -> server.TestResult
- 17, // 107: server.Runner.RunTestSuite:output_type -> server.TestResult
- 0, // 108: server.Runner.GetSuites:output_type -> server.Suites
- 19, // 109: server.Runner.CreateTestSuite:output_type -> server.HelloReply
- 38, // 110: server.Runner.ImportTestSuite:output_type -> server.CommonResult
- 7, // 111: server.Runner.GetTestSuite:output_type -> server.TestSuite
- 19, // 112: server.Runner.UpdateTestSuite:output_type -> server.HelloReply
- 19, // 113: server.Runner.DeleteTestSuite:output_type -> server.HelloReply
- 19, // 114: server.Runner.DuplicateTestSuite:output_type -> server.HelloReply
- 19, // 115: server.Runner.RenameTestSuite:output_type -> server.HelloReply
- 20, // 116: server.Runner.GetTestSuiteYaml:output_type -> server.YamlData
- 21, // 117: server.Runner.ListTestCase:output_type -> server.Suite
- 30, // 118: server.Runner.RunTestCase:output_type -> server.TestCaseResult
- 17, // 119: server.Runner.BatchRun:output_type -> server.TestResult
- 24, // 120: server.Runner.GetTestCase:output_type -> server.TestCase
- 19, // 121: server.Runner.CreateTestCase:output_type -> server.HelloReply
- 19, // 122: server.Runner.UpdateTestCase:output_type -> server.HelloReply
- 19, // 123: server.Runner.DeleteTestCase:output_type -> server.HelloReply
- 19, // 124: server.Runner.DuplicateTestCase:output_type -> server.HelloReply
- 19, // 125: server.Runner.RenameTestCase:output_type -> server.HelloReply
- 23, // 126: server.Runner.GetSuggestedAPIs:output_type -> server.TestCases
- 2, // 127: server.Runner.GetHistorySuites:output_type -> server.HistorySuites
- 18, // 128: server.Runner.GetHistoryTestCaseWithResult:output_type -> server.HistoryTestResult
- 25, // 129: server.Runner.GetHistoryTestCase:output_type -> server.HistoryTestCase
- 19, // 130: server.Runner.DeleteHistoryTestCase:output_type -> server.HelloReply
- 19, // 131: server.Runner.DeleteAllHistoryTestCase:output_type -> server.HelloReply
- 26, // 132: server.Runner.GetTestCaseAllHistory:output_type -> server.HistoryTestCases
- 39, // 133: server.Runner.ListCodeGenerator:output_type -> server.SimpleList
- 38, // 134: server.Runner.GenerateCode:output_type -> server.CommonResult
- 38, // 135: server.Runner.HistoryGenerateCode:output_type -> server.CommonResult
- 39, // 136: server.Runner.ListConverter:output_type -> server.SimpleList
- 38, // 137: server.Runner.ConvertTestSuite:output_type -> server.CommonResult
- 32, // 138: server.Runner.PopularHeaders:output_type -> server.Pairs
- 32, // 139: server.Runner.FunctionsQuery:output_type -> server.Pairs
- 32, // 140: server.Runner.FunctionsQueryStream:output_type -> server.Pairs
- 50, // 141: server.Runner.GetVersion:output_type -> server.Version
- 19, // 142: server.Runner.Sample:output_type -> server.HelloReply
- 47, // 143: server.Runner.DownloadResponseFile:output_type -> server.FileData
- 36, // 144: server.Runner.GetStoreKinds:output_type -> server.StoreKinds
- 34, // 145: server.Runner.GetStores:output_type -> server.Stores
- 35, // 146: server.Runner.CreateStore:output_type -> server.Store
- 35, // 147: server.Runner.UpdateStore:output_type -> server.Store
- 35, // 148: server.Runner.DeleteStore:output_type -> server.Store
- 44, // 149: server.Runner.VerifyStore:output_type -> server.ExtensionStatus
- 42, // 150: server.Runner.GetSecrets:output_type -> server.Secrets
- 38, // 151: server.Runner.CreateSecret:output_type -> server.CommonResult
- 38, // 152: server.Runner.DeleteSecret:output_type -> server.CommonResult
- 38, // 153: server.Runner.UpdateSecret:output_type -> server.CommonResult
- 46, // 154: server.Runner.PProf:output_type -> server.PProfData
- 38, // 155: server.RunnerExtension.Run:output_type -> server.CommonResult
- 39, // 156: server.ThemeExtension.GetThemes:output_type -> server.SimpleList
- 38, // 157: server.ThemeExtension.GetTheme:output_type -> server.CommonResult
- 48, // 158: server.Mock.Reload:output_type -> server.Empty
- 49, // 159: server.Mock.GetConfig:output_type -> server.MockConfig
- 53, // 160: server.DataServer.Query:output_type -> server.DataQueryResult
- 106, // [106:161] is the sub-list for method output_type
- 51, // [51:106] is the sub-list for method input_type
+ 48, // 103: server.ThemeExtension.GetBindings:input_type -> server.Empty
+ 40, // 104: server.ThemeExtension.GetBinding:input_type -> server.SimpleName
+ 49, // 105: server.Mock.Reload:input_type -> server.MockConfig
+ 48, // 106: server.Mock.GetConfig:input_type -> server.Empty
+ 52, // 107: server.DataServer.Query:input_type -> server.DataQuery
+ 17, // 108: server.Runner.Run:output_type -> server.TestResult
+ 17, // 109: server.Runner.RunTestSuite:output_type -> server.TestResult
+ 0, // 110: server.Runner.GetSuites:output_type -> server.Suites
+ 19, // 111: server.Runner.CreateTestSuite:output_type -> server.HelloReply
+ 38, // 112: server.Runner.ImportTestSuite:output_type -> server.CommonResult
+ 7, // 113: server.Runner.GetTestSuite:output_type -> server.TestSuite
+ 19, // 114: server.Runner.UpdateTestSuite:output_type -> server.HelloReply
+ 19, // 115: server.Runner.DeleteTestSuite:output_type -> server.HelloReply
+ 19, // 116: server.Runner.DuplicateTestSuite:output_type -> server.HelloReply
+ 19, // 117: server.Runner.RenameTestSuite:output_type -> server.HelloReply
+ 20, // 118: server.Runner.GetTestSuiteYaml:output_type -> server.YamlData
+ 21, // 119: server.Runner.ListTestCase:output_type -> server.Suite
+ 30, // 120: server.Runner.RunTestCase:output_type -> server.TestCaseResult
+ 17, // 121: server.Runner.BatchRun:output_type -> server.TestResult
+ 24, // 122: server.Runner.GetTestCase:output_type -> server.TestCase
+ 19, // 123: server.Runner.CreateTestCase:output_type -> server.HelloReply
+ 19, // 124: server.Runner.UpdateTestCase:output_type -> server.HelloReply
+ 19, // 125: server.Runner.DeleteTestCase:output_type -> server.HelloReply
+ 19, // 126: server.Runner.DuplicateTestCase:output_type -> server.HelloReply
+ 19, // 127: server.Runner.RenameTestCase:output_type -> server.HelloReply
+ 23, // 128: server.Runner.GetSuggestedAPIs:output_type -> server.TestCases
+ 2, // 129: server.Runner.GetHistorySuites:output_type -> server.HistorySuites
+ 18, // 130: server.Runner.GetHistoryTestCaseWithResult:output_type -> server.HistoryTestResult
+ 25, // 131: server.Runner.GetHistoryTestCase:output_type -> server.HistoryTestCase
+ 19, // 132: server.Runner.DeleteHistoryTestCase:output_type -> server.HelloReply
+ 19, // 133: server.Runner.DeleteAllHistoryTestCase:output_type -> server.HelloReply
+ 26, // 134: server.Runner.GetTestCaseAllHistory:output_type -> server.HistoryTestCases
+ 39, // 135: server.Runner.ListCodeGenerator:output_type -> server.SimpleList
+ 38, // 136: server.Runner.GenerateCode:output_type -> server.CommonResult
+ 38, // 137: server.Runner.HistoryGenerateCode:output_type -> server.CommonResult
+ 39, // 138: server.Runner.ListConverter:output_type -> server.SimpleList
+ 38, // 139: server.Runner.ConvertTestSuite:output_type -> server.CommonResult
+ 32, // 140: server.Runner.PopularHeaders:output_type -> server.Pairs
+ 32, // 141: server.Runner.FunctionsQuery:output_type -> server.Pairs
+ 32, // 142: server.Runner.FunctionsQueryStream:output_type -> server.Pairs
+ 50, // 143: server.Runner.GetVersion:output_type -> server.Version
+ 19, // 144: server.Runner.Sample:output_type -> server.HelloReply
+ 47, // 145: server.Runner.DownloadResponseFile:output_type -> server.FileData
+ 36, // 146: server.Runner.GetStoreKinds:output_type -> server.StoreKinds
+ 34, // 147: server.Runner.GetStores:output_type -> server.Stores
+ 35, // 148: server.Runner.CreateStore:output_type -> server.Store
+ 35, // 149: server.Runner.UpdateStore:output_type -> server.Store
+ 35, // 150: server.Runner.DeleteStore:output_type -> server.Store
+ 44, // 151: server.Runner.VerifyStore:output_type -> server.ExtensionStatus
+ 42, // 152: server.Runner.GetSecrets:output_type -> server.Secrets
+ 38, // 153: server.Runner.CreateSecret:output_type -> server.CommonResult
+ 38, // 154: server.Runner.DeleteSecret:output_type -> server.CommonResult
+ 38, // 155: server.Runner.UpdateSecret:output_type -> server.CommonResult
+ 46, // 156: server.Runner.PProf:output_type -> server.PProfData
+ 38, // 157: server.RunnerExtension.Run:output_type -> server.CommonResult
+ 39, // 158: server.ThemeExtension.GetThemes:output_type -> server.SimpleList
+ 38, // 159: server.ThemeExtension.GetTheme:output_type -> server.CommonResult
+ 39, // 160: server.ThemeExtension.GetBindings:output_type -> server.SimpleList
+ 38, // 161: server.ThemeExtension.GetBinding:output_type -> server.CommonResult
+ 48, // 162: server.Mock.Reload:output_type -> server.Empty
+ 49, // 163: server.Mock.GetConfig:output_type -> server.MockConfig
+ 53, // 164: server.DataServer.Query:output_type -> server.DataQueryResult
+ 108, // [108:165] is the sub-list for method output_type
+ 51, // [51:108] is the sub-list for method input_type
51, // [51:51] is the sub-list for extension type_name
51, // [51:51] is the sub-list for extension extendee
0, // [0:51] 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 d8a35876..4d39309b 100644
--- a/pkg/server/server.pb.gw.go
+++ b/pkg/server/server.pb.gw.go
@@ -2676,6 +2676,76 @@ func local_request_ThemeExtension_GetTheme_0(ctx context.Context, marshaler runt
}
+func request_ThemeExtension_GetBindings_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
+
+ msg, err := client.GetBindings(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
+ return msg, metadata, err
+
+}
+
+func local_request_ThemeExtension_GetBindings_0(ctx context.Context, marshaler runtime.Marshaler, server ThemeExtensionServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
+ var protoReq Empty
+ var metadata runtime.ServerMetadata
+
+ msg, err := server.GetBindings(ctx, &protoReq)
+ return msg, metadata, err
+
+}
+
+func request_ThemeExtension_GetBinding_0(ctx context.Context, marshaler runtime.Marshaler, client ThemeExtensionClient, 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.GetBinding(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
+ return msg, metadata, err
+
+}
+
+func local_request_ThemeExtension_GetBinding_0(ctx context.Context, marshaler runtime.Marshaler, server ThemeExtensionServer, 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.GetBinding(ctx, &protoReq)
+ return msg, metadata, err
+
+}
+
func request_Mock_Reload_0(ctx context.Context, marshaler runtime.Marshaler, client MockClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
var protoReq MockConfig
var metadata runtime.ServerMetadata
@@ -4032,6 +4102,56 @@ func RegisterThemeExtensionHandlerServer(ctx context.Context, mux *runtime.Serve
})
+ mux.Handle("GET", pattern_ThemeExtension_GetBindings_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.ThemeExtension/GetBindings", runtime.WithHTTPPathPattern("/api/v1/bindings"))
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+ resp, md, err := local_request_ThemeExtension_GetBindings_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_ThemeExtension_GetBindings_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
+
+ })
+
+ mux.Handle("GET", pattern_ThemeExtension_GetBinding_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.ThemeExtension/GetBinding", runtime.WithHTTPPathPattern("/api/v1/bindings/{name}"))
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+ resp, md, err := local_request_ThemeExtension_GetBinding_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_ThemeExtension_GetBinding_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
+
+ })
+
return nil
}
@@ -5600,6 +5720,50 @@ func RegisterThemeExtensionHandlerClient(ctx context.Context, mux *runtime.Serve
})
+ mux.Handle("GET", pattern_ThemeExtension_GetBindings_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.ThemeExtension/GetBindings", runtime.WithHTTPPathPattern("/api/v1/bindings"))
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+ resp, md, err := request_ThemeExtension_GetBindings_0(annotatedContext, inboundMarshaler, client, req, pathParams)
+ annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md)
+ if err != nil {
+ runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err)
+ return
+ }
+
+ forward_ThemeExtension_GetBindings_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
+
+ })
+
+ mux.Handle("GET", pattern_ThemeExtension_GetBinding_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.ThemeExtension/GetBinding", runtime.WithHTTPPathPattern("/api/v1/bindings/{name}"))
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+ resp, md, err := request_ThemeExtension_GetBinding_0(annotatedContext, inboundMarshaler, client, req, pathParams)
+ annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md)
+ if err != nil {
+ runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err)
+ return
+ }
+
+ forward_ThemeExtension_GetBinding_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
+
+ })
+
return nil
}
@@ -5607,12 +5771,20 @@ var (
pattern_ThemeExtension_GetThemes_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"api", "v1", "themes"}, ""))
pattern_ThemeExtension_GetTheme_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 1, 0, 4, 1, 5, 3}, []string{"api", "v1", "themes", "name"}, ""))
+
+ pattern_ThemeExtension_GetBindings_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"api", "v1", "bindings"}, ""))
+
+ pattern_ThemeExtension_GetBinding_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 1, 0, 4, 1, 5, 3}, []string{"api", "v1", "bindings", "name"}, ""))
)
var (
forward_ThemeExtension_GetThemes_0 = runtime.ForwardResponseMessage
forward_ThemeExtension_GetTheme_0 = runtime.ForwardResponseMessage
+
+ forward_ThemeExtension_GetBindings_0 = runtime.ForwardResponseMessage
+
+ forward_ThemeExtension_GetBinding_0 = runtime.ForwardResponseMessage
)
// RegisterMockHandlerFromEndpoint is same as RegisterMockHandler but
diff --git a/pkg/server/server.proto b/pkg/server/server.proto
index 29509d82..6ac0d5a4 100644
--- a/pkg/server/server.proto
+++ b/pkg/server/server.proto
@@ -318,6 +318,16 @@ service ThemeExtension {
get: "/api/v1/themes/{name}"
};
}
+ rpc GetBindings(Empty) returns (SimpleList) {
+ option (google.api.http) = {
+ get: "/api/v1/bindings"
+ };
+ }
+ rpc GetBinding(SimpleName) returns (CommonResult) {
+ option (google.api.http) = {
+ get: "/api/v1/bindings/{name}"
+ };
+ }
}
message Suites {
diff --git a/pkg/server/server_grpc.pb.go b/pkg/server/server_grpc.pb.go
index 0ce8cee0..d9c5cf68 100644
--- a/pkg/server/server_grpc.pb.go
+++ b/pkg/server/server_grpc.pb.go
@@ -2043,6 +2043,8 @@ var RunnerExtension_ServiceDesc = grpc.ServiceDesc{
type ThemeExtensionClient interface {
GetThemes(ctx context.Context, in *Empty, opts ...grpc.CallOption) (*SimpleList, error)
GetTheme(ctx context.Context, in *SimpleName, opts ...grpc.CallOption) (*CommonResult, error)
+ GetBindings(ctx context.Context, in *Empty, opts ...grpc.CallOption) (*SimpleList, error)
+ GetBinding(ctx context.Context, in *SimpleName, opts ...grpc.CallOption) (*CommonResult, error)
}
type themeExtensionClient struct {
@@ -2071,12 +2073,32 @@ func (c *themeExtensionClient) GetTheme(ctx context.Context, in *SimpleName, opt
return out, nil
}
+func (c *themeExtensionClient) GetBindings(ctx context.Context, in *Empty, opts ...grpc.CallOption) (*SimpleList, error) {
+ out := new(SimpleList)
+ err := c.cc.Invoke(ctx, "/server.ThemeExtension/GetBindings", in, out, opts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
+func (c *themeExtensionClient) GetBinding(ctx context.Context, in *SimpleName, opts ...grpc.CallOption) (*CommonResult, error) {
+ out := new(CommonResult)
+ err := c.cc.Invoke(ctx, "/server.ThemeExtension/GetBinding", in, out, opts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
// ThemeExtensionServer is the server API for ThemeExtension service.
// All implementations must embed UnimplementedThemeExtensionServer
// for forward compatibility
type ThemeExtensionServer interface {
GetThemes(context.Context, *Empty) (*SimpleList, error)
GetTheme(context.Context, *SimpleName) (*CommonResult, error)
+ GetBindings(context.Context, *Empty) (*SimpleList, error)
+ GetBinding(context.Context, *SimpleName) (*CommonResult, error)
mustEmbedUnimplementedThemeExtensionServer()
}
@@ -2090,6 +2112,12 @@ func (UnimplementedThemeExtensionServer) GetThemes(context.Context, *Empty) (*Si
func (UnimplementedThemeExtensionServer) GetTheme(context.Context, *SimpleName) (*CommonResult, error) {
return nil, status.Errorf(codes.Unimplemented, "method GetTheme not implemented")
}
+func (UnimplementedThemeExtensionServer) GetBindings(context.Context, *Empty) (*SimpleList, error) {
+ return nil, status.Errorf(codes.Unimplemented, "method GetBindings not implemented")
+}
+func (UnimplementedThemeExtensionServer) GetBinding(context.Context, *SimpleName) (*CommonResult, error) {
+ return nil, status.Errorf(codes.Unimplemented, "method GetBinding not implemented")
+}
func (UnimplementedThemeExtensionServer) mustEmbedUnimplementedThemeExtensionServer() {}
// UnsafeThemeExtensionServer may be embedded to opt out of forward compatibility for this service.
@@ -2139,6 +2167,42 @@ func _ThemeExtension_GetTheme_Handler(srv interface{}, ctx context.Context, dec
return interceptor(ctx, in, info, handler)
}
+func _ThemeExtension_GetBindings_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(Empty)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(ThemeExtensionServer).GetBindings(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: "/server.ThemeExtension/GetBindings",
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(ThemeExtensionServer).GetBindings(ctx, req.(*Empty))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
+func _ThemeExtension_GetBinding_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.(ThemeExtensionServer).GetBinding(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: "/server.ThemeExtension/GetBinding",
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(ThemeExtensionServer).GetBinding(ctx, req.(*SimpleName))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
// ThemeExtension_ServiceDesc is the grpc.ServiceDesc for ThemeExtension service.
// It's only intended for direct use with grpc.RegisterService,
// and not to be introspected or modified (even as a copy)
@@ -2154,6 +2218,14 @@ var ThemeExtension_ServiceDesc = grpc.ServiceDesc{
MethodName: "GetTheme",
Handler: _ThemeExtension_GetTheme_Handler,
},
+ {
+ MethodName: "GetBindings",
+ Handler: _ThemeExtension_GetBindings_Handler,
+ },
+ {
+ MethodName: "GetBinding",
+ Handler: _ThemeExtension_GetBinding_Handler,
+ },
},
Streams: []grpc.StreamDesc{},
Metadata: "pkg/server/server.proto",
diff --git a/pkg/testing/loader.go b/pkg/testing/loader.go
index b91d4f87..fbf10bc9 100644
--- a/pkg/testing/loader.go
+++ b/pkg/testing/loader.go
@@ -30,6 +30,8 @@ type Loader interface {
Query(query map[string]string) (result DataResult, err error)
GetThemes() ([]string, error)
GetTheme(string) (string, error)
+ GetBindings() ([]string, error)
+ GetBinding(string) (string, error)
}
type DataResult struct {
Pairs map[string]string
diff --git a/pkg/testing/loader_file.go b/pkg/testing/loader_file.go
index 10596f81..e0e0b878 100644
--- a/pkg/testing/loader_file.go
+++ b/pkg/testing/loader_file.go
@@ -20,7 +20,6 @@ import (
"encoding/json"
"errors"
"fmt"
- "github.com/linuxsuren/api-testing/pkg/util/home"
"io"
"net/http"
"net/url"
@@ -30,6 +29,8 @@ import (
"strings"
"sync"
+ "github.com/linuxsuren/api-testing/pkg/util/home"
+
"github.com/linuxsuren/api-testing/pkg/logging"
"github.com/linuxsuren/api-testing/pkg/util"
@@ -551,3 +552,28 @@ func (l *fileLoader) GetTheme(name string) (result string, err error) {
}
return
}
+
+func (l *fileLoader) GetBindings() (result []string, err error) {
+ dataDir := home.GetBindingDir()
+ _ = filepath.WalkDir(dataDir, func(path string, d os.DirEntry, err error) error {
+ if err != nil {
+ return err
+ }
+
+ if !d.IsDir() && filepath.Ext(path) == ".json" {
+ result = append(result, strings.TrimSuffix(filepath.Base(path), ".json"))
+ }
+ return nil
+ })
+ return
+}
+
+func (l *fileLoader) GetBinding(name string) (result string, err error) {
+ dataDir := home.GetBindingDir()
+ themeFile := filepath.Join(dataDir, name+".json")
+ var data []byte
+ if data, err = os.ReadFile(themeFile); err == nil {
+ result = string(data)
+ }
+ return
+}
diff --git a/pkg/testing/loader_non.go b/pkg/testing/loader_non.go
index 25bc2666..5e37c49e 100644
--- a/pkg/testing/loader_non.go
+++ b/pkg/testing/loader_non.go
@@ -169,3 +169,13 @@ func (l *nonLoader) GetTheme(name string) (result string, err error) {
err = fmt.Errorf("not support")
return
}
+
+func (l *nonLoader) GetBindings() (result []string, err error) {
+ err = fmt.Errorf("not support")
+ return
+}
+
+func (l *nonLoader) GetBinding(name string) (result string, err error) {
+ err = fmt.Errorf("not support")
+ return
+}
diff --git a/pkg/testing/remote/grpc_store.go b/pkg/testing/remote/grpc_store.go
index e89341b7..9b3e7a69 100644
--- a/pkg/testing/remote/grpc_store.go
+++ b/pkg/testing/remote/grpc_store.go
@@ -353,6 +353,26 @@ func (g *gRPCLoader) GetTheme(name string) (result string, err error) {
return
}
+func (g *gRPCLoader) GetBindings() (result []string, err error) {
+ var simpleList *server.SimpleList
+ if simpleList, err = g.client.GetBindings(g.ctx, &server.Empty{}); err == nil && simpleList.Data != nil {
+ for _, item := range simpleList.Data {
+ result = append(result, item.Key)
+ }
+ }
+ return
+}
+
+func (g *gRPCLoader) GetBinding(name string) (result string, err error) {
+ var themeData *server.CommonResult
+ if themeData, err = g.client.GetBinding(g.ctx, &server.SimpleName{
+ Name: name,
+ }); err == nil && themeData != nil {
+ result = themeData.Message
+ }
+ return
+}
+
func (g *gRPCLoader) Close() {
if g.conn != nil {
g.conn.Close()
diff --git a/pkg/testing/remote/loader.pb.go b/pkg/testing/remote/loader.pb.go
index ba38fe09..8bd98414 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, 0xe9, 0x0b, 0x0a, 0x06, 0x4c, 0x6f, 0x61, 0x64,
+ 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x32, 0xd7, 0x0c, 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,
@@ -503,46 +503,53 @@ var file_pkg_testing_remote_loader_proto_rawDesc = []byte{
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, 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,
+ 0x74, 0x22, 0x00, 0x12, 0x32, 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, 0x00, 0x12, 0x38, 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,
- 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,
+ 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, 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 (
@@ -621,53 +628,57 @@ var file_pkg_testing_remote_loader_proto_depIdxs = []int32{
15, // 29: remote.Loader.Query:input_type -> server.DataQuery
10, // 30: remote.Loader.GetThemes:input_type -> server.Empty
16, // 31: remote.Loader.GetTheme:input_type -> server.SimpleName
- 17, // 32: remote.SecretService.GetSecret:input_type -> server.Secret
- 10, // 33: remote.SecretService.GetSecrets:input_type -> server.Empty
- 17, // 34: remote.SecretService.CreateSecret:input_type -> server.Secret
- 17, // 35: remote.SecretService.DeleteSecret:input_type -> server.Secret
- 17, // 36: remote.SecretService.UpdateSecret:input_type -> server.Secret
- 10, // 37: remote.ConfigService.GetConfigs:input_type -> server.Empty
- 16, // 38: remote.ConfigService.GetConfig:input_type -> server.SimpleName
- 5, // 39: remote.ConfigService.CreateConfig:input_type -> remote.Config
- 5, // 40: remote.ConfigService.UpdateConfig:input_type -> remote.Config
- 16, // 41: remote.ConfigService.DeleteConfig:input_type -> server.SimpleName
- 0, // 42: remote.Loader.ListTestSuite:output_type -> remote.TestSuites
- 10, // 43: remote.Loader.CreateTestSuite:output_type -> server.Empty
- 1, // 44: remote.Loader.GetTestSuite:output_type -> remote.TestSuite
- 1, // 45: remote.Loader.UpdateTestSuite:output_type -> remote.TestSuite
- 10, // 46: remote.Loader.DeleteTestSuite:output_type -> server.Empty
- 18, // 47: remote.Loader.RenameTestSuite:output_type -> server.HelloReply
- 19, // 48: remote.Loader.ListTestCases:output_type -> server.TestCases
- 10, // 49: remote.Loader.CreateTestCase:output_type -> server.Empty
- 8, // 50: remote.Loader.GetTestCase:output_type -> server.TestCase
- 8, // 51: remote.Loader.UpdateTestCase:output_type -> server.TestCase
- 10, // 52: remote.Loader.DeleteTestCase:output_type -> server.Empty
- 18, // 53: remote.Loader.RenameTestCase:output_type -> server.HelloReply
- 2, // 54: remote.Loader.ListHistoryTestSuite:output_type -> remote.HistoryTestSuites
- 10, // 55: remote.Loader.CreateTestCaseHistory:output_type -> server.Empty
- 13, // 56: remote.Loader.GetHistoryTestCaseWithResult:output_type -> server.HistoryTestResult
- 9, // 57: remote.Loader.GetHistoryTestCase:output_type -> server.HistoryTestCase
- 10, // 58: remote.Loader.DeleteHistoryTestCase:output_type -> server.Empty
- 10, // 59: remote.Loader.DeleteAllHistoryTestCase:output_type -> server.Empty
- 20, // 60: remote.Loader.GetTestCaseAllHistory:output_type -> server.HistoryTestCases
- 21, // 61: remote.Loader.GetVersion:output_type -> server.Version
- 22, // 62: remote.Loader.Verify:output_type -> server.ExtensionStatus
- 23, // 63: remote.Loader.PProf:output_type -> server.PProfData
- 24, // 64: remote.Loader.Query:output_type -> server.DataQueryResult
- 25, // 65: remote.Loader.GetThemes:output_type -> server.SimpleList
- 26, // 66: remote.Loader.GetTheme:output_type -> server.CommonResult
- 17, // 67: remote.SecretService.GetSecret:output_type -> server.Secret
- 27, // 68: remote.SecretService.GetSecrets:output_type -> server.Secrets
- 26, // 69: remote.SecretService.CreateSecret:output_type -> server.CommonResult
- 26, // 70: remote.SecretService.DeleteSecret:output_type -> server.CommonResult
- 26, // 71: remote.SecretService.UpdateSecret:output_type -> server.CommonResult
- 4, // 72: remote.ConfigService.GetConfigs:output_type -> remote.Configs
- 5, // 73: remote.ConfigService.GetConfig:output_type -> remote.Config
- 26, // 74: remote.ConfigService.CreateConfig:output_type -> server.CommonResult
- 26, // 75: remote.ConfigService.UpdateConfig:output_type -> server.CommonResult
- 26, // 76: remote.ConfigService.DeleteConfig:output_type -> server.CommonResult
- 42, // [42:77] is the sub-list for method output_type
- 7, // [7:42] is the sub-list for method input_type
+ 10, // 32: remote.Loader.GetBindings:input_type -> server.Empty
+ 16, // 33: remote.Loader.GetBinding:input_type -> server.SimpleName
+ 17, // 34: remote.SecretService.GetSecret:input_type -> server.Secret
+ 10, // 35: remote.SecretService.GetSecrets:input_type -> server.Empty
+ 17, // 36: remote.SecretService.CreateSecret:input_type -> server.Secret
+ 17, // 37: remote.SecretService.DeleteSecret:input_type -> server.Secret
+ 17, // 38: remote.SecretService.UpdateSecret:input_type -> server.Secret
+ 10, // 39: remote.ConfigService.GetConfigs:input_type -> server.Empty
+ 16, // 40: remote.ConfigService.GetConfig:input_type -> server.SimpleName
+ 5, // 41: remote.ConfigService.CreateConfig:input_type -> remote.Config
+ 5, // 42: remote.ConfigService.UpdateConfig:input_type -> remote.Config
+ 16, // 43: remote.ConfigService.DeleteConfig:input_type -> server.SimpleName
+ 0, // 44: remote.Loader.ListTestSuite:output_type -> remote.TestSuites
+ 10, // 45: remote.Loader.CreateTestSuite:output_type -> server.Empty
+ 1, // 46: remote.Loader.GetTestSuite:output_type -> remote.TestSuite
+ 1, // 47: remote.Loader.UpdateTestSuite:output_type -> remote.TestSuite
+ 10, // 48: remote.Loader.DeleteTestSuite:output_type -> server.Empty
+ 18, // 49: remote.Loader.RenameTestSuite:output_type -> server.HelloReply
+ 19, // 50: remote.Loader.ListTestCases:output_type -> server.TestCases
+ 10, // 51: remote.Loader.CreateTestCase:output_type -> server.Empty
+ 8, // 52: remote.Loader.GetTestCase:output_type -> server.TestCase
+ 8, // 53: remote.Loader.UpdateTestCase:output_type -> server.TestCase
+ 10, // 54: remote.Loader.DeleteTestCase:output_type -> server.Empty
+ 18, // 55: remote.Loader.RenameTestCase:output_type -> server.HelloReply
+ 2, // 56: remote.Loader.ListHistoryTestSuite:output_type -> remote.HistoryTestSuites
+ 10, // 57: remote.Loader.CreateTestCaseHistory:output_type -> server.Empty
+ 13, // 58: remote.Loader.GetHistoryTestCaseWithResult:output_type -> server.HistoryTestResult
+ 9, // 59: remote.Loader.GetHistoryTestCase:output_type -> server.HistoryTestCase
+ 10, // 60: remote.Loader.DeleteHistoryTestCase:output_type -> server.Empty
+ 10, // 61: remote.Loader.DeleteAllHistoryTestCase:output_type -> server.Empty
+ 20, // 62: remote.Loader.GetTestCaseAllHistory:output_type -> server.HistoryTestCases
+ 21, // 63: remote.Loader.GetVersion:output_type -> server.Version
+ 22, // 64: remote.Loader.Verify:output_type -> server.ExtensionStatus
+ 23, // 65: remote.Loader.PProf:output_type -> server.PProfData
+ 24, // 66: remote.Loader.Query:output_type -> server.DataQueryResult
+ 25, // 67: remote.Loader.GetThemes:output_type -> server.SimpleList
+ 26, // 68: remote.Loader.GetTheme:output_type -> server.CommonResult
+ 25, // 69: remote.Loader.GetBindings:output_type -> server.SimpleList
+ 26, // 70: remote.Loader.GetBinding:output_type -> server.CommonResult
+ 17, // 71: remote.SecretService.GetSecret:output_type -> server.Secret
+ 27, // 72: remote.SecretService.GetSecrets:output_type -> server.Secrets
+ 26, // 73: remote.SecretService.CreateSecret:output_type -> server.CommonResult
+ 26, // 74: remote.SecretService.DeleteSecret:output_type -> server.CommonResult
+ 26, // 75: remote.SecretService.UpdateSecret:output_type -> server.CommonResult
+ 4, // 76: remote.ConfigService.GetConfigs:output_type -> remote.Configs
+ 5, // 77: remote.ConfigService.GetConfig:output_type -> remote.Config
+ 26, // 78: remote.ConfigService.CreateConfig:output_type -> server.CommonResult
+ 26, // 79: remote.ConfigService.UpdateConfig:output_type -> server.CommonResult
+ 26, // 80: remote.ConfigService.DeleteConfig:output_type -> server.CommonResult
+ 44, // [44:81] is the sub-list for method output_type
+ 7, // [7:44] 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 3ab7cdf8..7e6a4ce9 100644
--- a/pkg/testing/remote/loader.proto
+++ b/pkg/testing/remote/loader.proto
@@ -36,6 +36,8 @@ service Loader {
rpc Query(server.DataQuery) returns (server.DataQueryResult) {}
rpc GetThemes(server.Empty) returns (server.SimpleList) {}
rpc GetTheme(server.SimpleName) returns (server.CommonResult) {}
+ rpc GetBindings(server.Empty) returns (server.SimpleList) {}
+ rpc GetBinding(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 8326bcfe..2f8d72c9 100644
--- a/pkg/testing/remote/loader_grpc.pb.go
+++ b/pkg/testing/remote/loader_grpc.pb.go
@@ -48,6 +48,8 @@ type LoaderClient interface {
Query(ctx context.Context, in *server.DataQuery, opts ...grpc.CallOption) (*server.DataQueryResult, error)
GetThemes(ctx context.Context, in *server.Empty, opts ...grpc.CallOption) (*server.SimpleList, error)
GetTheme(ctx context.Context, in *server.SimpleName, opts ...grpc.CallOption) (*server.CommonResult, error)
+ GetBindings(ctx context.Context, in *server.Empty, opts ...grpc.CallOption) (*server.SimpleList, error)
+ GetBinding(ctx context.Context, in *server.SimpleName, opts ...grpc.CallOption) (*server.CommonResult, error)
}
type loaderClient struct {
@@ -283,6 +285,24 @@ func (c *loaderClient) GetTheme(ctx context.Context, in *server.SimpleName, opts
return out, nil
}
+func (c *loaderClient) GetBindings(ctx context.Context, in *server.Empty, opts ...grpc.CallOption) (*server.SimpleList, error) {
+ out := new(server.SimpleList)
+ err := c.cc.Invoke(ctx, "/remote.Loader/GetBindings", in, out, opts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
+func (c *loaderClient) GetBinding(ctx context.Context, in *server.SimpleName, opts ...grpc.CallOption) (*server.CommonResult, error) {
+ out := new(server.CommonResult)
+ err := c.cc.Invoke(ctx, "/remote.Loader/GetBinding", 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
@@ -312,6 +332,8 @@ type LoaderServer interface {
Query(context.Context, *server.DataQuery) (*server.DataQueryResult, error)
GetThemes(context.Context, *server.Empty) (*server.SimpleList, error)
GetTheme(context.Context, *server.SimpleName) (*server.CommonResult, error)
+ GetBindings(context.Context, *server.Empty) (*server.SimpleList, error)
+ GetBinding(context.Context, *server.SimpleName) (*server.CommonResult, error)
mustEmbedUnimplementedLoaderServer()
}
@@ -394,6 +416,12 @@ func (UnimplementedLoaderServer) GetThemes(context.Context, *server.Empty) (*ser
func (UnimplementedLoaderServer) GetTheme(context.Context, *server.SimpleName) (*server.CommonResult, error) {
return nil, status.Errorf(codes.Unimplemented, "method GetTheme not implemented")
}
+func (UnimplementedLoaderServer) GetBindings(context.Context, *server.Empty) (*server.SimpleList, error) {
+ return nil, status.Errorf(codes.Unimplemented, "method GetBindings not implemented")
+}
+func (UnimplementedLoaderServer) GetBinding(context.Context, *server.SimpleName) (*server.CommonResult, error) {
+ return nil, status.Errorf(codes.Unimplemented, "method GetBinding not implemented")
+}
func (UnimplementedLoaderServer) mustEmbedUnimplementedLoaderServer() {}
// UnsafeLoaderServer may be embedded to opt out of forward compatibility for this service.
@@ -857,6 +885,42 @@ func _Loader_GetTheme_Handler(srv interface{}, ctx context.Context, dec func(int
return interceptor(ctx, in, info, handler)
}
+func _Loader_GetBindings_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(server.Empty)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(LoaderServer).GetBindings(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: "/remote.Loader/GetBindings",
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(LoaderServer).GetBindings(ctx, req.(*server.Empty))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
+func _Loader_GetBinding_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).GetBinding(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: "/remote.Loader/GetBinding",
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(LoaderServer).GetBinding(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)
@@ -964,6 +1028,14 @@ var Loader_ServiceDesc = grpc.ServiceDesc{
MethodName: "GetTheme",
Handler: _Loader_GetTheme_Handler,
},
+ {
+ MethodName: "GetBindings",
+ Handler: _Loader_GetBindings_Handler,
+ },
+ {
+ MethodName: "GetBinding",
+ Handler: _Loader_GetBinding_Handler,
+ },
},
Streams: []grpc.StreamDesc{},
Metadata: "pkg/testing/remote/loader.proto",
diff --git a/pkg/util/home/common.go b/pkg/util/home/common.go
index 4999314c..c0afeb5b 100644
--- a/pkg/util/home/common.go
+++ b/pkg/util/home/common.go
@@ -41,6 +41,10 @@ func GetThemeDir() string {
return filepath.Join(GetUserConfigDir(), "data/theme")
}
+func GetBindingDir() string {
+ return filepath.Join(GetUserConfigDir(), "data/key-binding")
+}
+
func GetExtensionSocketPath(name string) string {
return filepath.Join(GetUserConfigDir(), fmt.Sprintf("%s.sock", name))
}