diff --git a/README.md b/README.md index 3b89454..bb96ecc 100644 --- a/README.md +++ b/README.md @@ -38,7 +38,7 @@ See the example in [server.yaml](example/server.yaml) file. api_key: deeplx: DEEPLX_API_KEY # <- Replace with your API Key host: - deeplx: 127.0.0.1:1188 # <- Replace with your DeepLX server IP address and port + deeplx: 127.0.0.1:1188 # <- Replace with your server IP address and port ``` ## ScreenShot diff --git a/config.go b/config.go index 5180cb2..ae240b4 100644 --- a/config.go +++ b/config.go @@ -156,13 +156,18 @@ func configInit() { uiStyle.Transparent = config.GetBool("transparent") uiStyle.SetSrcBorderColor(config.GetString("source.border_color")). SetDstBorderColor(config.GetString("destination.border_color")) - // Import api key if file exists + // Import api key and host if file exists if err := serverConfig.ReadInConfig(); err == nil { + // api key for _, name := range []string{"ChatGPT", "DeepL", "DeepLX"} { if serverConfig.Get(fmt.Sprintf("api_key.%s", name)) != nil { translators[name].SetAPIKey(serverConfig.GetString(fmt.Sprintf("api_key.%s", name))) } } + // host + if serverConfig.Get("host.deeplx") != nil { + translators["DeepLX"].SetHost(serverConfig.GetString("host.deeplx")) + } } // Set argument language if len(*srcLangArg) > 0 { diff --git a/example/server.yaml b/example/server.yaml index 575ca58..733172f 100644 --- a/example/server.yaml +++ b/example/server.yaml @@ -3,3 +3,5 @@ api_key: chatgpt: CHATGPT_API_KEY deepl: DEEPL_API_KEY deeplx: DEEPLX_API_KEY +host: + deeplx: 127.0.0.1:1188 diff --git a/internal/translate/apertium/translator.go b/internal/translate/apertium/translator.go index d5d7319..5c64e61 100644 --- a/internal/translate/apertium/translator.go +++ b/internal/translate/apertium/translator.go @@ -16,7 +16,7 @@ const ( ) type Translator struct { - *core.APIKey + *core.Server *core.Language *core.TTSLock core.EngineName @@ -24,7 +24,7 @@ type Translator struct { func NewTranslator() *Translator { return &Translator{ - APIKey: new(core.APIKey), + Server: new(core.Server), Language: new(core.Language), TTSLock: core.NewTTSLock(), EngineName: core.NewEngineName("Apertium"), diff --git a/internal/translate/argos/translator.go b/internal/translate/argos/translator.go index 6bb7fcd..322ff10 100644 --- a/internal/translate/argos/translator.go +++ b/internal/translate/argos/translator.go @@ -15,7 +15,7 @@ const ( ) type Translator struct { - *core.APIKey + *core.Server *core.Language *core.TTSLock core.EngineName @@ -23,7 +23,7 @@ type Translator struct { func NewTranslator() *Translator { return &Translator{ - APIKey: new(core.APIKey), + Server: new(core.Server), Language: new(core.Language), TTSLock: core.NewTTSLock(), EngineName: core.NewEngineName("Argos"), diff --git a/internal/translate/bing/translator.go b/internal/translate/bing/translator.go index 6c8a46f..1d83e68 100644 --- a/internal/translate/bing/translator.go +++ b/internal/translate/bing/translator.go @@ -25,7 +25,7 @@ const ( ) type Translator struct { - *core.APIKey + *core.Server *core.Language *core.TTSLock core.EngineName @@ -40,7 +40,7 @@ type setUpData struct { func NewTranslator() *Translator { return &Translator{ - APIKey: new(core.APIKey), + Server: new(core.Server), Language: new(core.Language), TTSLock: core.NewTTSLock(), EngineName: core.NewEngineName("Bing"), diff --git a/internal/translate/chatgpt/translator.go b/internal/translate/chatgpt/translator.go index 0226097..600efc9 100644 --- a/internal/translate/chatgpt/translator.go +++ b/internal/translate/chatgpt/translator.go @@ -16,7 +16,7 @@ const ( ) type Translator struct { - *core.APIKey + *core.Server *core.Language *core.TTSLock core.EngineName @@ -24,7 +24,7 @@ type Translator struct { func NewTranslator() *Translator { return &Translator{ - APIKey: new(core.APIKey), + Server: new(core.Server), Language: new(core.Language), TTSLock: core.NewTTSLock(), EngineName: core.NewEngineName("ChatGPT"), diff --git a/internal/translate/core/apikey.go b/internal/translate/core/apikey.go deleted file mode 100644 index 9208a34..0000000 --- a/internal/translate/core/apikey.go +++ /dev/null @@ -1,13 +0,0 @@ -package core - -type APIKey struct { - key string -} - -func (k *APIKey) SetAPIKey(key string) { - k.key = key -} - -func (k *APIKey) GetAPIKey() string { - return k.key -} diff --git a/internal/translate/core/server.go b/internal/translate/core/server.go new file mode 100644 index 0000000..48aca3d --- /dev/null +++ b/internal/translate/core/server.go @@ -0,0 +1,22 @@ +package core + +type Server struct { + host string + apiKey string +} + +func (s *Server) SetHost(host string) { + s.host = host +} + +func (s *Server) GetHost() string { + return s.host +} + +func (s *Server) SetAPIKey(key string) { + s.apiKey = key +} + +func (s *Server) GetAPIKey() string { + return s.apiKey +} diff --git a/internal/translate/deepl/translator.go b/internal/translate/deepl/translator.go index d583182..e0aa8c5 100644 --- a/internal/translate/deepl/translator.go +++ b/internal/translate/deepl/translator.go @@ -16,7 +16,7 @@ const ( ) type Translator struct { - *core.APIKey + *core.Server *core.Language *core.TTSLock core.EngineName @@ -24,7 +24,7 @@ type Translator struct { func NewTranslator() *Translator { return &Translator{ - APIKey: new(core.APIKey), + Server: new(core.Server), Language: new(core.Language), TTSLock: core.NewTTSLock(), EngineName: core.NewEngineName("DeepL"), diff --git a/internal/translate/deeplx/translator.go b/internal/translate/deeplx/translator.go index b19513b..5962e27 100644 --- a/internal/translate/deeplx/translator.go +++ b/internal/translate/deeplx/translator.go @@ -10,12 +10,8 @@ import ( "github.com/eeeXun/gtt/internal/translate/core" ) -const ( - textURL = "http://localhost:1188/translate" -) - type Translator struct { - *core.APIKey + *core.Server *core.Language *core.TTSLock core.EngineName @@ -23,7 +19,7 @@ type Translator struct { func NewTranslator() *Translator { return &Translator{ - APIKey: new(core.APIKey), + Server: new(core.Server), Language: new(core.Language), TTSLock: core.NewTTSLock(), EngineName: core.NewEngineName("DeepLX"), @@ -38,13 +34,17 @@ func (t *Translator) Translate(message string) (translation *core.Translation, e translation = new(core.Translation) var data map[string]interface{} + if len(t.GetHost()) <= 0 { + return nil, errors.New("Please write your host in config file for " + t.GetEngineName()) + } + userData, _ := json.Marshal(map[string]interface{}{ "text": message, "source_lang": langCode[t.GetSrcLang()], "target_lang": langCode[t.GetDstLang()], }) req, _ := http.NewRequest(http.MethodPost, - textURL, + "http://"+t.GetHost()+"/translate", bytes.NewBuffer(userData), ) req.Header.Add("Content-Type", "application/json") diff --git a/internal/translate/google/translator.go b/internal/translate/google/translator.go index caed33a..716ae2a 100644 --- a/internal/translate/google/translator.go +++ b/internal/translate/google/translator.go @@ -20,7 +20,7 @@ const ( ) type Translator struct { - *core.APIKey + *core.Server *core.Language *core.TTSLock core.EngineName @@ -28,7 +28,7 @@ type Translator struct { func NewTranslator() *Translator { return &Translator{ - APIKey: new(core.APIKey), + Server: new(core.Server), Language: new(core.Language), TTSLock: core.NewTTSLock(), EngineName: core.NewEngineName("Google"), diff --git a/internal/translate/reverso/translator.go b/internal/translate/reverso/translator.go index a3dd0cb..9ca686d 100644 --- a/internal/translate/reverso/translator.go +++ b/internal/translate/reverso/translator.go @@ -22,7 +22,7 @@ const ( ) type Translator struct { - *core.APIKey + *core.Server *core.Language *core.TTSLock core.EngineName @@ -30,7 +30,7 @@ type Translator struct { func NewTranslator() *Translator { return &Translator{ - APIKey: new(core.APIKey), + Server: new(core.Server), Language: new(core.Language), TTSLock: core.NewTTSLock(), EngineName: core.NewEngineName("Reverso"), diff --git a/internal/translate/translator.go b/internal/translate/translator.go index a301aa4..ee95633 100644 --- a/internal/translate/translator.go +++ b/internal/translate/translator.go @@ -50,6 +50,9 @@ type Translator interface { // Set API Key SetAPIKey(key string) + // Set host + SetHost(host string) + // Check if lock is available LockAvailable() bool