Exemple #1
0
func (p urlParams) room(paramPosition int) (ct.RoomId, types.Error) {
	room, parseErr := ct.ParseRoomId(p.params[paramPosition].Value)
	if parseErr != nil {
		return ct.RoomId{}, types.BadParamError(parseErr.Error())
	}
	return room, nil
}
Exemple #2
0
func (e roomsEndpoint) doWildcardJoin(req *http.Request, params httprouter.Params) interface{} {
	user, err := readAccessToken(e.userService, e.tokenService, req)
	if err != nil {
		return err
	}
	roomIdOrAlias := params[0].Value
	room, parseErr := ct.ParseRoomId(roomIdOrAlias)
	if parseErr != nil {
		alias, parseErr := ct.ParseAlias(roomIdOrAlias)
		if parseErr != nil {
			return types.BadParamError("invalid room id or alias: " + roomIdOrAlias)
		}
		room, err = e.roomService.LookupAlias(alias)
		if err != nil {
			return err
		}
	}
	content := types.MembershipEventContent{}
	content.Membership = types.MembershipMember
	_, err = e.roomService.SetState(room, user, &content, user.String())
	if err != nil {
		return err
	}
	return struct{}{}
}
Exemple #3
0
func (p urlParams) user(paramPosition int, users interfaces.UserService) (ct.UserId, types.Error) {
	user, err := ct.ParseUserId(p.params[paramPosition].Value)
	if err != nil {
		return ct.UserId{}, types.BadParamError(err.Error())
	}
	if users != nil {
		exists, err := users.UserExists(user, user)
		if err != nil {
			return ct.UserId{}, err
		}
		if !exists {
			return ct.UserId{}, types.NotFoundError("user '" + user.String() + "' doesn't exist")
		}
	}
	return user, nil
}
Exemple #4
0
func (e roomsEndpoint) sendMessage(req *http.Request, params httprouter.Params, content *map[string]interface{}) interface{} {
	user, err := readAccessToken(e.userService, e.tokenService, req)
	if err != nil {
		return err
	}
	room, parseErr := ct.ParseRoomId(params[0].Value)
	if parseErr != nil {
		return types.BadParamError(parseErr.Error())
	}
	eventType := params[1].Value
	typedContent := types.NewGenericContent(*content, eventType)
	message, err := e.roomService.AddMessage(room, user, typedContent)
	if err != nil {
		return err
	}
	return eventIdResponse{message.EventId}
}