Esempio n. 1
0
func (s *aliasStore) Room(alias ct.Alias) (*ct.RoomId, types.Error) {
	room, err := s.idMap.Lookup(ct.Id(alias))
	if err != nil {
		return nil, types.InternalError(err)
	}
	return (*ct.RoomId)(room), nil
}
Esempio n. 2
0
func (db *userDb) UserPasswordHash(id ct.UserId) (string, types.Error) {
	value, err := db.State(ct.Id(id), passwordHashKey)
	if err != nil {
		return "", types.InternalError(err)
	}
	return string(value), nil
}
Esempio n. 3
0
func (s *aliasStore) Aliases(room ct.RoomId) ([]ct.Alias, types.Error) {
	ids, err := s.idMap.ReverseLookup(ct.Id(room))
	if err != nil {
		return nil, types.InternalError(err)
	}
	aliases := *(*[]ct.Alias)(unsafe.Pointer(&ids))
	return aliases, nil
}
Esempio n. 4
0
func (db *memberStore) Peers(userId ct.UserId) (map[ct.UserId]struct{}, types.Error) {
	peers := map[ct.UserId]struct{}{}
	rooms, err := db.idMap.ReverseLookup(ct.Id(userId))
	if err != nil {
		return nil, types.InternalError(err)
	}
	for _, room := range rooms {
		members, err := db.idMap.Lookup(room)
		if err != nil {
			return nil, types.InternalError(err)
		}
		for _, member := range members {
			peers[ct.UserId(member)] = struct{}{}
		}
	}
	return peers, nil
}
Esempio n. 5
0
func (s *aliasStore) RemoveAlias(alias ct.Alias, room ct.RoomId) types.Error {
	deleted, err := s.idMap.Delete(ct.Id(alias), ct.Id(room))
	if err != nil {
		return types.InternalError(err)
	}
	if !deleted {
		return types.NotFoundError("room alias '" + alias.String() + "' doesn't exist")
	}
	return nil
}
Esempio n. 6
0
func (s *aliasStore) AddAlias(alias ct.Alias, room ct.RoomId) types.Error {
	inserted, err := s.idMap.Insert(ct.Id(alias), ct.Id(room))
	if err != nil {
		return types.InternalError(err)
	}
	if !inserted {
		return types.RoomInUseError("room alias '" + alias.String() + "' already exists")
	}
	return nil
}
Esempio n. 7
0
func (db *memberStore) RemoveMember(roomId ct.RoomId, userId ct.UserId) types.Error {
	deleted, err := db.idMap.Delete(ct.Id(roomId), ct.Id(userId))
	if err != nil {
		return types.InternalError(err)
	}
	if !deleted {
		msg := fmt.Sprintf("user %s is not a member of the room %s", userId, roomId)
		return types.ServerError(msg)
	}
	return nil
}
Esempio n. 8
0
func (db *memberStore) AddMember(roomId ct.RoomId, userId ct.UserId) types.Error {
	inserted, err := db.idMap.Put(ct.Id(roomId), ct.Id(userId))
	if err != nil {
		return types.InternalError(err)
	}
	if !inserted {
		msg := fmt.Sprintf("user %s is already a member of the room %s", userId, roomId)
		return types.ServerError(msg)
	}
	return nil
}
Esempio n. 9
0
func (db *userDb) SetUserPasswordHash(id ct.UserId, hash string) types.Error {
	_, err := db.SetState(ct.Id(id), passwordHashKey, []byte(hash))
	return types.InternalError(err)
}
Esempio n. 10
0
func (db *userDb) UserExists(id ct.UserId) (bool, types.Error) {
	exists, err := db.BucketExists(ct.Id(id))
	return exists, types.InternalError(err)
}
Esempio n. 11
0
func (db *userDb) CreateUser(id ct.UserId) (bool, types.Error) {
	exists, err := db.CreateBucket(ct.Id(id))
	return exists, types.InternalError(err)
}
Esempio n. 12
0
func (db *memberStore) Users(roomId ct.RoomId) ([]ct.UserId, types.Error) {
	ids, err := db.idMap.Lookup(ct.Id(roomId))
	users := *(*[]ct.UserId)(unsafe.Pointer(&ids))
	return users, types.InternalError(err)
}
Esempio n. 13
0
func (db *memberStore) Rooms(userId ct.UserId) ([]ct.RoomId, types.Error) {
	ids, err := db.idMap.ReverseLookup(ct.Id(userId))
	rooms := *(*[]ct.RoomId)(unsafe.Pointer(&ids))
	return rooms, types.InternalError(err)
}