Elive

 view release on metacpan or  search on metacpan

script/elive_raise_meeting  view on Meta::CPAN

	'participants|participant|others|other=s{,}' => \@participants,
	'upload=s' => \$upload,
	'import_from_server|import=s' => \$import,
	'add_preload|use_preload=i' => \$preload_opt,
        'occurs=i%' => \%occurs,
	'use=s' => \$class,

	'all_moderators!' => \$session_data{allModerators},
	'boundary=i' => \$session_data{boundaryMinutes},
	'cost_center|cost_centre=s' => \$session_data{costCenter},
	'exit_url|redirect_url=s' => \$session_data{redirectURL},
	'facilitator=s' => \$session_data{facilitatorId},
	'follow|follow_moderator!' => \$session_data{followModerator},
	'invites|invitations!' => \$session_data{inSessionInvitation},
	'meeting_password|meeting_pass|session_password|session_pass=s' => \$session_data{password},
	'max_cameras|cameras|video_window=i' => \$session_data{videoWindow},
	'max_talkers|talkers=i' => \$session_data{maxTalkers},
	'moderator_notes=s' => \$session_data{moderatorNotes},
	'name|meeting_name=s' => \$session_data{name},
	'private!' => \$session_data{privateMeeting},
	'permissions!' => \$session_data{fullPermissions},
	'profile|profile_display=s' => \$session_data{profile},
	'raise_hands!' => \$session_data{raiseHandOnEnter},
	'restricted!' => \$session_data{restrictedMeeting},
	'recording_resolution=s' => \$session_data{recordingResolution},
	'recording|recording_status=s' => \$session_data{recordingStatus},
	'seats=i' => \ $session_data{seats},
	'supervised!' => \$session_data{supervised},
	'user_notes=s' => \$session_data{userNotes},

	'v|version' => \$version,
	'debug=i' => \$debug,
	'help|?' => \$help,
	'dump=s' => \$dump,
    )
	or pod2usage(2);

    pod2usage(0) if $help;

    if ($version) {
	print "Elive v${Elive::VERSION} (c) 2009 - 2012\n";
	exit(0);
    };

    ($url = shift @ARGV)
	or pod2usage("missing url argument");

    Elive->debug($debug) if defined $debug;
    # debug may also be set via $ENV{ELIVE_DEBUG}
    $debug = Elive->debug;

    if ($debug) {
	$SIG{__WARN__} = \&Carp::cluck if $debug > 1;
	$SIG{__DIE__} = \&Carp::confess;
    }

    $url ||= Elive::Util::prompt("Url ('http[s]://...'): ");

    unless ($username && $password) {
	#
	# look for credentials encoded in the uri
	#
	my $uri_obj = URI->new($url);
	my $userinfo = $uri_obj->userinfo; # credentials supplied in URI

	if ($userinfo) {
	    my ($uri_user, $uri_pass) = split(':', $userinfo, 2);
	    $username ||= URI::Escape::uri_unescape($uri_user);
	    $password ||= URI::Escape::uri_unescape($uri_pass)
		if $uri_pass;
	}
    }

    $username ||= Elive::Util::prompt('Username: ');
    $password ||= Elive::Util::prompt('Password: ', password => 1);

    our $connection; 
    $connection = Elive->connect($url, $username, $password);

    $class ||= do {
	#
	# use hasn't specified elluminate compatibility, or which session
	# class to use. Guess it from their Elluminate server version.
	#
	my $server_version = eval {$connection->version}
	or bail ($@ || "unable to get server details version\n");

	my $server_version_num = version->new($server_version)->numify;
	my $elm3_min_version_num = version->declare( '9.5.0' )->numify;

	warn "Elluminate Live! version: $server_version_num (elm3 min: $elm3_min_version_num)\n" if $debug;
	$server_version_num >= $elm3_min_version_num
	    ? 'elm3'
	    : 'elm2'
    };

    $class = {elm2 => 'Elive::View::Session',
	      elm3 => 'Elive::Entity::Session'}->{$class} || $class;

    warn "Session class: $class\n" if $debug;

    eval "use $class";
    bail("unable to load class $class: $@") if $@;

    bail("class $class: does not implement the 'insert' method")
	unless eval{ $class->can('insert') };

    for ($session_data{recordingStatus}) {
	next unless defined;
	$_ = lc $_;
	#
	# accept some of the other synonyms for the various modes as
	# seen in documentation and Elluminate's web interface.
	#
	s{^none|disabled$}{off}x;
	s{^manual$}{remote}x;
	s{^auto(matic)?$}{on}x;

	pod2usage("-recording_status must be: on/auto, off/none/disabled or manual/remote\n")
	    unless m{^on|off|remote$}x;
    }

    for ($session_data{recordingResolution}) {
	next unless defined;



( run in 0.733 second using v1.01-cache-2.11-cpan-39bf76dae61 )