diff options
author | Timothy Pearson <kb9vqf@pearsoncomputing.net> | 2012-02-16 16:09:16 -0600 |
---|---|---|
committer | Timothy Pearson <kb9vqf@pearsoncomputing.net> | 2012-02-16 16:09:16 -0600 |
commit | 4462592a15abe78aac66fe7edbf7ed409adb27f5 (patch) | |
tree | 175743f295c5503970a3155a5d3332f9c8df7b2d /src/caldav-utils.h | |
download | libcaldav-4462592a15abe78aac66fe7edbf7ed409adb27f5.tar.gz libcaldav-4462592a15abe78aac66fe7edbf7ed409adb27f5.zip |
Initial import
Diffstat (limited to 'src/caldav-utils.h')
-rw-r--r-- | src/caldav-utils.h | 221 |
1 files changed, 221 insertions, 0 deletions
diff --git a/src/caldav-utils.h b/src/caldav-utils.h new file mode 100644 index 0000000..02c84d7 --- /dev/null +++ b/src/caldav-utils.h @@ -0,0 +1,221 @@ +/* vim: set textwidth=80 tabstop=4: */ + +/* Copyright (c) 2008 Michael Rasmussen (mir@datanom.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 + * the Free Software Foundation; either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + */ + +#ifndef __CALDAV_UTILS_H__ +#define __CALDAV_UTILS_H__ + +#include <glib.h> +#include <stdlib.h> +#include <curl/curl.h> +#include "caldav.h" + +/** + * @typedef struct _CALDAV_SETTINGS caldav_settings + * A pointer to a struct _CALDAV_SETTINGS + */ +typedef struct _CALDAV_SETTINGS caldav_settings; + +/** + * @struct _CALDAV_SETTINGS + * A struct used to exchange all user input between various parts + * of the library + */ +struct _CALDAV_SETTINGS { + gchar* username; + gchar* password; + gchar* url; + gchar* file; + gboolean usehttps; + gboolean verify_ssl_certificate; + gchar* custom_cacert; + gboolean debug; + gboolean use_locking; + char trace_ascii; + CALDAV_ACTION ACTION; + time_t start; + time_t end; +}; + +/** + * @typedef struct MemoryStruct memory_ptr + * A pointer to a struct MemoryStruct + */ +typedef struct MemoryStruct memory_ptr; + +/** + * @struct MemoryStruct + * Used to hold messages between the CalDAV server and the library + */ +struct MemoryStruct { + char *memory; + size_t size; +}; + +/** @struct config_data + * Used to exchange user options to the library + */ +struct config_data { + char trace_ascii; +}; + +/** + * This function is burrowed from the libcurl documentation + * @param text + * @param stream + * @param ptr + * @param size + * @param nohex + */ +void dump(const char* text, FILE* stream, char* ptr, size_t size, char nohex); + +/** + * This function is burrowed from the libcurl documentation + * @param handle + * @param type + * @param data + * @param size + * @param userp + * @return + */ +int my_trace(CURL* handle, curl_infotype type, char* data, size_t size, void* userp); + +/** + * This function is burrowed from the libcurl documentation + * @param ptr + * @param size + * @return void* to memory region + */ +size_t WriteMemoryCallback(void* ptr, size_t size, size_t nmemb, void* data); + +/** + * This function is burrowed from the libcurl documentation + * @param ptr + * @param size + * @param nmemb + * @param data + * @return number of written bytes + */ +size_t WriteHeaderCallback(void* ptr, size_t size, size_t nmemb, void* data); + +/*size_t ReadMemoryCallback(void* ptr, size_t size, size_t nmemb, void* data);*/ + +/** + * Initialize caldav settings structure. + * @param settings @see caldav_settings + */ +void init_caldav_settings(caldav_settings* settings); + +/** + * Free momory assigned to caldav settings structure. + * @param settings @see caldav_settings + */ +void free_caldav_settings(caldav_settings* settings); + +/** + * Parse URL + * @param settings @see caldav_settings + * @param url String containing URL to collection + */ +void parse_url(caldav_settings* settings, const char* url); + +/** + * Find a specific HTTP header from last request + * @param header HTTP header to search for + * @param headers String of HTTP headers from last request + * @param lowcase Should string be returned in all lower case. + * @return The header found or NULL + */ +gchar* get_response_header( + const char* header, gchar* headers, gboolean lowcase); + +/** + * Parse response from CalDAV server + * @param report Response from server + * @param element XML element to find + * @param type VCalendar element to find + * @return the parsed result + */ +gchar* parse_caldav_report(char* report, const char* element, const char* type); + +/** + * Convert a time_t variable to CalDAV DateTime + * @param time a specific date and time + * @return the CalDAV DateTime + */ +gchar* get_caldav_datetime(time_t* time); + +/** + * Create a random text string, using MD5. @see caldav_md5_hex_digest() + * @param text some text to randomize + * @return MD5 hash of text + */ +gchar* random_file_name(gchar* text); + +/** + * Does the event contain a UID element or not. If not add it. + * @param object A specific event + * @return event, eventually added UID + */ +gchar* verify_uid(gchar* object); + +/** + * Fetch a URL from a XML element + * @param text String + * @return URL + */ +gchar* get_url(gchar* text); + +/** + * Fetch host from URL + * @param url URL + * @return host + */ +gchar* get_host(gchar* url); + +/** + * Fetch the etag element from XML + * @param text String + * @return etag + */ +gchar* get_etag(gchar* text); + +/** + * Fetch any element from XML + * @param text String + * @return element + */ +gchar* get_tag(const gchar* tag, gchar* text); + + + +/** + * rebuild a raw URL with https if needed from the settings + * @param settings caldav_settings + * @return URL + */ +gchar* rebuild_url(caldav_settings* setting, gchar* uri); + +/** + * Prepare a curl connection + * @param settings caldav_settings + * @return CURL + */ +CURL* get_curl(caldav_settings* setting); + +#endif |