<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Recent changes to UserAgents</title><link>https://sourceforge.net/p/coils/wiki/UserAgents/</link><description>Recent changes to UserAgents</description><atom:link href="https://sourceforge.net/p/coils/wiki/UserAgents/feed" rel="self"/><language>en</language><lastBuildDate>Tue, 27 Nov 2012 17:55:55 -0000</lastBuildDate><atom:link href="https://sourceforge.net/p/coils/wiki/UserAgents/feed" rel="self" type="application/rss+xml"/><item><title>WikiPage UserAgents modified by Adam Tauno Williams</title><link>https://sourceforge.net/p/coils/wiki/UserAgents/</link><description>&lt;pre&gt;--- v8
+++ v9
@@ -34,6 +34,7 @@
                          'absoluteHrefs':      False, # Does the client require HREF values to be absolute
                          'portInAbsoluteHref': False, # Does the client recognize port numbers in absolute HREFs
                          'hideLockRoot':       False,
+                         'principalURL':       None,
                          'defaultPropeties':
                              [ ( u'name',             u'DAV:',                           u'webdav', 'D:name' ),
                                ( u'href',             u'DAV:',                           u'webdav', 'D:href' ),
@@ -72,6 +73,11 @@
                        }
        },
 
+The current user agent description is always available via the [Context] object's __user_agent_description__ property.
+
+    self.context.user_agent_description['webdav']['escapeGETs']
+
+
 ###WebDAV Section
 
    - ___defaultPropeties___ : Specifies the properties to include in the response when the client sends an empty (aka default) PROPFIND request
&lt;/pre&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Adam Tauno Williams</dc:creator><pubDate>Tue, 27 Nov 2012 17:55:55 -0000</pubDate><guid>https://sourceforge.net91cc1964a59be9fab8b61612e59eb9f944388dc2</guid></item><item><title>WikiPage UserAgents modified by Adam Tauno Williams</title><link>https://sourceforge.net/p/coils/wiki/UserAgents/</link><description>&lt;pre&gt;--- v7
+++ v8
@@ -75,14 +75,18 @@
 ###WebDAV Section
 
    - ___defaultPropeties___ : Specifies the properties to include in the response when the client sends an empty (aka default) PROPFIND request
-   - ___setCoilsTypeInAdr___ :
-   - ___adrTypeMap___ :
 
 ### JSON-RPC Section
 
 ### XML-RPC Section
 
+   - ___allowNone___ : Set to True if the client understands XML-RPC NULL values.  By default this is ___disabled___.  NULL support is ___not___ part of the XML-RPC specification.  But there is a common extension that adds NULL support to XML-RPC, this is referred to as the ["nil extension"](http://ontosys.com/xml-rpc/extensions.php)
+
 ### VCard Section
+
+   - ___telTypeMap___ :
+   - ___setCoilsTypeInAdr___ :
+   - ___adrTypeMap___ :
 
 ### iCalendar Section
 
&lt;/pre&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Adam Tauno Williams</dc:creator><pubDate>Mon, 26 Nov 2012 14:41:54 -0000</pubDate><guid>https://sourceforge.net2b366ecb636fd5f75fbd88e3bb494f2c491e5940</guid></item><item><title>WikiPage UserAgents modified by Adam Tauno Williams</title><link>https://sourceforge.net/p/coils/wiki/UserAgents/</link><description>&lt;pre&gt;--- v6
+++ v7
@@ -75,8 +75,8 @@
 ###WebDAV Section
 
    - ___defaultPropeties___ : Specifies the properties to include in the response when the client sends an empty (aka default) PROPFIND request
-   - ___setCoilsTypeInAdr___
-   - ___adrTypeMap___
+   - ___setCoilsTypeInAdr___ :
+   - ___adrTypeMap___ :
 
 ### JSON-RPC Section
 
&lt;/pre&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Adam Tauno Williams</dc:creator><pubDate>Mon, 26 Nov 2012 14:37:54 -0000</pubDate><guid>https://sourceforge.net5d0d9b53fb5333462cceca55f259d6527a393dda</guid></item><item><title>WikiPage UserAgents modified by Adam Tauno Williams</title><link>https://sourceforge.net/p/coils/wiki/UserAgents/</link><description>&lt;pre&gt;--- v5
+++ v6
@@ -74,7 +74,9 @@
 
 ###WebDAV Section
 
-   - defaultPropeties : Specifies the properties to include in the response when the client sends an empty [aka default] PROPFIND request
+   - ___defaultPropeties___ : Specifies the properties to include in the response when the client sends an empty (aka default) PROPFIND request
+   - ___setCoilsTypeInAdr___
+   - ___adrTypeMap___
 
 ### JSON-RPC Section
 
@@ -84,4 +86,8 @@
 
 ### iCalendar Section
 
+   - ___includeAttachments___
+
 ### Omphalos Section
+
+   - ___associativeLists___
&lt;/pre&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Adam Tauno Williams</dc:creator><pubDate>Mon, 26 Nov 2012 14:37:29 -0000</pubDate><guid>https://sourceforge.net86c89e00a50daf428220e889ba76a11664ef909a</guid></item><item><title>WikiPage UserAgents modified by Adam Tauno Williams</title><link>https://sourceforge.net/p/coils/wiki/UserAgents/</link><description>&lt;pre&gt;--- v4
+++ v5
@@ -1,4 +1,4 @@
-[Clients] [WebDAV Implementation Notes](developerWiki:WebDAV)
+[Clients] [WebDAV Implementation Notes](wiki:WebDAV)
 
 #User Agents
 
&lt;/pre&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Adam Tauno Williams</dc:creator><pubDate>Mon, 26 Nov 2012 12:04:29 -0000</pubDate><guid>https://sourceforge.net3d9127f031b42a11d2a2b52ffafa2712dacf7e52</guid></item><item><title>WikiPage UserAgents modified by Adam Tauno Williams</title><link>https://sourceforge.net/p/coils/wiki/UserAgents/</link><description>&lt;pre&gt;--- v3
+++ v4
@@ -1,4 +1,4 @@
-[Clients] [WebDAV Implementation Notes](WebDAV)
+[Clients] [WebDAV Implementation Notes](developerWiki:WebDAV)
 
 #User Agents
 
&lt;/pre&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Adam Tauno Williams</dc:creator><pubDate>Mon, 26 Nov 2012 12:04:03 -0000</pubDate><guid>https://sourceforge.net4088b75fb3a87c3719dff66c152ec2b36eebcc3b</guid></item><item><title>WikiPage UserAgents modified by Adam Tauno Williams</title><link>https://sourceforge.net/p/coils/wiki/UserAgents/</link><description>&lt;pre&gt;--- v2
+++ v3
@@ -1,3 +1,5 @@
+[Clients] [WebDAV Implementation Notes](WebDAV)
+
 #User Agents
 
 Most of the time different clients can be automatically recognized by some type of User-Agent string in their requests.  
&lt;/pre&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Adam Tauno Williams</dc:creator><pubDate>Mon, 26 Nov 2012 12:03:24 -0000</pubDate><guid>https://sourceforge.net7deaf5d6801ef3657bb1f610018c7ac8294df8d4</guid></item><item><title>WikiPage UserAgents modified by Adam Tauno Williams</title><link>https://sourceforge.net/p/coils/wiki/UserAgents/</link><description>&lt;pre&gt;--- v1
+++ v2
@@ -1,4 +1,4 @@
-#User Agents# 
+#User Agents
 
 Most of the time different clients can be automatically recognized by some type of User-Agent string in their requests.  
 
@@ -9,7 +9,7 @@
 
 Each specification is a dictionary that describes the capacities, and most importantly the known ___bugs___, of a specific client.  Specifications all start with the __default__ client description and then that description is then patched with the description of the specific client - this eliminates a lot of duplicate and boiler-plate content from the user agent descriptions.
 
-##Descriptions##
+##Descriptions
 
 The default description
 
@@ -69,3 +69,17 @@
          'omphalos':   { 'associativeLists': False, # Use associate lists in Omphalos responses
                        }
        },
+
+###WebDAV Section
+
+   - defaultPropeties : Specifies the properties to include in the response when the client sends an empty [aka default] PROPFIND request
+
+### JSON-RPC Section
+
+### XML-RPC Section
+
+### VCard Section
+
+### iCalendar Section
+
+### Omphalos Section
&lt;/pre&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Adam Tauno Williams</dc:creator><pubDate>Mon, 26 Nov 2012 11:32:32 -0000</pubDate><guid>https://sourceforge.neta435ee55071b0c8e2b784d2d955f2900576ecc07</guid></item><item><title>WikiPage UserAgents modified by Adam Tauno Williams</title><link>https://sourceforge.net/p/coils/wiki/UserAgents/</link><description>#User Agents# 

Most of the time different clients can be automatically recognized by some type of User-Agent string in their requests.  

When a request is received the user's agent (application) is matched to a user agent description (defined in coils.core.useragents) using the __lookup_user_agent__ method.

    from coils.core.useragents import lookup_user_agent
    spec = lookup_user_agent('CardDAV-Sync (Android) (like iOS/5.0.1 (9A405) dataaccessd/1.0) gzip')

Each specification is a dictionary that describes the capacities, and most importantly the known ___bugs___, of a specific client.  Specifications all start with the __default__ client description and then that description is then patched with the description of the specific client - this eliminates a lot of duplicate and boiler-plate content from the user agent descriptions.

##Descriptions##

The default description

    '148c9d0d669648ed8b8ed0292df478fd':
       { 'name':      'default',
         'patterns':   [],
         'webdav':     { 'filenameAsDisplayName': False,  # Use the filename as the display name, for clients that confuse the two
                         'showProjectContactsFolder': True, # Enable/Disable showing the Contacts folder in a Project folder
                         'showProjectEnterprisesFolder': True, # Enable/Disable showing the Enterprise folder in a Project folder
                         'showProjectTasksFolder': True, # Enable/Disable showing the Tasks folder in a Project folder
                         'showProjectProjectsFolder': True, # Enable/Disable showing the Projects (sub-projects) folder in a Project folder
                         'showProjectDocumentsFolder': True, # Enable/Disable showing the Documents folder in a Project folder
                         'showProjectNotesFolder': True, # Enable/Disable showing the Notes folder in a Project folder
                         'showProjectVersionsFolder': False, # Enable/Disable showing the Versions folder in a Project folder
                         'folderContentType': 'unix/httpd-directory', # Mime-type for a collection/folder
                         'escapeGETs':         False,
                         'supports301':        True, # Does the client respond correctly to 301 responses
                         'supportsLocation':   True, # Does the client respond correct to Location: headers
                         'supportsMEMOs':      False, # Does the client properly handle Memo (VJOURNAL) objects
                         'absoluteHrefs':      False, # Does the client require HREF values to be absolute
                         'portInAbsoluteHref': False, # Does the client recognize port numbers in absolute HREFs
                         'hideLockRoot':       False,
                         'defaultPropeties':
                             [ ( u'name',             u'DAV:',                           u'webdav', 'D:name' ),
                               ( u'href',             u'DAV:',                           u'webdav', 'D:href' ),
                               ( u'getcontenttype',   u'DAV:',                           u'webdav', 'D:getcontenttype' ),
                               ( u'contentclass',     u'DAV:',                           u'webdav', 'D:contentclass' ),
                               ( u'getlastmodified',  u'DAV:',                           u'webdav', 'D:getlastmodified' ),
                               ( u'getcontentlength', u'DAV:',                           u'webdav', 'D:getcontentlength' ),
                               ( u'iscollection',     u'DAV:',                           u'webdav', 'D:iscollection' ),
                               ( u'displayname',      u'DAV:',                           u'webdav', 'D:displayname' ),
                               ( u'getctag',          u'urn:ietf:params:xml:ns:caldav', u'caldav', 'C:getctag' ),
                               ( u'resourcetype',     u'DAV:',                           u'webdav', 'D:resourcetype' ) ],
                        'defaultNamespaces': { 'C': 'urn:ietf:params:xml:ns:caldav',
                                               'D': 'DAV:',
                                               'G': 'http://groupdav.org/' } },
         'jsonrpc':    { },
         'xmlrpc':     { 'allowNone': False, },
         'vcard':       { 'setVoiceAttrInTel': True,
                          'setCoilsTypeInTel': True,
                          'telTypeMap': { '10_fax':         { 'types': ['fax','work'],    'voice': False  },
                                          '01_tel':         { 'types': ['work', 'pref' ], 'voice': True   },
                                          '03_tel_funk':    { 'types': ['cell'],          'voice': True   },
                                          '05_tel_private': { 'types': ['home'],          'voice': True,  },
                                          '30_pager':       { 'types': [ 'pager' ],       'voice': False  } },
                          'setCoilsTypeInAdr': True, # Encode the OGo address type in VCARD ADR properties
                          'adrTypeMap': { 'private':        { 'types': [ 'home' ] },
                                          'mailing':        { 'types': [ 'work', 'pref' ] },
                                          'bill':           { 'types': [ 'work', 'pref' ] },
                                          'shipto':         { 'types': [ 'work' ] } },
                          'includeObjectPropertes': False, # Encode the OGo object properties in VCARDs
                          'includeCoilsXAttributes': False, # Encode the OGo company values in VCARDs
                          'includeCompanyValues': False, # Encode the OGo company values in VCARDs
                        }, 
         'icalendar':  { 'includeAttachments': False,  # includeAttachments: False, inline, link
                       }, 
         'omphalos':   { 'associativeLists': False, # Use associate lists in Omphalos responses
                       }
       },</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Adam Tauno Williams</dc:creator><pubDate>Mon, 26 Nov 2012 11:30:11 -0000</pubDate><guid>https://sourceforge.neta6b4ee8d89c6f838316ddcee13ae02c52ae9196a</guid></item></channel></rss>