public static GoogleAppsAddGroupMemberProgramOptions Parse(string[] args) { var programOptions = new GoogleAppsAddGroupMemberProgramOptions(); programOptions.Options = new OptionSet() { { "d|domain=", "{DOMAIN} containing group", x => programOptions.Domain = x }, { "u|username="******"{USERNAME}", x => programOptions.Username = x }, { "p|password="******"{PASSWORD}", x => programOptions.Password = x }, { "f|file=", "Tab-delimited {FILE} of group and member", x => programOptions.File = x }, { "l|list", "Print the complete list of groups in the domain and exit.", x => programOptions.List = (x != null) }, { "m|list-members=", "Print the list of members in a group and exit.", x => programOptions.ListMembers = x }, { "g|list-groups-for=", "Print the list of groups for a user and exit", x => programOptions.ListGroupsForMember = x }, { "?|help", "Show this message and exit.", x => programOptions.Help = (x != null) } }; programOptions.Options.Parse(args); return(programOptions); }
static void CollectOptionsInteractiveConsole(GoogleAppsAddGroupMemberProgramOptions options) { while (string.IsNullOrEmpty(options.Domain)) { Console.Write("Google Apps Domain or Sub-domain: "); options.Domain = Console.ReadLine(); } while (string.IsNullOrEmpty(options.Username)) { Console.Write("Admin username: "******"Password: "******"\b \b"); } } else { stringBuilder.Append(keyInfo.KeyChar); Console.Write("*"); } } Console.WriteLine(); options.Password = stringBuilder.ToString(); } }
static void Main(string[] args) { //parse options var options = GoogleAppsAddGroupMemberProgramOptions.Parse(args); if (options.Help) { options.PrintHelp(Console.Out); return; } if (options.Incomplete) { CollectOptionsInteractiveConsole(options); } if (!options.Username.Contains("@")) { Console.WriteLine("Whoops. Your username must be an email address."); Console.WriteLine(); options.Username = null; CollectOptionsInteractiveConsole(options); } //create service object var service = new AppsService(options.Domain, options.Username, options.Password); try { if (options.List) { ListGroups(Console.Out, service); } else if (!string.IsNullOrEmpty(options.ListMembers)) { ListGroupMembers(Console.Out, service, options.ListMembers); } else if (!string.IsNullOrEmpty(options.ListGroupsForMember)) { ListGroupsForMember(Console.Out, service, options.ListGroupsForMember); } else { //add members to group if (string.IsNullOrEmpty(options.File)) { AddGroupMemberInteractiveConsole(service, options.Domain); } else { AddGroupMemberBatch(Console.Out, service, options.Domain, options.File); } } } catch (InvalidCredentialsException) { Console.WriteLine(); Console.WriteLine("Invalid Credentials."); } catch (CaptchaRequiredException) { Console.WriteLine(); Console.WriteLine("Your account has been locked by Google."); Console.WriteLine("Use your browser to unlock your account."); Console.WriteLine("https://www.google.com/accounts/UnlockCaptcha"); } }
static void AddGroupMemberInteractiveConsole(AppsService service, string primaryDomain) { Console.WriteLine(); Console.WriteLine("No batch file option (-f). Entering interactive mode."); Console.WriteLine("Press CTRL+C to quit."); Console.WriteLine(); string lastGroup = null; while (true) //continue until CTRL+C { bool confirm = false; string group = null, member = null; while (string.IsNullOrEmpty(group)) { if (lastGroup == null) { Console.Write("Group [group@domain]: "); } else { Console.Write(string.Format("Group {0} [enter to confirm]: ", lastGroup)); } group = Console.ReadLine(); if (lastGroup != null && string.IsNullOrEmpty(group)) { group = lastGroup; } lastGroup = group; } while (string.IsNullOrEmpty(member)) { Console.Write(String.Format("Member to add to {0}: ", group)); member = Console.ReadLine(); } Console.Write(string.Format("Please confirm: Add {0} to {1} (y/n)? ", member, group)); confirm = Console.ReadLine().StartsWith("y", StringComparison.InvariantCultureIgnoreCase); if (!confirm) { Console.WriteLine("Cancelled. Group member not added."); } else { try { Console.WriteLine(AddGroupMember(service, group, member)); } catch (InvalidCredentialsException) { Console.WriteLine(); Console.WriteLine("Invalid Credentials."); Console.WriteLine(); //collect new credentials var options = new GoogleAppsAddGroupMemberProgramOptions() { Domain = primaryDomain }; CollectOptionsInteractiveConsole(options); service = new AppsService(options.Domain, options.Username, options.Password); } } Console.WriteLine(); } }
static void CollectOptionsInteractiveConsole( GoogleAppsAddGroupMemberProgramOptions options ) { while( string.IsNullOrEmpty( options.Domain ) ) { Console.Write( "Google Apps Domain or Sub-domain: " ); options.Domain = Console.ReadLine(); } while( string.IsNullOrEmpty( options.Username ) ) { Console.Write( "Admin username: "******"Password: "******"\b \b" ); } } else { stringBuilder.Append( keyInfo.KeyChar ); Console.Write( "*" ); } } Console.WriteLine(); options.Password = stringBuilder.ToString(); } }
static void AddGroupMemberInteractiveConsole( AppsService service, string primaryDomain ) { Console.WriteLine(); Console.WriteLine( "No batch file option (-f). Entering interactive mode." ); Console.WriteLine( "Press CTRL+C to quit." ); Console.WriteLine(); string lastGroup = null; while( true ) //continue until CTRL+C { bool confirm = false; string group=null, member=null; while( string.IsNullOrEmpty( group ) ) { if( lastGroup == null ) { Console.Write( "Group [group@domain]: " ); } else { Console.Write( string.Format( "Group {0} [enter to confirm]: ", lastGroup ) ); } group = Console.ReadLine(); if( lastGroup != null && string.IsNullOrEmpty( group ) ) { group = lastGroup; } lastGroup = group; } while( string.IsNullOrEmpty( member ) ) { Console.Write( String.Format( "Member to add to {0}: ", group ) ); member = Console.ReadLine(); } Console.Write( string.Format("Please confirm: Add {0} to {1} (y/n)? ", member, group) ); confirm = Console.ReadLine().StartsWith( "y", StringComparison.InvariantCultureIgnoreCase ); if( !confirm ) { Console.WriteLine( "Cancelled. Group member not added."); } else { try { Console.WriteLine( AddGroupMember( service, group, member ) ); } catch( InvalidCredentialsException ) { Console.WriteLine(); Console.WriteLine( "Invalid Credentials." ); Console.WriteLine(); //collect new credentials var options = new GoogleAppsAddGroupMemberProgramOptions() { Domain = primaryDomain }; CollectOptionsInteractiveConsole( options ); service = new AppsService( options.Domain, options.Username, options.Password ); } } Console.WriteLine(); } }
public static GoogleAppsAddGroupMemberProgramOptions Parse( string[] args ) { var programOptions = new GoogleAppsAddGroupMemberProgramOptions(); programOptions.Options = new OptionSet() { { "d|domain=", "{DOMAIN} containing group", x => programOptions.Domain = x }, { "u|username="******"{USERNAME}", x => programOptions.Username = x }, { "p|password="******"{PASSWORD}", x => programOptions.Password = x }, { "f|file=", "Tab-delimited {FILE} of group and member", x => programOptions.File = x }, { "l|list", "Print the complete list of groups in the domain and exit.", x => programOptions.List = (x != null ) }, { "m|list-members=", "Print the list of members in a group and exit.", x => programOptions.ListMembers = x }, { "g|list-groups-for=", "Print the list of groups for a user and exit", x => programOptions.ListGroupsForMember = x }, { "?|help", "Show this message and exit.", x => programOptions.Help = (x != null) } }; programOptions.Options.Parse( args ); return programOptions; }