using System;
using System.Text;
using System.IO;
using Google.GData.Apps;
using Google.GData.Apps.Groups;
using Google.GData.Extensions;
namespace GoogleAppsConsoleApplication
{
class AppsDemo
{
private static string domain;
private static string adminEmail;
private static string adminPassword;
// If desired, you may replace these values of username, nickname
// and email list name with others that do not already exist on
// your domain.
private static string testUserName = "testUserName" + new Random().Next().ToString();
private const string testNickname = "testNickname";
private static string testGroup = "testGroup" + new Random().Next().ToString();
private static void UserOperations(AppsService service)
{
// Create a new user.
UserEntry insertedEntry = service.CreateUser(testUserName, "Jane",
"Doe", "testuser-password");
Console.WriteLine("Created new user '{0}'", insertedEntry.Login.UserName);
// Suspend the user.
UserEntry suspendedEntry = service.SuspendUser(testUserName);
Console.WriteLine("Suspended account for {0}", suspendedEntry.Login.UserName);
// Restore the user.
UserEntry restoredEntry = service.RestoreUser(testUserName);
Console.WriteLine("Restored user {0}", restoredEntry.Login.UserName);
// Query for a single user.
UserEntry entry = service.RetrieveUser(testUserName);
Console.WriteLine("Retrieved user {0}", entry.Login.UserName);
// Query for a page of users.
UserFeed feed = service.RetrievePageOfUsers(testUserName);
entry = feed.Entries[0] as UserEntry;
Console.WriteLine("Retrieved page of {0} users, beginning with '{1}'", feed.Entries.Count,
entry.Login.UserName);
// Query for all users.
feed = service.RetrieveAllUsers();
entry = feed.Entries[0] as UserEntry;
Console.WriteLine("Retrieved all {0} users in the domain, beginning with '{1}'",
feed.Entries.Count, entry.Login.UserName);
// Update the user's given name.
restoredEntry.Name.GivenName = "John";
UserEntry updatedEntry = service.UpdateUser(entry);
Console.WriteLine("Updated user with new given name '{0}'", updatedEntry.Name.GivenName);
}
private static void NicknameOperations(AppsService service)
{
// Create a new nickname.
NicknameEntry insertedEntry = service.CreateNickname(testUserName, testNickname);
Console.WriteLine("Created nickname '{0}' for user {1}", insertedEntry.Nickname.Name,
insertedEntry.Login.UserName);
// Retrieve the newly-created nickname.
NicknameEntry entry = service.RetrieveNickname(testNickname);
Console.WriteLine("Retrieved nickname {0}", entry.Nickname.Name);
// Retrieve all nicknames for testUserName (really, just this one).
NicknameFeed feed = service.RetrieveNicknames(testUserName);
entry = feed.Entries[0] as NicknameEntry;
Console.WriteLine("Retrieved nickname '{0}' for user {1}", entry.Nickname.Name,
entry.Login.UserName);
// Retrieve a page of nicknames.
feed = service.RetrievePageOfNicknames(testNickname);
entry = feed.Entries[0] as NicknameEntry;
Console.WriteLine("Retrieved page of {0} nicknames, beginning with '{1}'",
feed.Entries.Count, entry.Nickname.Name);
// Retrieve the feed of all nicknames.
feed = service.RetrieveAllNicknames();
entry = feed.Entries[0] as NicknameEntry;
Console.WriteLine("Retrieved all {0} nicknames in the domain, beginning with '{1}'",
feed.Entries.Count, entry.Nickname.Name);
}
private static void GroupOperations(AppsService service)
{
// Create a new group.
AppsExtendedEntry insertedEntry = service.Groups.CreateGroup(testGroup, testGroup, testGroup,null);
Console.WriteLine("Created new group '{0}'", insertedEntry.getPropertyByName("groupId" ).Value);
// Retrieve the newly-created group.
AppsExtendedEntry entry = service.Groups.RetrieveGroup(testGroup);
Console.WriteLine("Retrieved group '{0}'", entry.getPropertyByName("groupId").Value);
// Add Member To Group
AppsExtendedEntry newMemberEntry = service.Groups.AddMemberToGroup(testUserName, testGroup);
Console.WriteLine("User '{0}' was added as member to group '{1}'",
newMemberEntry.getPropertyByName("memberId").Value, testGroup);
// Add Owner to Group
AppsExtendedEntry newOwnerEntry = service.Groups.AddOwnerToGroup(testUserName, testGroup);
Console.WriteLine("User '{0}' was added as ownter to group '{1}'",
newOwnerEntry.getPropertyByName("email").Value, testGroup);
// Check if a User is a Group Member
Console.WriteLine("Is User '{0}' member of group '{1}'? '{2}'",
testUserName, testGroup, service.Groups.IsMember(testUserName, testGroup));
// Check if a User is a Group Member
Console.WriteLine("Is User '{0}' owner of group '{1}'? '{2}'",
testUserName, testGroup, service.Groups.IsOwner(testUserName, testGroup));
// Remove Member from Group
service.Groups.RemoveMemberFromGroup(testUserName, testGroup);
Console.WriteLine("User '{0}' was removed as member to group '{1}'",
testUserName, testGroup);
// Remove Owner from Group
service.Groups.RemoveOwnerFromGroup(testUserName, testGroup);
Console.WriteLine("User '{0}' was removed as ownter to group '{1}'",
testUserName, testGroup);
// Retreive all groups
AppsExtendedFeed groupsFeed = service.Groups.RetrieveAllGroups();
Console.WriteLine("First Group from All groups: '{0}'",
(groupsFeed.Entries[0] as AppsExtendedEntry).getPropertyByName("groupId").Value);
}
private static void CleanUp(AppsService service)
{
// Delete the group that was created
service.Groups.DeleteGroup(testGroup);
Console.WriteLine("Deleted group {0}", testGroup);
// Delete the nickname that was created.
service.DeleteNickname(testNickname);
Console.WriteLine("Deleted nickname {0}", testNickname);
// Delete the user that was created.
service.DeleteUser(testUserName);
Console.WriteLine("Deleted user {0}", testUserName);
}
private static void RunSample(AppsService service)
{
try
{
// Demonstrate operations on user accounts.
UserOperations(service);
// Demonstrate operations on nicknames.
NicknameOperations(service);
// Demostrate operations on groups
GroupOperations(service);
// Clean up (delete the username, nickname and email list
// that were created).
CleanUp(service);
}
catch (AppsException a)
{
Console.WriteLine("A Google Apps error occurred.");
Console.WriteLine();
Console.WriteLine("Error code: {0}", a.ErrorCode);
Console.WriteLine("Invalid input: {0}", a.InvalidInput);
Console.WriteLine("Reason: {0}", a.Reason);
}
}
///
/// This console application demonstrates all the Google Apps
/// Provisioning API calls. It accepts authentication information
/// from the command-line and performs a series of create/
/// retrieve/update/delete operations on user accounts, nicknames,
/// and email lists, as described in the comments of RunTests.
///
/// Command-line arguments: args[0] is
/// the domain, args[1] is the admin email address, and args[2]
/// is the admin psasword.
///
/// Example: AppsDemo example.com admin@example.com my_password
public static void Main(string[] args)
{
if (args.Length != 3)
{
Console.WriteLine("Syntax: AppsDemo ");
}
else
{
domain = args[0];
adminEmail = args[1];
adminPassword = args[2];
AppsService service = new AppsService(domain, adminEmail, adminPassword);
RunSample(service);
}
}
}
}