X-Git-Url: https://git.street.me.uk/andy/viking.git/blobdiff_plain/a31889935875a7d1d32c8dae2d6218d7938167f8..e96fe99dfb8c926ba4c6ee558380cc3f7f5241bc:/src/download.h diff --git a/src/download.h b/src/download.h index d31776ae..89ce75e3 100644 --- a/src/download.h +++ b/src/download.h @@ -22,20 +22,51 @@ #ifndef _VIKING_DOWNLOAD_H #define _VIKING_DOWNLOAD_H +#include + +/* File content check */ +typedef gboolean (*VikFileContentCheckerFunc) (FILE*); +gboolean a_check_map_file(FILE*); +gboolean a_check_html_file(FILE*); +gboolean a_check_kml_file(FILE*); + typedef struct { /** - * Indicates if we should send hostname on the GET request. - * (see http.c) + * Check if the server has a more recent file than the one we have before downloading it + * This uses http header If-Modified-Since */ - int sendhostname; + gboolean check_file_server_time; + /** * The REFERER string to use. * Could be NULL. */ gchar *referer; + + /** + * follow_location specifies the number of retries + * to follow a redirect while downloading a page. + */ + glong follow_location; + + /** + * File content checker. + */ + VikFileContentCheckerFunc check_file; + } DownloadOptions; +void a_download_init(void); + /* TODO: convert to Glib */ -int a_http_download_get_url ( const char *hostname, const char *uri, const char *fn, DownloadOptions *opt ); +int a_http_download_get_url ( const char *hostname, const char *uri, const char *fn, DownloadOptions *opt, void *handle ); +int a_ftp_download_get_url ( const char *hostname, const char *uri, const char *fn, DownloadOptions *opt, void *handle ); +void *a_download_handle_init (); +void a_download_handle_cleanup ( void *handle ); + +/* Error messages returned by download functions */ +enum { DOWNLOAD_NO_ERROR = 0, + DOWNLOAD_NO_NEWER_FILE, + DOWNLOAD_ERROR }; #endif