summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAllen Winter <allen.winter@kdab.com>2014-11-11 18:18:35 -0500
committerAllen Winter <allen.winter@kdab.com>2014-11-11 18:18:35 -0500
commit40541fb43b4498979be52833f372fe7b112d3141 (patch)
treeedf21356c4d45b8cedf9795f1ed58f83e50c3333
parent57bdbaa7eef6ebaa18459cb7810a51638269f029 (diff)
downloadlibical-git-40541fb43b4498979be52833f372fe7b112d3141.tar.gz
issue177: CalDAV attachments as in draft-daboo-caldav-attachments
-rw-r--r--ReleaseNotes.txt1
-rw-r--r--design-data/parameters.csv4
-rw-r--r--design-data/params-in-prop.txt2
-rw-r--r--src/test/regression.c37
4 files changed, 43 insertions, 1 deletions
diff --git a/ReleaseNotes.txt b/ReleaseNotes.txt
index f3be1ab7..b43c0f12 100644
--- a/ReleaseNotes.txt
+++ b/ReleaseNotes.txt
@@ -3,6 +3,7 @@ Release Highlights
Version 1.1.0 (not released yet)
* [New] RSCALE support (requires libicu from http://www.icu-project.org)
+ * [New] CalDAV attachment support (draft-daboo-caldav-attachments)
* [Bug] issue83: Incorrect recurrence generation for weekly pattern
Version 1.0.1:
diff --git a/design-data/parameters.csv b/design-data/parameters.csv
index 3a428b70..1a03eb00 100644
--- a/design-data/parameters.csv
+++ b/design-data/parameters.csv
@@ -44,4 +44,8 @@
"PUBLIC-COMMENT","37","const char*",
"RESPONSE","38","int",
"STAY-INFORMED","39","icalparameter_stayinformed","X=20108;TRUE;FALSE;NONE"
+"#Caldav Attachment Parameters","draft-daboo-caldav-attachments"
+"MANAGED-ID","40","const char*",
+"SIZE","41","const char*",
+"FILENAME","42","const char*",
"#NOTE for updaters. Preserve the icalparameter_kind Enum values to aid forward compatibility"
diff --git a/design-data/params-in-prop.txt b/design-data/params-in-prop.txt
index e8fe88f8..2a803218 100644
--- a/design-data/params-in-prop.txt
+++ b/design-data/params-in-prop.txt
@@ -1,6 +1,6 @@
ACKNOWLEDGED X
ACTION VALUE X
-ATTACH FMTTYPE ENCODING VALUE X
+ATTACH FMTTYPE ENCODING VALUE MANAGED-ID SIZE FILENAME X
ATTENDEE CN CUTYPE DELEGATED-FROM DELEGATED-TO DIR LANGUAGE MEMBER PARTSTAT ROLE RSVP SENT-BY SCHEDULE-AGENT SCHEDULE-FORCE-SEND SCHEDULE-STATUS X
CALSCALE X
CATEGORIES LANGUAGE X
diff --git a/src/test/regression.c b/src/test/regression.c
index 968fb1ca..cbe9e5e2 100644
--- a/src/test/regression.c
+++ b/src/test/regression.c
@@ -3567,6 +3567,8 @@ void test_utcoffset()
void test_attach()
{
icalcomponent *c;
+ icalproperty *p;
+ icalparameter *param;
static const char test_icalcomp_str[] =
"BEGIN:VEVENT\n"
@@ -3580,6 +3582,41 @@ void test_attach()
if (VERBOSE && c) printf("%s",icalcomponent_as_ical_string(c));
if (c) icalcomponent_free(c);
+
+ static const char test_icalcomp_str_caldav[] =
+"BEGIN:VEVENT\n"
+"ATTACH;MANAGED-ID=e474a36f22;FMTTYPE=image/jpeg;SIZE=281639;FILENAME=2doimage.jpg:https://www.someurl.com/somefile.jpg\n"
+"END:VEVENT\n";
+
+ c = icalparser_parse_string ((char *) test_icalcomp_str_caldav);
+ ok("parse caldav attachment", (c != NULL));
+
+ if (VERBOSE && c) printf("%s",icalcomponent_as_ical_string(c));
+
+ p = icalcomponent_get_first_property(c,ICAL_ATTACH_PROPERTY);
+ ok("property is correct kind (attach)",(icalproperty_isa(p) == ICAL_ATTACH_PROPERTY));
+
+ param = icalproperty_get_first_parameter(p,ICAL_ANY_PARAMETER);
+ if (VERBOSE && param) printf("MANAGED-ID = %s\n",icalparameter_get_managedid(param));
+ is("managed-id",icalparameter_get_managedid(param),"e474a36f22");
+
+ param = icalproperty_get_next_parameter(p,ICAL_ANY_PARAMETER);
+ if (VERBOSE && param) printf("FMTTYPE = %s\n",icalparameter_get_fmttype(param));
+ is("fmttype",icalparameter_get_fmttype(param),"image/jpeg");
+
+ param = icalproperty_get_next_parameter(p,ICAL_ANY_PARAMETER);
+ if (VERBOSE && param) printf("SIZE = %s\n",icalparameter_get_size(param));
+ is("size",icalparameter_get_size(param),"281639");
+
+ param = icalproperty_get_next_parameter(p,ICAL_ANY_PARAMETER);
+ if (VERBOSE && param) printf("FILENAME = %s\n",icalparameter_get_filename(param));
+ is("filename",icalparameter_get_filename(param),"2doimage.jpg");
+
+ if (VERBOSE) printf("URI = %s\n",icalattach_get_url(icalproperty_get_attach(p)));
+ is("attach url",icalattach_get_url(icalproperty_get_attach(p)),"https://www.someurl.com/somefile.jpg");
+
+ if (p) icalproperty_free(p);
+ if (c) icalcomponent_free(c);
}