Logo Search packages:      
Sourcecode: f-spot version File versions

FotkiRemote.cs

/*
 * Simple upload based on the api at tcpdumps of the fotki web interfaces
 * 
 */
using System;
using System.IO;
using System.Text;
using System.Collections;
using System.Collections.Specialized;
using System.Net;

public class FotkiRemote {
      // This is the up
      public static string UploadBaseUrl = "http://public.fotki.com/";
      public static string AuthUrl = "http://login.fotki.com/";
      
      private CookieContainer cookies;
      
      string login;
      string passwd;

      public void Upload (Photo photo, string gallery)
      {
            if (login == null || passwd == null)
                  throw new Exception ("Must Login First");

            string path = string.Format ("/{0}/{1}/", login, gallery);
            
            FormClient client = new FormClient (cookies);
            client.SuppressCookiePath = true;
            client.Add ("cmd", "uploadns1");
            client.Add ("start", System.Web.HttpUtility.UrlEncode (path));
            client.Add ("photo", new FileInfo (photo.DefaultVersionUri.LocalPath));
            client.Add ("desc", photo.Description);
            if (photo.Tags != null) {
                  StringBuilder taglist = new StringBuilder ();

                  foreach (Tag t in photo.Tags) {
                        taglist.Append (t.Name + " ");
                  }
                  
                  client.Add ("keywords", taglist.ToString ());
            }

            string upload_url = UploadBaseUrl + path + "?";

            Stream response = client.Submit (upload_url).GetResponseStream ();
            StreamReader reader = new StreamReader (response, Encoding.UTF8);

            Console.WriteLine (reader.ReadToEnd ());
      }

      public void Login (string login, string passwd)
      {
            FormClient client = new FormClient (cookies);
            client.SuppressCookiePath = true;
            client.Add ("finish", String.Empty);
            client.Add ("check_cookies", String.Empty);
            client.Add ("login", login);
            client.Add ("password", passwd);

            Stream response = client.Submit (AuthUrl).GetResponseStream ();
            StreamReader reader = new StreamReader (response, Encoding.UTF8);
            
            Console.WriteLine (reader.ReadToEnd ());

            this.login = login;
            this.passwd = passwd;
      }

      public FotkiRemote ()
      {
             //FIXME this api is lame
            cookies = new CookieContainer ();
            cookies.Add (new Cookie ("c", "1"));
      }
}

Generated by  Doxygen 1.6.0   Back to index