-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmain.go
121 lines (108 loc) · 2.69 KB
/
main.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
package main
import (
"CliChat/functional/authentificate"
Chats "CliChat/functional/chat"
Structs "CliChat/functional/struct"
"bufio"
"fmt"
"math/rand"
"os"
)
var (
in = bufio.NewReader(os.Stdin)
)
func printHelp() {
fmt.Println("Список команд:\n" +
"/help - вывести список команд\n" +
"/create - создать комнату\n" +
"/join - присоединиться к комнате\n" +
"/list - показать список комнат\n" +
"################################################")
}
func printRooms(chat Structs.Chat) {
fmt.Println("Список комнат: ")
if chat.Rooms != nil {
for _, room := range chat.Rooms {
fmt.Println(room.Id, " ", room.Name)
}
return
}
fmt.Println("-#-Нет комнат-#-")
}
func createRoom() Structs.Room {
var password, name, answer string
var room Structs.Room
roomId := rand.Intn(100)
fmt.Scan(&name)
fmt.Print("Вы хотите задать пароль комнате? (y/n)\t")
fmt.Scanf("%s", &answer)
switch answer {
case "y":
fmt.Print("Введите пароль: ")
fmt.Scanf("%s", &password)
room = Structs.Room{Id: roomId, Name: name, Password: password}
fmt.Printf("Комната [ Id: %d | Room Name: %s | password: %s ]\n", room.Id, room.Name, room.Password)
break
case "n":
room = Structs.Room{Id: roomId, Name: name}
fmt.Printf("Комната создана!\nId: %d | Room Name: %s\n", room.Id, room.Name)
break
}
return room
}
func joinChat(chat Structs.Chat) {
var roomId int
var password string
fmt.Scan(&roomId)
for _, v := range chat.Rooms {
if v.Id == roomId {
if v.Password != "" {
fmt.Println("В комнате установлен пароль")
for i := 0; i < 3; i++ {
fmt.Printf("Введите пароль (%d/3): ", i+1)
fmt.Scanf("%s", &password)
if i == 2 {
fmt.Println("Вы не ввели пароль в три раза")
return
}
}
}
}
}
}
func main() {
var answer string
var chat Structs.Chat
var room Structs.Room
if authentificate.Auth() {
go Chats.Server()
authentificate.CliClear()
fmt.Printf("\tДобро пожаловать в чат!\n")
fmt.Printf("\tЗа помощью - /help\n\n")
for {
fmt.Println("###############Меню###############")
fmt.Scanf("%s", &answer)
switch answer {
case "/help":
printHelp()
break
case "/create":
room = createRoom()
chat.Rooms = append(chat.Rooms, room)
break
case "/join":
joinChat(chat)
break
case "/list":
printRooms(chat)
break
case "/exit":
os.Exit(0)
break
default:
fmt.Println("Неизвестная команда")
break
}
}
}
}