summaryrefslogtreecommitdiff
path: root/http-client/main.go
diff options
context:
space:
mode:
Diffstat (limited to 'http-client/main.go')
-rw-r--r--http-client/main.go51
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)