Skip to content
jmeridth edited this page Mar 23, 2012 · 5 revisions
using System;
using Rackspace.Cloudfiles;

namespace cloudfilesconsole
{
    class Program
    {
        private const string TestContainerName = "testcontainer12345";
        private const string LocalFileName = "newobject.png";
        private const string ObjectName = "folder1/folder2/folder3/newobject.png";
        private const string NameKey = "name";

        static void Main(string[] args)
        {
            var creds = new UserCredentials("YOUR_USERNAME_HERE", "YOUR_API_KEY_HERE");
            var client = new CF_Client();
            Connection conn = new CF_Connection(creds, client);
            Console.WriteLine("Authenticating...");
            conn.Authenticate();
            Console.WriteLine("Authenticated");

            DeleteContainer(conn, client);
            CreateContainer(conn, client);
            ListAllContainers(conn, client);
            SaveObjectToCloudfiles(conn, client);
            SaveObjectLocally(conn, client);
            ListAllObjectsInTestContainer(conn, client);
            DeleteAllObjectsInTestContainer(conn, client);
            DeleteContainer(conn, client);

            Console.ReadLine();
        }

        private static void DeleteAllObjectsInTestContainer(Connection conn, CF_Client client)
        {
            var container = new CF_Container(conn, client, TestContainerName);
            var list = container.GetObjectList(true);
            Console.WriteLine("Deleting all objects in {0} container", TestContainerName);
            foreach (var item in list)
            {
                container.DeleteObject(item[NameKey]);
            }
            Console.WriteLine("Deleted all objects in {0} container", TestContainerName);
            BreakLine();
        }

        private static void DeleteContainer(Connection conn, Client client)
        {
            try
            {
                var account = new CF_Account(conn, client);
                Console.WriteLine("Deleting container {0}", TestContainerName);
                account.DeleteContainer(TestContainerName);
                Console.WriteLine("Successfully deleted container {0}", TestContainerName);    
            }
            catch(Exception ex)
            {
                Console.WriteLine(ex.Message);
            }
            BreakLine();
        }

        private static void CreateContainer(Connection conn, Client client)
        {
            var account = new CF_Account(conn, client);
            Console.WriteLine("Creating container {0}", TestContainerName);
            account.CreateContainer(TestContainerName);
            Console.WriteLine("Successfully created container {0}", TestContainerName);
            BreakLine();
        }

        private static void ListAllContainers(Connection conn, Client client)
        {
            var account = new CF_Account(conn, client);
            var list = account.GetContainers(true);
            Console.WriteLine("There are {0} containers in the account", list.Count);
            Console.WriteLine("Listing all containers");
            foreach (var item in list)
            {
                Console.WriteLine(item.Name);
            }
            Console.WriteLine("Listing all containers complete");
            BreakLine();
        }

        private static void ListAllObjectsInTestContainer(Connection conn, Client client)
        {
            var container = new CF_Container(conn, client, TestContainerName);
            var list = container.GetObjectList(true);
            Console.WriteLine("There are {0} items in the {1} container", list.Count, TestContainerName);
            Console.WriteLine("Listing all objects in {0} container", TestContainerName);
            foreach(var item in list)
            {
                Console.WriteLine(item[NameKey]);
                Console.WriteLine("=============");
            }
            Console.WriteLine("Listed all objects in {0} container", TestContainerName);
            BreakLine();
        }

        private static void SaveObjectLocally(Connection conn, Client client)
        {
            var container = new CF_Container(conn, client, TestContainerName);
            var obj = new CF_Object(conn, container, client, ObjectName);
            const string file_name = @"C:\\" + LocalFileName;
            Console.WriteLine("Saving File {0} locally", LocalFileName);
            obj.SaveToFile(file_name, true);
            Console.WriteLine("File {0} saved locally", LocalFileName);
            BreakLine();
        }

        private static void SaveObjectToCloudfiles(Connection conn, Client client)
        {
            var container = new CF_Container(conn, client, TestContainerName);
            var obj = new CF_Object(conn, container, client, ObjectName);
            Console.WriteLine("Saving File {0} to Cloudfiles", LocalFileName);
            obj.WriteFromFile(@"C:\\" + LocalFileName);
            Console.WriteLine("File {0} saved to Cloudfiles with object name {1}", LocalFileName, ObjectName);
            BreakLine();
        }

        private static void BreakLine()
        {
            Console.WriteLine("========================================================");
            Console.WriteLine("========================================================");
        }
    }
}

Clone this wiki locally