Branch data Line data Source code
1 : : /* SPDX-License-Identifier: LGPL-2.1+ */ 2 : : #pragma once 3 : : 4 : : #include <curl/curl.h> 5 : : #include <sys/types.h> 6 : : 7 : : #include "sd-event.h" 8 : : 9 : : #include "hashmap.h" 10 : : #include "time-util.h" 11 : : 12 : : typedef struct CurlGlue CurlGlue; 13 : : 14 : : struct CurlGlue { 15 : : sd_event *event; 16 : : CURLM *curl; 17 : : sd_event_source *timer; 18 : : Hashmap *ios; 19 : : 20 : : void (*on_finished)(CurlGlue *g, CURL *curl, CURLcode code); 21 : : void *userdata; 22 : : }; 23 : : 24 : : int curl_glue_new(CurlGlue **glue, sd_event *event); 25 : : CurlGlue* curl_glue_unref(CurlGlue *glue); 26 : : 27 [ # # ]: 0 : DEFINE_TRIVIAL_CLEANUP_FUNC(CurlGlue*, curl_glue_unref); 28 : : 29 : : int curl_glue_make(CURL **ret, const char *url, void *userdata); 30 : : int curl_glue_add(CurlGlue *g, CURL *c); 31 : : void curl_glue_remove_and_free(CurlGlue *g, CURL *c); 32 : : 33 : : struct curl_slist *curl_slist_new(const char *first, ...) _sentinel_; 34 : : int curl_header_strdup(const void *contents, size_t sz, const char *field, char **value); 35 : : int curl_parse_http_time(const char *t, usec_t *ret); 36 : : 37 [ # # ]: 0 : DEFINE_TRIVIAL_CLEANUP_FUNC(CURL*, curl_easy_cleanup); 38 [ # # ]: 0 : DEFINE_TRIVIAL_CLEANUP_FUNC(CURL*, curl_multi_cleanup); 39 : : DEFINE_TRIVIAL_CLEANUP_FUNC(struct curl_slist*, curl_slist_free_all);