diff options
| author | Andrew <saintruler@gmail.com> | 2021-05-14 00:04:12 +0400 |
|---|---|---|
| committer | Andrew <saintruler@gmail.com> | 2021-05-14 00:04:12 +0400 |
| commit | f4c8eef1af781dfd5ef192520ba069eacd9f98cb (patch) | |
| tree | f1f02bf63241dc668b1df00e6cd76d0b3d67d766 /http-client | |
| parent | ef420777f603c05e8bed5520868779cc15e9d578 (diff) | |
Added default value and better parser for server url.
Diffstat (limited to 'http-client')
| -rw-r--r-- | http-client/main.go | 51 |
1 files changed, 45 insertions, 6 deletions
diff --git a/http-client/main.go b/http-client/main.go index 0af8efa..f8ecb4e 100644 --- a/http-client/main.go +++ b/http-client/main.go @@ -12,6 +12,7 @@ import ( "fyne.io/fyne/v2/layout" "fyne.io/fyne/v2/widget" "image/color" + "regexp" "strings" ) @@ -23,6 +24,33 @@ type UserData struct { ParsedUserKey *rsa.PublicKey } +const DefaultPort = "12345" + +func parseServerUrl(url string) (string, error) { + url = strings.TrimRight(url, "/") + urlFormat, err := regexp.Compile("(.*://)?((.*):(\\d+)|(.*))") + if err != nil { + return "", err + } + + matches := urlFormat.FindStringSubmatch(url) + + host := "" + port := "" + + if matches[5] != "" { + host = matches[5] + port = DefaultPort + } else { + host = matches[3] + port = matches[4] + } + + addr := fmt.Sprintf("http://%s:%s", host, port) + + return addr, nil +} + func chatLayout(window fyne.Window, user UserData) { window.SetTitle("Сообщения") storage.binding = binding.BindStringList(&storage.data) @@ -66,6 +94,7 @@ func loginLayout(window fyne.Window, user UserData) { urlLabel := widget.NewLabel("URL: ") urlEntry := widget.NewEntry() + urlEntry.Text = "localhost" loginLabel := widget.NewLabel("Логин: ") loginEntry := widget.NewEntry() @@ -116,11 +145,15 @@ func loginLayout(window fyne.Window, user UserData) { dialog.ShowInformation("Ошибка", "URL не может быть пустым", window) return } - user.ServerUrl = strings.TrimRight(urlEntry.Text, "/") + url, err := parseServerUrl(urlEntry.Text) + if err != nil { + dialog.ShowInformation("Ошибка", err.Error(), window) + } + user.ServerUrl = url - err := pingServer(user) + err = pingServer(user) if err != nil { - dialog.ShowInformation("Ошибка", "Нет связи с сервером", window) + dialog.ShowInformation("Ошибка", "Нет связи с указанным сервером", window) return } @@ -158,6 +191,7 @@ func registerLayout(window fyne.Window, user UserData) { urlLabel := widget.NewLabel("URL: ") urlEntry := widget.NewEntry() + urlEntry.Text = "localhost" loginLabel := widget.NewLabel("Логин: ") loginEntry := widget.NewEntry() @@ -199,11 +233,15 @@ func registerLayout(window fyne.Window, user UserData) { dialog.ShowInformation("Ошибка", "URL не может быть пустым", window) return } - user.ServerUrl = strings.TrimRight(urlEntry.Text, "/") + url, err := parseServerUrl(urlEntry.Text) + if err != nil { + dialog.ShowInformation("Ошибка", err.Error(), window) + } + user.ServerUrl = url - err := pingServer(user) + err = pingServer(user) if err != nil { - dialog.ShowInformation("Ошибка", "Нет связи с сервером", window) + dialog.ShowInformation("Ошибка", "Нет связи с указанным сервером", window) return } @@ -250,6 +288,7 @@ func startLayout(window fyne.Window, user UserData) { func main() { myApp := app.New() window := myApp.NewWindow("") + window.Resize(fyne.Size{Width: 640, Height: 480}) var user UserData startLayout(window, user) |