示例#1
0
func (usr *User) String() string {
	jsonContent, err := json.Marshal(usr)
	if err != nil {
		logger.Error("User::String - Erreur lors de la sérialisation d'un message", err)
	}
	return string(jsonContent[:])
}
示例#2
0
func (room *Room) getFromDb(key string) {

	encodedRoom := db.Db.Get(db.RoomBucket, key)
	err := json.Unmarshal(encodedRoom, room)
	if err != nil {
		logger.Error("Désérialisation d'une room", err)
	}
}
示例#3
0
// ToString Convertit l'objet Message en string
func (message *SendMessage) String() string {
	jsonContent, err := json.Marshal(message)
	if err != nil {
		logger.Error("Erreur lors de la sérialisation d'un message", err)
	}

	return string(jsonContent[:])
}
示例#4
0
// String Convertit l'objet LoginReply en string
func (reply *LoginReply) String() string {
	jsonContent, err := json.Marshal(reply)
	if err != nil {
		logger.Error("Erreur lors de la sérialisation d'un message", err)
	}

	return string(jsonContent[:])
}
示例#5
0
func (user *User) getFromDb(key string) {

	encodedUser := db.Db.Get(db.UserBucket, key)
	err := json.Unmarshal(encodedUser, user)
	if err != nil {
		logger.Error("Désérialisation d'un utilisateur - ", err)
	}
}
示例#6
0
// GetMessageObject Retourne l'objet Message à partir du message reçu par un client
func GetMessageObject(message string) ReceiveMessage {
	var chatMessage ReceiveMessage
	err := json.Unmarshal([]byte(message), &chatMessage)
	if err != nil {
		logger.Error("Erreur lors de la désérialisation d'un message", err)
	}

	return chatMessage
}
示例#7
0
// GetLoginRequest Retourne la requête de connexion associée au message
func GetLoginRequest(message string) LoginRequest {
	var request LoginRequest
	err := json.Unmarshal([]byte(message), &request)
	if err != nil {
		logger.Error("Erreur lors de la désérialisation d'une demande de connexion", err)
	}

	return request
}
示例#8
0
// GetChangeRoomRequest Retourne la requête de changement de salle associée au message
func GetChangeRoomRequest(message string) ChangeRoomRequest {
	var request ChangeRoomRequest
	err := json.Unmarshal([]byte(message), &request)
	if err != nil {
		logger.Error("Erreur lors de la désérialisation d'un changement de salle", err)
	}

	return request
}
示例#9
0
func (dbManager *DbManager) CreateBucket(bucketName string) {
	dbManager.db.Update(func(tx *bolt.Tx) error {
		_, err := tx.CreateBucketIfNotExists([]byte(bucketName))
		if err != nil {
			logger.Error("Erreur lors de la création du bucket Room", err)
		}

		return nil
	})
}
示例#10
0
func (room *Room) GetMessages() []message.SendMessage {
	messages := db.Db.GetElementsFromBucket(db.MessageBucketPrefix + room.Name)
	var messagesToSend []message.SendMessage
	for _, m := range messages {
		var mess message.SendMessage
		err := json.Unmarshal([]byte(m), &mess)
		if err != nil {
			logger.Error("Désérialisation d'un message", err)
		}

		mess.DetectAndAddEmoticonsInMessage()
		messagesToSend = append(messagesToSend, mess)
	}
	return messagesToSend
}
示例#11
0
//Init initialise la liste des salles
func (roomList *RoomList) Init() {
	roomList.rooms = make(map[string]*Room)

	rooms := db.Db.GetElementsFromBucket(db.RoomBucket)
	for _, room := range rooms {
		var roomFields map[string]string
		err := json.Unmarshal([]byte(room), &roomFields)
		if err != nil {
			logger.Error("Erreur lors de la désérilisation des salles de la bd", err)
		}

		roomName := roomFields["Name"]

		var roomUsers map[string]*user.User
		roomList.rooms[roomName] = &Room{roomName, roomUsers}
		roomList.rooms[roomName].Init(roomName)
	}
}
示例#12
0
func (server *Server) changeUserRoom(u *user.User, roomName string) {

	logger.Print("Changement de salle : " + roomName)
	socket := *u.Socket

	oldRoom := u.Room
	if server.roomList.RemoveUserFromRoom(u) {
		socket.BroadcastTo(oldRoom, "userLeft", "{\"Login\": \""+u.Login+"\"}")
		socket.Leave(oldRoom)
	}

	newRoomCreated := false
	if !server.roomList.Exist(roomName) {
		server.roomList.AddRoom(roomName)
		newRoomCreated = true
		rooms := server.roomList.GetRoomsTab()
		for _, value := range rooms {
			err := socket.BroadcastTo(value, "newRoom", "{\"Name\":\""+roomName+"\"}")
			if err != nil {
				logger.Error("newRoom - ", err)
			}
		}
	}

	success := false
	if server.roomList.AddUserInRoom(u, roomName) == nil {

		socket.Join(roomName)
		socket.BroadcastTo(roomName, "newUser", "{\"Login\": \""+u.Login+"\",\"GravatarLink\": \""+u.GravatarLink+"\"}")

		success = true
	}

	var reply room.ChangeRoomReply
	newRoom := server.roomList.GetRoom(roomName)
	if newRoom != nil {
		reply = room.ChangeRoomReply{success, roomName, newRoomCreated, newRoom.GetUsersDetails(), newRoom.GetMessages()}
	} else {
		reply = room.ChangeRoomReply{success, roomName, newRoomCreated, nil, nil}
	}

	time.Sleep(500 * time.Millisecond)
	socket.Emit("changeRoom", reply.ToString())
}
示例#13
0
//AddValue ajoute dans la BD
func (dbManager *DbManager) AddValue(bucketName string, key string, object fmt.Stringer) error {

	err := dbManager.db.Update(func(tx *bolt.Tx) error {
		bucket, err := tx.CreateBucketIfNotExists([]byte(bucketName))
		if err != nil {
			return err
		}

		encoded := object.String()

		return bucket.Put([]byte(key), []byte(encoded))
	})

	if err == nil {
		logger.Print("Ajout de " + key + " dans la bd")
	} else {
		logger.Error("Erreur lors de l'ajout dans la bd", err)
	}

	return nil
}