| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374 |
- // package client_serv -- клиент подключения к бото-серверу
- package client_serv
- import (
- "fmt"
- "log"
- "net/rpc"
- "wartank/server/serv_rpc"
- )
- // ClientServ -- клиент подключения к бото-серверу
- type ClientServ struct {
- client *rpc.Client
- url string
- }
- // NewClientServ -- возвращает новый клиент к бото-серверу
- func NewClientServ() *ClientServ {
- sf := &ClientServ{}
- return sf
- }
- // Connect -- подключает клиента к бото-серверу
- func (sf *ClientServ) Connect(url_ string) error {
- sf.url = url_
- var err error
- sf.client, err = rpc.DialHTTP("tcp", url_)
- if err != nil {
- return fmt.Errorf("ClientSrv.Connect(): in connect to bot-server, err=\n\t%w", err)
- }
- req := &serv_rpc.EchoReq{}
- resp := &serv_rpc.EchoResp{}
- err = sf.client.Call("ServRpc.Echo", req, &resp)
- if err != nil {
- return fmt.Errorf("ClientServ.Connect(): in make Echo-request to bot-server, err=\n\t%w", err)
- }
- if resp.Result != "WarTank!" {
- return fmt.Errorf("ClientServ.Connect(): bad response on Echo request(%v!='WarTank!')", resp.Result)
- }
- return nil
- }
- // Login -- логинится на сервер
- func (sf *ClientServ) Login(login, pass string) error {
- log.Println("ClientServ.Login()")
- req := &serv_rpc.LoginReq{
- Login: login,
- Pass: pass,
- }
- resp := &serv_rpc.LoginResp{}
- err := sf.client.Call("ServRpc.Login", req, resp)
- if err != nil {
- return fmt.Errorf("ClientServ.Login(): err=\n\t%w", err)
- }
- if resp.Result != "ok" {
- return fmt.Errorf("ClientServ.Login(): resp=%q", resp.Result)
- }
- return nil
- }
- // MakeAdmin -- создаёт админа на сервере
- func (sf *ClientServ) MakeAdmin(pass string) error {
- log.Println("ClientServ.MakeAdmin()")
- req := &serv_rpc.MakeAdminReq{
- Pass: pass,
- }
- resp := &serv_rpc.MakeAdminResp{}
- err := sf.client.Call("ServRpc.MakeAdmin", req, resp)
- if err != nil {
- return fmt.Errorf("ClientServ.MakeAdmin(): in make request, err=\n\t%w", err)
- }
- return nil
- }
|