This document lists the changes in the different releases
1.2.1.0
- Features
- Added media:rating to media:group
- Added the most-popular constants to the defined youtube
queries
- Added missing convienience classes to YouTube (Comments,
Complaints etc, check the YouTube documentation)
- Added PDF support to the Google Documents API
- Added a CategoryQueriesAsParameter property on the feedquery
class, and making that false by default. On the YouTubeQuery this
is true by default. The effect is that category queries will not
be created by extending/changing the path portion of the URL, but
instead using a new parameter "category" and putting the
categories comma delimited into the query part of the uri.
- Bugfixes
- Fixed issue 135. There was a bug in the FeedQuery parsing
code that resulted in URIs with date parameters that are encoded
to potentially throw
- Removed the Cookie property and replaced it with a Cookies
properter on the RequestFactory. The old code, using just a simple
string, was implemented for mobile benefits, as the
CookieContainer, that is used now, does not exist on the compact
framework. The simple solution though is creating problems in some
scenarios, and had to be removed.
- Added over 100 more unittests for the YouTube service
- Fixed issue 102, 142
1.2.0.0
- Features
-
Added support for the gd:rating element
- Added direct properties for Url, Height, Width for the
MediaThumbnail
-
Added support for mediarss:category as a childcollection of
media:group
-
Created a real app:control extension. This one is currently only
used in the YouTube namespace.
-
Added support for YouTube
- Added support for Google Health
- Added HealthTool in the samples directory as a supporting
tool for Google Health
-
Added support for the timeout property of the http request. You do
this by setting tbe timeout on the GDataRequestFactory to something
else than -1, which indicates the default of the created HTTPRequest
object.
- Added support for the new Contacts feed.
- ContactEntry now has a collection of ExtendedProperties
- ContactEntry now has a collection of GroupMemberships
- The ContactsQuery.CreateContactsUri returns a FULL
projection now by default. There is a new
CreateContactsUri(user,projection) to get the old behaviour,
or get other projections
- There is a new ContactsQuery.CreateGroupsUri helper
- ContactsQuery now supports the group parameter
- Bugfixes/Changes
- It a text element is of type XHTML we now use the
XmlWriter.WriteRaw method. This leaves encoding/decoding in the hands
of the user of the API, but it seems to be the only way to guarantee
that all kind of xhtml can be created.
- Changed the way AtomUris are loaded. In the past they were, for
readability reasons, decoded on the load. This caused issue in
certain situations, where the server expected the encoded version to
be exactly the same later on. For that reason, AtomUris are now not
decoded/encoded automatically, but this is left to the programmer.
-
Changed the Service.StreamInsert to a more appropriate name. It is
now called Service.EntrySend and virtual
-
Added a MediaService subclass that is going to be used for all
media/mime multipart enabled services (YouTube, Picasa)
- Fixed a memory leak related to the embedded gzip stream
- Fixed a parsing bug in the AtomLink class
- Fixed the build script for building ASP dlls. A corruption in
the solution file resulted in those not being rebuild anymore since
1.1.3.1
-
Fixed issue 120: cellQuery range and return-empty problem on empty
cells. Created a set of new helpers on the feedQuery object that
solve that issue.
- Fixed another round of FxCop violations. Where this has an external
effect, this is noted below.
- Changed Apps.IpWhiteListed to Apps.IPWhiteListed
-
Service.SetAuthenticationToken will now work for ClientLogin and
AuthSub
-
The PhotoBrowser sample application will no longer crash when photos
can not be retrieved, or when you cancel the login screen.
1.1.4.1
- Features
- Added PrimaryEmail, PrimaryPostalAddress, PrimaryPhonenumber
and PrimaryIMAddress to the ContactEntry as convienience
accessors
- Bugfixes
- Added the Recurrence class as an extension element back to the
EventEntry
- Fixed the setup to put the contacts.cs file into the correct
place, so that the SDK solution file would work
- Removed the default app.ico files from the sample solutions
- Corrected a reference in the apps migration sample project
- The setup program did not put the Access Control Extension into
the correct place, so some references might have been wrong
- Fixed a bug in FeedQuery that would error if no uri was
precalculated
1.1.4.0
- Features
- Moved the codebase to .NET 2.0. Note this means that gradually more
code will change to use generics and other .NET 2.0 only features.
- Added project templates for VS 2005 that are installed by the
setup program. If you use the .zip download, copy the templates into
the VS 2005 template folder
- The setup program now points VS 2005 to the lib/release path
for the Google DLLs. The DLLs are no longer installed in the
GAC
- Implemented IComparable and equal operators for AtomId
- Google Contacts support
-
Added a GDataVersionConflictException that is thrown when you tried
to modified/update a resource and the server detected a version
conflict.
-
Added support for the hd parameter for AuthSubRequests, so that a
particular domain can be specified.
-
Added support for a UseSSL property on the FeedQuery class. If set,
requests are made against the https version of the feed, if
available. This is mostly relevant for hosted domains.
- Added a UriEncodeUnsafe to the Utilities class to help with
encoding of user emails during the URL construction
- Added new VS 2005 solution files for all targets for the contacts library.
- Bugfixes/changes
- Changed a lot of codeplaces due to a new FxCop run. Where this
has a public, visible effect, it is noted below:
- removed the setter for CustomHeaders,
Google.GData.Client.GDataRequestFactory.CustomHeaders
- Updated to VS 2005 solution files. VS 2003 files are removed.
- Changed documentation build to January Sandcastle release
- Entry.SetAlternateUri was not setting the correct link
releationship and mediatype.
-
small bugfixes to the base code (exceptions sometimes on missing attributes)
- Fixed a number of bugs in the calendar extension classes that
occured if you set new objects into the accessors
- Fixed a crashing bug in the equal operator of the EnumConstruct
class
- Fixed issue 105: Cannot add a reminder in a Recurring event using C# Calendar library
- The Reminders property is now a typed generic collection
1.1.3.0
- Features
- Added conditional Get support. The service object has an overloaded Query method now,
that allows you to pass a ifModifiedSince DateTime object into it.s
- Added Authsub token revocation support. There is a new method
revokeToken in AuthsubUtil, similiar to the java class library
- Bugfixes/changes
- Issue 93: ReFixed Title Exact Queries for Spreadsheets. Using
Title-Exact resulted in two question marks in the query string.
- Fixed the GeoRSS where extension, which lived in a mistyped namespace.
- Fixed the Latitude property, which was misspelled Lattitude
- Added the Doclist assemblies to the setup program
s
- Added MediaGroup.Contents as a Collection: as there
could be more than one. So all previous usages should be changed
to access the first element in a collection. The old method will remain
in there.
1.1.2.0
- Features
- The SpreadsheetEntry has a new property, Worksheets. This
property returns a WorksheetFeed object that can be used to
retrieve the Worksheets feed for a given Spreadsheet.
- The SpreadsheetEntry has a new property, WorksheetsLink. This
property returns a string that can be used to retrieve the
Worksheets feed uri for a given Spreadsheet.
- Added CreateBatchFeed to the Atomfeed object. This will create
a default batch feed for you, if the feed supports batching. The
created batch feed will contain all currently dirty entries.
- Added a GDataBatchRequestException for that operation.
- Added Delete(Uri uir) to the service interface.
- Added more constructors to the CellEntry object, and moved
accessors for the CellEntry.Cell up to the CellEntry object. So
instead of writing CellEntry.Cell.Column, you can call
CellEntry.Column directly (and others).
- Added an index accessor to the CellFeed, you can now access
Cells on the CellFeed like this: CellEntry entry = CellFeed[1,1].
This will retrieve not existing cells if needed.
- Added QueryCellFeed() and QueryCellFeedLink(ReturnEmptyCells
parameter) to the WorksheetEntry. The method with no parameters will
get you the serverdefault cell feed.
- Added the CellFeedLink property on the WorksheetEntry. This
returns the URI to the CellFeed as string.
- Added an overloaded Insert method to the WorksheetFeed so that
you do not need to cast the return anymore.
- Added support for the Apps Migration API. The Google Apps Email Migration API
allows administrators and users of Google Apps to migrate mail from legacy
email systems into their domain's hosted Gmail accounts.
Your client application can upload email messages into these
accounts using standard Google data API feeds.
- Added the gapps_migration_sample: A simple application that demonstrates how to migrate
email messages to a Google Apps email account. See the readme file in the
samples/appsforyourdomain/migration directory for more details
- Bugfixes/changes
- When an entry was copied from one feed to another, the internal
service object was set incorrectly.
- Added unittests for the new spreadsheet code.
- Issue 90: Corrected the override for Equals and GetHashCode for an EnumConstruct
- Issue 93: Fixed Title Exact Queries for Spreadsheets
- Issue 94: Fixed some incorrect Exception handlings
1.1.1.0
- Features
- Added an EventId property to the EventEntry object. This one
parses the atomId URI to just provided the EventId, which is used
elsewhere (e.g., for recurring events).
- Added QueryAuthToken() on the service. If the Service is a
Google authenticated service, you can use this to obtain an
authentication token for ClientLogin
- Added CreatePicasaUri helper on the PicasaQuery classes to
create a Uri based on a userID
- Added new PhotoBrowser sample project. The resulting file PhotoTool.exe is produced
using the ILMerge tool from Microsoft (free download). That way, PhotoTool.exe is
a standalone application with no further assembly dependencies.
- Bugfixes/Changes
- Fixed the parsing of the OriginalEvent@id attribute. The
SimpleContainer parent class was broken in the sense that it did not
call the generic parsing method at all. So all SimpleContainers
would not have read in attributes, luckily OriginalEvent was the
only instance of this.
- Fixed the OriginalStartTime get/set method which was using the
wrong constant of the OriginalEvent object.
- Fixed the onclear() handler of the new extensionCollection base
class. It was incorrectly casting to When obects, which could cause
a runtime error when called.
- Fixed a bug in the simplecontainer class that could lead to an
exception if the extension list was empty
- Fixed a bug in Originalevent where the wrong prefix was
persisted, making saving an originalevent impossible
- Fixed NULL response object being used for authentication exceptions.
Now the correct object used for the authentication request is passed
to the exception.
- Changed the AuthException code to provide the status code
detail as well
- CalendarEntry did use the wrong namespace to find the location
object, hence retrieval of a calendar location was broken.
- Fixed ExtensionBase to not save NULL attributes as empty
strings. This could cause Picasa updates to fail.
- Fixed MediaGroup to allow the retrieval of multiple Thumbnails.
Introduced the ThumbnailCollection for this. To enable this,
SimpleContainer and AtomBase now implement IExtensionContainer, a
common interface that encapsulates owning Extension elements.
- Added a default constructor to CalendarQuery so that you can
use it on .NET CF with a starting URI
- Changed the Reminder element to send an empty one to enable
creation of default Reminders in the calendar
1.1.0.0
- Features
-
added GZip support for .NET 1.1, 2.0 and .NET Compact Framework 2.0.
-
added the ability to use authsubtokens to the ExecRequest utility (including
exchange of a onetime token to a session token). Just run ExecRequest for the
command line parameters, or read the help file page about it.
-
Support for Google Calendar WebContent Gadgets is included. A WebContent element
has a SortedList property to set and retrieve those preferences. See caltest.cs
for an example.
-
Picasa support:
- Added all media extensions (media:rss, exif and photo>
- Added a PhotoEntry and PhotoFeed class that contain all of
those extensions
- Added unittests to query an album and insert a new photo
- Added the QuickAdd feature for the Google Calendar. An EventEntry
has a QuickAdd boolean property. Setting it to true causes an insert to
be treated like a quickAdd operation.
- Added the webcontentlink class to the Google Calendar Support to enable
easier creation of Gadgets in calendars.
- Batch support for Google Calendar
- ASP .NET support for medium trust
- Changes and Bugfixes
-
Complete refactoring of Apps extension to use the new extension system
(IExtensionElementFactory, AbstractEntry and AbstractFeed).
-
To enable ASP.NET hosting in medium trust, we removed the usage of the
NetworkCredentials class. From now on, credentials are either passed as username/password,
or using the GDataCredentials. (issue 57)
-
Changed "adminUserName" to "adminEmailAddress" in AppsService so that it's more
clear what information is actually required for this parameter.
-
fixed a Google Base issue (The server doesn't accept scientific notations for
floats)
-
fixed typo in the blogger sample (www..blogger), which made the sample hard to
use
-
make the GAuthToken property of the GAuthRequestFactory public. It was
mistakenly marked internal, so that the token could not be retrieved by a client
application for caching.
-
fixed a parsing issue that resulted in Batch Upload hanging if an unknown
element was encountered
-
added a helper method on AtomBase (entry and feed) to find exensionelements by
specifying a localname and an optional namespace (issue 81)
-
the extension mechanism was reworked by creating an ExtensionElementFactory
interface that takes care of parsing elements. ElementFactories are registered
on the AtomBase (entry and feed) level.
-
Fixed Issue 60, mulitple Reminders per Event. Note, that this introduces slight
changes when dealing with this. A new property, EventEntry.Reminders, was
created. The old property, EventEntry.Reminder, still exists, and only works on
the first Reminder in the list. Setting the old property will delete all
addtional reminders.The Reminders property is of type ArrayList (this is an
artifact of being .NET 1.1 compatible, once we move to .NET 2.0 or later, if
that ever happens, this could/should be typed).
-
Modified data model for Spreadsheets worksheets to make it easier to change and
construct associated meta-data
-
Added the ctz parameter to the EventQuery class. This parameter allows to
specify the timezone that is used to calculate start/end times for the returned
events
-
Added an AlternateUri Property on the AtomEntry class. This property
returns the AtomUri of a rel=alternate type=html LINK entry. As this is
similiar to the ill named LINK helper on the spreadsheet entry, that
helper was removed, as they do serve the same purpose, and the link
helper was read only.
-
Added an FeedUri Property on the AtomEntry class. This property
returns the AtomUri of a rel=#feed type=atom+xml LINK entry.
-
Added an MediaUri Property on the AtomEntry class. This property
returns the AtomUri of a rel=#edit-media type=atom+xml LINK entry.
- Added new methods on the AtomCategory collection. Find searches for a
category of a given term, or a term/scheme combination. Also changed the
implementation of the Contains method to compare not just object
fidelity, but also term/value pairs
- Added a ConvertToXSDSTring() helper in the Utilites class. As booleans
are represented as "True"/"False" in .NET, and xsd requires
"true"/"false" this helper takes care of that conversion.
- Added the ability to create custom AtomBase subclassed objects to
custom feeds/entries. Look at CreateAtomSubElement() in AtomBase. This
is used to create custom clases like WebContentLink in the derived
services
1.0.9.9
-
added GBase support for m:adjusted_name and gm:adjusted_value inside attributes
(returned only when adjustments are enabled)
-
Google Apps changes:
-
Added new AppsService.createUser methods with hashed password support
-
Updated AppsException with new Google Apps error codes
-
Added the following properties to Login.cs: string hashFunctionName
-
to hash user account password, bool agreedToTerms
-
to see if the user has accepted the Google Apps Terms Of Service, bool admin
-
to see if the user is a domain admin, bool changePasswordAtNextLogin
-
to force the user to change password at next login
-
Updated unittests to test new properties
1.0.9.8
-
fixed a parsing bug in SpreadsheetService
-
fixed a bug in GDataRequestException that would prevent AppsException from
accessing the server's response.
-
modified AppsException to comply with new GDataRequestException
-
fixed a bug in CalculateBaseUri, that caused a crash if the passed in parameters
are all NULL. This caused composite feeds to not load if there was a comment
feed embedded
-
fixed a bug in the CalendarEventEntry, it was not parsing extendedProperties.
They are now parsed and added correctly to the ExtensionElements
-
added ACL support. This resulted in changes in the CalendarService.Query method
-
as a CalendarService can now return an EventFeed or an AccessControlFeed is
returns now an AtomFeed that you can cast to what you are expecting. Added Query
overloads to accept EventQuery or AclQuery and return the appropriate Feeds
-
added a cmd line tool to query/insert/update to a service based on streams
-
modified the Spreadsheet service to use the new scheme of service subclassing.
This should fix a bundle of issues with regard to entry castings.
-
changed persistence of gd:extendedProperty to save the value attribute, even if
there is no data to persist
-
Added an ASP.NET release (lib/ASP.NET) where the DLLs are build with the
AllowPartiallyTrustedCallers attribute n enabled. Please use with caution and
refer to the readme.txt in that subdirectory for more information.
1.0.9.7
-
fixed an incorrect trace statement in request.cs that had the result of
disabling reading the error response.
1.0.9.6
-
added Google Apps for Your Domain support, a new helper DLL Google.GData.Apps.dll,
and a sample, as well as unittests. Version number is increased to distinguish
from Subversion, as this will be a binary download as well.
1.0.9.5
-
fix for incorrect encoding of usernames/passwords during authentication (you
could run into problems if you had an email like "foo&joe@test.com"
-
exposure of the accountType as a property on the factory. If you happen to have
an identical user name for a Google account and a hosted account, you need to
set this property depending on which account you want to access. Default is
GOOGLE_OR_HOSTED, other values are GOOGLE or HOSTED as strings.
-
fixed an issue with the edit/self uris on the entry. They were not correctly
setable.
-
fixed an issue that one you used an authenticated service, but did not supply
credentials, we would send an empty authentication header.
-
added Captcha Handling and more detailed exceptions when the authentication
request fails. See authexceptions.cs for the list of potential exceptions thrown
-
added some preliminary unittests for the new exceptions
-
added a new constructor for the TokenCollection, so that captcha parsing is
handled correctly
-
made the debug output depending on the TRACE define, and removed that define for
the release build
1.0.9.4
-
Google Base: fix for incorrect Price attribute behaviour
-
Google Base: fix for incorrectly persisting duplicate attributes
-
Fix for Content.Type having no default value (issue 41)
-
Fix for Content.Type="text/html" parsing incorrectly. The strict check for type=
"text" is now relaxed to be type="text*", so all text subtypes will be treated
the same
-
Fix for Content.Type = "html" and "text/html" persistence. What the code does
now is: first HTMLDecode the value held, than run the standard XMLWriter.WriteString
over it (which does HTML encoding). This seems to work fine.
-
Added the gm:stats tags to the Windows Mobile build, accidently forgot to change
that project file
-
the calendarfeed discarded entries unknown to it in the calendar namespace. This
is fixed now. Unknown entries to the parser are now correctly added to the
extension elements.
-
added the return-empty parameter to the cellquery class
-
added URL encoding to the authentication parameters (username/passwords etc that
had unallowed FORM post chars caused failed login attempts)
1.0.9.3
-
Google Base changes: New features:
-
GBaseQuery supports the following optional parameters; orderby, sortorder,
refine and content
-
Support for gm:stats tags
-
GBaseUriFactory can now generate the feed uri of other customers
Fixes:
-
Fixed the GBaseAttributeType hierarchy for date/dateTime/dateTimeRange
-
Fixed the type of the hardcoded ExpirationDate property in GBaseAttributes
-
Added a Makefile for Mono builds. This one replaces the Ant file.
1.0.9.2
-
Removed the MethodOverride default for the CalendarService. If you need that (due
to firewalls not allowing PUT/DELETE requests, you can reenable this with
setting the MethodOverride flag on the factory: ((GDataGAuthRequestFactory)calsvc.RequestFactory).MethodOverride
= false;
-
Changed the X-Method-Override behaviour for DELETE, to fix an issue with .NET
mobile (the mobile client would crash when the contentLength was set to 0 and no
stream was requested).
1.0.9.1
Added a KeepAlive property to the factory object. This is set to true by default.
.NET 2.0 clients, are due to behaviour changes in that runtime encouraged to set
this to false.
1.0.9
Fixed an issue where the login services changed the response contenttype. The
check for text/plain is now more relaxed.
Added the missing location calls for Geolocation for GoogleBase
Fixed a build issue for Windows Mobile in release. The code now compiles for
PocketPC and WindowsMobile symbols defined.
1.0.8
Fixed issue 13 from the public issue list. If a content element contained xhtml,
and not just text, the content was not read correctly.
Fixed issue 17 from the public issue list. XHTML content was not persisted
correctly.
Added support for hosted domain feeds. This is done automatically, no
codechanges needed for the application developer. The authentication code was
changed to ask for Hosted domains first, then google accounts.
Added support for the app:control/app:draft element, but only in the way to
expose a boolean on the AtomEntry. The new member on AtomEntry is called IsDraft.
Changed the way atom:content is parsed. Text & HTML types use xmlreader.ReadString()
to get the inner content. XHTML and all other types use readInnerXml() to get
the content.
changed Exception handling. The code now throws more detailed exceptions based
on what was happening: -> GDataRequestException: generic exception ->
GDataForbiddenException: exception thrown when the server return a Forbidden on
authentication -> GDataRedirectException: exception thrown when the server
returned a redirect
changed redirect handling on Post. The library will follow redirects on Post
automatically by default, to accomodate Blogger (which currently may return 302s
on posts). This can be turned off by setting the .StrictRedirect property to
true on the GDataAuthRequestFactory. If it is turned off, the code will throw if
a redirect is happening on an HTTP verb other than GET.
changed redirect handling for DELETE/PUT the same as for POST
removed cookie handling. The code will handle cookies now without using the
CookieContainer (one hurdle on the way to the CompactFramework Port).
Fixed persistence of "initialized" date values for udpated/published on the atom.entry.
This resolves an issue with the Blogger.
Added EventEntry.Notifications. This property (boolean) indicates if an update
on an entry should send notifications to the attendees of the Event.
Fixed the gbase project (the NumberFormat.cs file was missing in the project
file).
Added a proxy property for the GDataRequestFactory.
Setting content-length correctly to fix WindowsMobile issues. This fix is a user
submitted, and created by Steeve Morin
Fixes to the authsub code, provided by Ryan Boyd
The DLLs were renamed, to follow the Windows .NET standard. gdata.dll ->
Google.GData.Client.dll gbase.dll -> Google.GData.GoogleBase.dll
gcalendar.dll -> Google.GData.Calendar.dll gcodesearch.dll -> Google.GData.CodeSearch.dll
gextensions.dll -> Google.GData.Extensions.dll and the new one ->
Google.GData.Spreadsheets.dll
1.0.7
Added support for published-min/published-max as standard query parameters
Added support for codesearch. A new DLL gcodesearch.dll and a new sample for
this is available.
Added support for the WebContent calendar extension
Added signing to the gbase.dll
1.0.6
Added support for sortoder, futurevents, singleevents on the calendarquery
Added a ResponseString property on the GDataRequestException to make debugging
server side errors easier
Fixed an issue with the GoogleBaseService, if you did set the RequestFactory
property twice, you would create too many header entries, and hence end up with
request denied responses
Added the shipping attribute for GoogleBase
Changed the payment attribute to payment_accepted for GoogleBase
1.0.5
Added batch support for GoogleFeeds, the first property to support this is the
GoogleBase product
Added a unittest for GoogleBase. This code shows update/insert/delete against
base for single entries and batch entries refer to clients/cs/src/unittests/gbase.cs
for sample code.
Added IComparable to atomuri.cs (based on a feature request on our issue list)
GDataAuthRequestFactory is now a subclass of GDataRequestFactory
Moved GCookies from GDataAuthRequestFactory to GDataRequestFactory and renamed
it to Cookies
removed the debug binaries from the lib directory
added a GoogleBase sample application in VB !
added the build executables to the lib directory
added GoogleBase classes (similiar to the java classes) to access Google base
specific feeds
Known issues:
recurrenceException is not fully tested
authsubutil and gauthsubrequest are not fully tested
1.0.4
Fixed a .NET 2.0 issue in calendarservice.cs, that dropped connections during
repeated calls.
Made the execution path more robust.
Added a property, numberOfRetries on the GAuthRequestFactory to indicate how
often an Execution should be retried if the server returns an error.
Fixed a bug in the daterange query creation (the +sign for the timezone was not
escaped properly)
Fixed an issue with updating, where if you used the same AtomEntry/EventEntry
several times to update, it could happen that extension elements were doubled,
and the update failed.
Fixed a bug in the parsing of all elements. This could cause an endless loop
when the content was empty.
Fixed several content creation issues (issues 5-9 on the issue list)
added support for the gd:extendedProperty
Added a calendar example application
added a sample application to access Blogger feeds, and post to blogger feeds.
Known issues:
recurrenceException is not fully tested
authsubutil and gauthsubrequest are not fully tested Solved issues:
.NET 2.0 seems to loose resources in some circumstances. Hard to reproduce.
1.0.3
Fixed the namespace creation for extensions, the wireformat should no longer
create the namespace declaration when it's not required
Fixed the reminder persistence code
added a TimeZone property on the EventFeed to retrieve the timezone value
added a FindEvent method on the EventFeed. This one takes an OriginalEvent
object, and returns the Event that this is based on. This will go to the server
if required.
Fixed recurrance issues in the extensions
Moved EventFeed and EventEntry from the Google.GData.Extensions namespace to the
Google.GData.Calendar namespace
Fixed a bug in the parsing of Atom:Content elements. This could cause an endless
loop when the content was empty.
1.0.2
Fixed a problem persisting feedlink elements
added an AllDay flag to the When class to allow parsing and persting of all day
events
cleaned up the persistence code in the extension classes
fixed a problem that resulted in persisting multiple extensionn objects instead
of one
added a timestamp method to the Tracing class to help measuring performance in
simple cases
1.0.1
Correctly uses 'rel.previous' instead of 'rel.prev' as required by Atom
Publishing Protocol.
Corrected the time-shift portion of the DateTime output for time zones with a
negative shift from UTC.
Corrected the time-shift to permit fractional hour shifts from UTC.
Correctly output "startTime" and "endTime" as attributes of the "when" extension
rather than child elements.
Refactored class hierarchy, now based on IExtensionElement.
1.0.0
Initial Release