1
0
mirror of https://github.com/Llewellynvdm/conky.git synced 2024-11-15 17:47:09 +00:00
conky/src/ccurl_thread.h
Dan McGee f055cfefad Enable use of HTTP cache headers in curl plugin
This will allow us to get 304 responses back from remote URLs that we are
grabbing using the curl, weather, and rss plugins. The first time we fetch a
resource, we will always get the full content, but from there on out we will
store any provided 'Etag' or 'Last-Modified' header, and submit these on the
next request. If we get a 304 response back, we won't have to do any work at
all.

This benefits both us (bandwidth and parsing savings) and remote URLs (we
actually make an attempt to not retrieve the same resource over and over
again).

Signed-off-by: Brenden Matthews <brenden@diddyinc.com>
2010-10-14 16:59:54 -07:00

79 lines
2.5 KiB
C

/* -*- mode: c; c-basic-offset: 4; tab-width: 4; indent-tabs-mode: t -*-
*
* Conky, a system monitor, based on torsmo
*
* Please see COPYING for details
*
* Copyright (c) 2005-2010 Brenden Matthews, Philip Kovacs, et. al.
* (see AUTHORS)
* All rights reserved.
*
* 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, see <http://www.gnu.org/licenses/>.
*
*/
#ifndef _CURL_THREAD_H_
#define _CURL_THREAD_H_
#include "timed_thread.h"
/* curl thread lib exports begin */
typedef struct _ccurl_location_t {
/* uri of location */
char *uri;
char *last_modified;
char *etag;
/* a pointer to some arbitrary data, will be freed by ccurl_free_info() if
* non-null */
void *result;
/* internal thread pointer, destroyed by timed_thread.c */
timed_thread *p_timed_thread;
/* function to call when data is ready to be processed, the first argument
* will be the result pointer, and the second argument is an internal
* buffer that shouldn't be mangled */
void (*process_function)(void *, const char *);
/* internal list pointer, don't mess with this unless you don't know any
* better */
struct _ccurl_location_t *next;
} ccurl_location_t;
/* find an existing location for the uri specified */
ccurl_location_t *ccurl_find_location(ccurl_location_t **locations_head, char *uri);
/* free all locations (as well as location->uri and location->result if
* non-null) */
void ccurl_free_locations(ccurl_location_t **locations_head);
/* initiates a curl thread at the location specified using the interval in
* seconds */
void ccurl_init_thread(ccurl_location_t *curloc, int interval);
/* curl thread lib exports end */
/* $curl exports begin */
/* for $curl, free internal list pointer */
void ccurl_free_info(void);
/* runs instance of $curl */
void ccurl_process_info(char *p, int p_max_size, char *uri, int interval);
void curl_parse_arg(struct text_object *, const char *);
void curl_print(struct text_object *, char *, int);
void curl_obj_free(struct text_object *);
/* $curl exports end */
#endif /* _CURL_THREAD_H_ */