f-spot r4203 - in trunk/dpap-sharp: . dpap-client dpap-server lib



Author: apart
Date: Wed Jul 23 19:23:19 2008
New Revision: 4203
URL: http://svn.gnome.org/viewvc/f-spot?rev=4203&view=rev

Log:
Photo streaming work, to accomodate iPhoto 5.0


Modified:
   trunk/dpap-sharp/ChangeLog
   trunk/dpap-sharp/dpap-client/dpap-client.mdp
   trunk/dpap-sharp/dpap-server/Main.cs
   trunk/dpap-sharp/dpap-server/dpap-server.mdp
   trunk/dpap-sharp/lib/Database.cs
   trunk/dpap-sharp/lib/Photo.cs
   trunk/dpap-sharp/lib/Server.cs

Modified: trunk/dpap-sharp/dpap-client/dpap-client.mdp
==============================================================================
--- trunk/dpap-sharp/dpap-client/dpap-client.mdp	(original)
+++ trunk/dpap-sharp/dpap-client/dpap-client.mdp	Wed Jul 23 19:23:19 2008
@@ -25,4 +25,4 @@
     <ProjectReference type="Gac" localcopy="True" refto="Banshee.Services, Version=1.0.0.38868, Culture=neutral" />
     <ProjectReference type="Project" localcopy="True" refto="dpap-sharp" />
   </References>
-</Project>
+</Project>
\ No newline at end of file

Modified: trunk/dpap-sharp/dpap-server/Main.cs
==============================================================================
--- trunk/dpap-sharp/dpap-server/Main.cs	(original)
+++ trunk/dpap-sharp/dpap-server/Main.cs	Wed Jul 23 19:23:19 2008
@@ -3,10 +3,8 @@
 //
 // Authors:
 //   Andrzej Wytyczak-Partyka <iapart gmail com>
-//   James Willcox <snorp snorp net>
 //
 // Copyright (C) 2008 Andrzej Wytyczak-Partyka
-// Copyright (C) 2005  James Willcox <snorp snorp net>
 //
 // This program is free software; you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
@@ -60,13 +58,22 @@
 			};
             
 			Photo p = new Photo();
-			p.FileName = "/home/andrzej/Obrazy/tesco_droid.jpg";
+			p.FileName = "./podeszczu.jpg";
 			p.Title = "test";
 			p.Format = "JPEG";
 			p.Size = 13946;
 			database.AddPhoto(p);
+			
+			Photo p1 = new Photo();
+			p1.FileName = "./Grill.jpg";
+			p1.Title = "grill";
+			p1.Format = "JPEG";
+			p1.Size = 35209;
+			database.AddPhoto(p1);
+		
 			Album a = new Album("test album");
-			a.AddPhoto(p);			
+			a.AddPhoto(p);		
+			a.AddPhoto(p1);
 			database.AddAlbum(a);
 			Console.WriteLine("Album count is now " + database.Albums.Count);
 			Console.WriteLine("Photo name is " + database.Photos[0].FileName);

Modified: trunk/dpap-sharp/dpap-server/dpap-server.mdp
==============================================================================
--- trunk/dpap-sharp/dpap-server/dpap-server.mdp	(original)
+++ trunk/dpap-sharp/dpap-server/dpap-server.mdp	Wed Jul 23 19:23:19 2008
@@ -25,4 +25,4 @@
     <ProjectReference type="Gac" localcopy="True" refto="Banshee.Services, Version=1.0.0.38868, Culture=neutral" />
     <ProjectReference type="Project" localcopy="True" refto="dpap-sharp" />
   </References>
-</Project>
+</Project>
\ No newline at end of file

Modified: trunk/dpap-sharp/lib/Database.cs
==============================================================================
--- trunk/dpap-sharp/lib/Database.cs	(original)
+++ trunk/dpap-sharp/lib/Database.cs	Wed Jul 23 19:23:19 2008
@@ -270,16 +270,19 @@
             
             ContentNode albumsNode = ContentParser.Parse (client.Bag, albumsData);
 			// DEBUG data			
-			//albumsNode.Dump();
-            if (IsUpdateResponse (albumsNode))
-                return;
+			albumsNode.Dump();
+			Console.WriteLine("after dump!");
+			
+ //           if (IsUpdateResponse (albumsNode))
+ //               return;
 
             // handle album additions/changes
             ArrayList plids = new ArrayList ();
             
             foreach (ContentNode albumNode in (ContentNode[]) albumsNode.GetChild ("dmap.listing").Value) {
                 Album pl = Album.FromNode (albumNode);
-
+				// DEBUG
+				Console.WriteLine("foreach loop");
                 if (pl != null) {
                     plids.Add (pl.Id);
                     Album existing = LookupAlbumById (pl.Id);
@@ -291,7 +294,8 @@
                     }
                 }
             }
-
+			// DEBUG
+			Console.WriteLine("delete albums that don't exist");
             // delete albums that no longer exist
             foreach (Album pl in new List<Album> (albums)) {
                 if (!plids.Contains (pl.Id)) {
@@ -300,7 +304,8 @@
             }
 
             plids = null;
-
+			// DEBUG
+			Console.WriteLine("Add/remove photos in the albums");
             // add/remove photos in the albums
             foreach (Album pl in albums) {
                 byte[] albumPhotosData = client.Fetcher.Fetch (String.Format ("/databases/{0}/containers/{1}/items",

Modified: trunk/dpap-sharp/lib/Photo.cs
==============================================================================
--- trunk/dpap-sharp/lib/Photo.cs	(original)
+++ trunk/dpap-sharp/lib/Photo.cs	Wed Jul 23 19:23:19 2008
@@ -177,12 +177,18 @@
             this.id = id;
         }
 		internal ContentNode ToFileData () {
-			return new ContentNode ("dpap.databasesongs",
-			                        new ContentNode ("dmap.status", 200),
-			                        new ContentNode ("dmap.updatetype", (byte) 0),
-			                        new ContentNode ("dmap.specifiedtotalcount",  1),
-			                        new ContentNode ("dmap.returnedcount", 1),
-			                        new ContentNode ("dmap.listing",
+			
+			ArrayList nodes = new ArrayList ();
+			
+			nodes.Add (new ContentNode ("dmap.itemid", id));
+			nodes.Add (new ContentNode ("dpap.filedata",
+			                                             new ContentNode ("dpap.imagefilesize", size),
+			                                             new ContentNode ("dpap.imagefilename", fileName)));
+			return (new ContentNode("dmap.listingitem", nodes));
+			
+			 /*
+			                 
+			                        
 			                                         new ContentNode ("dmap.listingitem",
 			                                                          new ContentNode ("dmap.itemid", id),
 //			                                         new ContentNode ("dmap.persistentid", (long) id),
@@ -191,7 +197,7 @@
 			                                                          new ContentNode ("dpap.filedata",
 			                                                                           new ContentNode ("dpap.imagefilesize", size),
 			                                                                           new ContentNode ("dpap.imagefilename", fileName))))
-			                        );
+			                        );*/
 		}
         internal ContentNode ToNode (string[] fields) {
 

Modified: trunk/dpap-sharp/lib/Server.cs
==============================================================================
--- trunk/dpap-sharp/lib/Server.cs	(original)
+++ trunk/dpap-sharp/lib/Server.cs	Wed Jul 23 19:23:19 2008
@@ -763,18 +763,39 @@
                 ws.WriteResponse (client, node);
             } else if (dbPhotoRegex.IsMatch (photoQuery)) {
 				Console.WriteLine("dbPhotoRegex");
-                Match match = dbPhotoRegex0.Match (path);
-                int dbid = Int32.Parse (match.Groups[1].Value);
-				match = dbPhotoRegex.Match(photoQuery);
-                int photoid = Int32.Parse (match.Groups[1].Value);
-
+				Console.WriteLine("dbItemsRegex, query=" + query["query"] + " meta=" + query["meta"]);
+				string[] photoIds = query["query"].Split (',');
+				Match match = dbPhotoRegex0.Match(path);
+				int dbid = Int32.Parse (match.Groups[1].Value);
+				int photoid = 0;
+				
+		        
+				//match = dbPhotoRegex.Match(photoQuery);
+                
                 Database db = revmgr.GetDatabase (clientRev, dbid);
                 if (db == null) {
                     ws.WriteResponse (client, HttpStatusCode.BadRequest, "invalid database id");
                     return true;
                 }
-
-                Photo photo = db.LookupPhotoById (photoid);
+				ArrayList photoNodes = new ArrayList();
+				Photo photo = db.LookupPhotoById (1);
+				foreach (string photoId in photoIds)
+				{
+					match = dbPhotoRegex.Match (photoId);
+				photoid = Int32.Parse (match.Groups[1].Value);
+					Console.WriteLine("Requested photo id=" + photoid);
+					photo = db.LookupPhotoById (photoid);
+					photoNodes.Add(photo.ToFileData());
+				}
+        
+				ArrayList children = new ArrayList ();
+				children.Add (new ContentNode ("dmap.status", 200));
+				children.Add (new ContentNode ("dmap.updatetype", (byte) 0));
+				children.Add (new ContentNode ("dmap.specifiedtotalcount",  2));
+				children.Add (new ContentNode ("dmap.returnedcount", 2));
+				children.Add (new ContentNode ("dmap.listing", photoNodes));
+				ContentNode dbsongs = new ContentNode ("dpap.databasesongs", children);
+                
 				Console.WriteLine(photo.ToString());
                 if (photo == null) {
                     ws.WriteResponse (client, HttpStatusCode.BadRequest, "invalid photo id");
@@ -791,10 +812,10 @@
                     
                     if (photo.FileName != null) {
 						Console.WriteLine("photo.Filename != null" + query["meta"].Split (',')[0]);
-						ContentNode node = photo.ToFileData();
-						node.Dump();
-						ws.WriteResponse (client, node);
-                        ws.WriteResponseFile (client, photo.FileName, range);
+						//ContentNode node = photo.ToFileData();
+						//node.Dump();
+						ws.WriteResponse (client, dbsongs);
+        //                ws.WriteResponseFile (client, photo.FileName, range);
                     } else if (db.Client != null) {
 						Console.WriteLine("db.Client != null");
                         long photoLength = 0;



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]