1. Overview
----------------
   This package consists of the dpap-sharp library and two f-spot addins (DPAPService and DPAPBrowser) that provide the interface for dpap-sharp's server and client capabilities.

2. Protocol
-----------------
   The DPAP protocol is very similar to DAAP as both inherit from DMAP. Since it's a proprietary protocol some of the information provided here may be incorrect as they are based on reverse engineering.

   The DPAP protocol runs over HTTP and issuing standard HTTP/1.1 GET commands to the DPAP server in a telnet session allows one to test the protocols behaviour.

   An important concept of DPAP (and DAAP and DMAP) are the content-codes. In response to the GET /content-codes request the server returns a list of content-codes that contains the code (which is usually a 4 character ascii string, i.e. aply), it's full name (i.e. dpap.albums) and type (i.e. container). Issuing a GET /content-codes command by the client is an important part of the DPAP session - if skipped or not done correctly the client won't be able to parse the server's responses. It happens that the content-codes returned by the server are screwed up and they have to be fixed manually. That is the case for iPhoto '08 which returns a wrong content type for dpap.databasecontainers (aply) and we have to manually set that to ContentType.Container.

3. Library
----------------
   The library consists of the client (Client.cs), the server (Server.cs) and the common code shared among the two (Database.cs, Photo.cs, etc.).


4. Add-ins
----------------

  4.1 Server
  ----------
    The server add-in is a /FSpot/Services extension which instantiates the server code in the library. It advertises itself using Mono.Zeroconf in the .local domain. Currently a default album is created and all the pictures from f-spot's database that are tagged 'Shared items' are placed in that album and therefore can be seen over the network. 

  4.2 Client
  ----------
    The client add-in lives as a sidebar extension and provides a 'Shared items' entry in the sidebar's menu. It discovers and lists the DPAP shares advertised in the .local domain. After selecting a certain share it connects to the specified server and downloads the list of albums. Selecting a certain album opens up a f-spot --view window in the folder with downloaded thumbnails for that album.

5. Known Issues
----------------
* All thumbnails are downloaded at once which will make the UI unresponsive - should be moved to a thread.
* The thumbnails are viewed as normal files, after downloading them into  ~/.cache/DPAP. There's no way to go from browsing thumbnails to browsing hi-res photos.
* The database update mechanism is not working.
* After installing the DPAPService addin a tag called 'Shared items' has to be created and appropriate photos should be tagged with it.


6. Further reading
------------------
* A very good resource on the DAAP protocol (which can give an idea about DPAP) http://www.tapjam.net/daap/

