Author: fmantek
Date: Thu Nov 15 07:18:10 2007
New Revision: 322

Added:
   trunk/clients/cs/samples/appsforyourdomain/migration/
    
trunk/clients/cs/samples/appsforyourdomain/migration/migrationsample.cs 
  (contents, props changed)
   trunk/clients/cs/samples/appsforyourdomain/migration/readme.txt

Log:
new readme/sample


Added: trunk/clients/cs/samples/appsforyourdomain/migration/migrationsample.cs
==============================================================================
--- (empty file)
+++  
trunk/clients/cs/samples/appsforyourdomain/migration/migrationsample.cs 
Thu Nov 15 07:18:10 2007
@@ -0,0 +1,196 @@
+/* Copyright (c) 2007 Google Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+*/
+
+using System;
+using System.IO;
+using System.Text;
+using System.Xml;
+using Google.GData.Apps.Migration;
+using Google.GData.Client;
+using Google.GData.Extensions;
+using Google.GData.Extensions.Apps;
+
+namespace GoogleAppsMigrationDemo
+{
+    /// <summary>
+    /// Sample class to demonstrate the use of the Google Apps
+    /// Domain Migration API client library.
+    /// </summary>
+    public class MigrationSample
+    {
+        private static MailItemService mailItemService;
+
+        // Authentication credentials.
+        private static string domain;
+        private static string adminUsername;
+        private static string adminPassword;
+
+        // Destination email account into which mail should be transferred.
+        private static string destinationUser;
+
+        // RFC 822 email message to migrate.
+        private const string rfcTxt =
+            "Received: by 10.143.160.15 with HTTP; Mon, 16 Jul 2007 
10:12:26 -0700 (PDT)\r\n" +
+            "Message-ID: <[EMAIL PROTECTED]>\r\n" +
+            "Date: Mon, 16 Jul 2007 10:12:26 -0700\r\n" +
+            "From: \"Mr. Serious\" <[EMAIL PROTECTED]>\r\n" +
+            "To: \"Mr. Admin\" 
<[EMAIL PROTECTED]>\r\n" +
+            "Subject: Random Subject \r\n" +
+            "MIME-Version: 1.0\r\n" +
+            "Content-Type: text/plain; charset=ISO-8859-1; 
format=flowed\r\n" +
+            "Content-Transfer-Encoding: 7bit\r\n" +
+            "Content-Disposition: inline\r\n" +
+            "Delivered-To: [EMAIL PROTECTED]" +
+            "\r\n" +
+            "This is a message delivered via DMAPI\r\n" +
+            "\r\n";
+        private static readonly Random random = new Random();
+
+        /// <summary>
+        /// Sets up the <code>MailItemService</code> based on the 
provided arguments.
+        /// </summary>
+        /// <param name="args">arguments passed to the program</param>
+        private static void Initialize(string[] args)
+        {
+            domain = args[0];
+            adminUsername = args[1];
+            adminPassword = args[2];
+            if (args.Length > 3)
+            {
+                destinationUser = args[3];
+            }
+            else
+            {
+                destinationUser = adminUsername;
+            }
+
+            mailItemService = new MailItemService(domain, "Sample 
Migration Application");
+            mailItemService.setUserCredentials(adminUsername + "@" + 
domain, adminPassword);
+        }
+
+        /// <summary>
+        /// Generates a random RFC822 message based on the template in 
<code>rfcTxt</code>.
+        /// We have to randomly modify the subject and message ID to 
prevent duplicate
+        /// supression by the Gmail server.
+        /// </summary>
+        /// <returns>the randomly-modified RFC822 message</returns>
+        private static string GenerateRandomRfcText()
+        {
+            string result = rfcTxt;
+
+            result = result.Replace("Random Subject", "Random 
Subject " + random.Next().ToString());
+            result = result.Replace("_message_id_", random.Next().ToString());
+
+            return result;
+        }
+
+        /// <summary>
+        /// Helper method to set up a new <code>MailItemEntry</code>.
+        /// </summary>
+        /// <param name="batchId">the batch ID for this entry</param>
+        /// <returns>the newly created <code>MailItemEntry</code></returns>
+        private static MailItemEntry SetupMailItemEntry(string batchId)
+        {
+            MailItemEntry entry = new MailItemEntry();
+
+            entry.Labels.Add(new LabelElement("Friends"));
+            entry.Labels.Add(new LabelElement("Event Invitations"));
+
+            entry.MailItemProperties.Add(MailItemPropertyElement.INBOX);
+            entry.MailItemProperties.Add(MailItemPropertyElement.STARRED);
+            entry.MailItemProperties.Add(MailItemPropertyElement.UNREAD);
+
+            entry.Rfc822Msg = new Rfc822MsgElement(GenerateRandomRfcText());
+
+            entry.BatchData = new GDataBatchEntryData();
+            entry.BatchData.Id = batchId;
+
+            return entry;
+        }
+
+        /// <summary>
+        /// Demonstrates inserting several mail items in a batch.
+        /// </summary>
+        /// <param name="numToInsert">the number of entries to insert</param>
+        /// <returns>a <code>MailItemFeed</code> with the results of 
the insertions</returns>
+        private static MailItemFeed BatchInsertMailItems(int numToInsert)
+        {
+            MailItemEntry[] entries = new MailItemEntry[numToInsert];
+
+            // Set up the mail item entries to insert.
+            for (int i = 0; i < numToInsert; i++)
+            {
+                entries[i] = SetupMailItemEntry(i.ToString());
+            }
+
+            // Execute the batch request and print the results.
+            MailItemFeed batchResult = mailItemService.Batch(domain, 
destinationUser, entries);
+            foreach (AtomEntry entry in batchResult.Entries)
+            {
+                GDataBatchEntryData batchData = entry.BatchData;
+
+                Console.WriteLine("Mail message {0}: {1} {2}",
+                    batchData.Id, batchData.Status.Code, 
batchData.Status.Reason);
+            }
+
+            return batchResult;
+        }
+
+        /// <summary>
+        /// Program entry point.  Demonstrates the process of 
migrating a batch
+        /// of email messages using the Google Apps Email Migration API.
+        /// </summary>
+        /// <param name="args">Authentication parameters, as explained in
+        /// the <code>ShowUsage</code> method.</param>
+        public static void Main(string[] args)
+        {
+            if ((args.Length < 3) || (args.Length > 0 && 
args[0].Equals("--help")))
+            {
+                ShowUsage();
+                return;
+            }
+            Initialize(args);
+
+            try
+            {
+                // Insert several emails in a batch.
+                MailItemFeed batchResults = BatchInsertMailItems(10);
+            }
+            catch (GDataRequestException e)
+            {
+                Console.WriteLine("Operation failed ({0}): {1}", 
e.Message, e.ResponseString);
+            }
+
+        }
+
+        /// <summary>
+        /// Shows a message explaining the usage of the sample application.
+        /// </summary>
+        private static void ShowUsage()
+        {
+            Console.Error.WriteLine("Usage:" + "\n" + "  
migration_sample <domain> <login_email> <login_password> " +
+                                               "[destination_email]\n");
+            Console.Error.WriteLine("domain:" + "\n" + "  The hosted 
domain (e.g. example.com) in which the migration " +
+                                               "will occur.\n");
+            Console.Error.WriteLine("login_user:" + "\n" + "  The 
username of the administrator or user migrating " +
+                                                "mail.\n");
+            Console.Error.WriteLine("login_password:" + "\n" + "  The 
password of the administrator or user migrating " +
+                                                "mail.\n");
+            Console.Error.WriteLine("destination_user:" + "\n" + "  
The username to which emails should be migrated. " +
+                                                "End users can only 
transfer mail to their own mailboxes.  If " +
+                                                "unspecified, will 
default to login_email.");
+        }
+    }
+}

Added: trunk/clients/cs/samples/appsforyourdomain/migration/readme.txt
==============================================================================
--- (empty file)
+++ trunk/clients/cs/samples/appsforyourdomain/migration/readme.txt     Thu 
Nov 15 07:18:10 2007
@@ -0,0 +1,19 @@
+ gapps_migration_sample: A simple application that demonstrates
+ ow to migrate email messages to a Google Apps email account.
+ 
+ To migrate mail as a Google Apps user, invoke as follows:
+ 
+     gapps_migration_sample <domain> <username> <password>
+ 
+ For example:
+ 
+     gapps_migration_sample example.com jdoe mypassword
+ 
+ To migrate mail as a Google Apps administrator, also specify
+ the destination mailbox (username) for the mail upload:
+ 
+     gapps_migration_sample <domain> <admin_user> <admin_pass> 
<destination_user>
+ 
+ For example:
+ 
+     gapps_migration_sample example.com admin mypassword jdoe

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"Google Data API" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at 
http://groups.google.com/group/google-help-dataapi?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to