httpdirfs/src/network.h

73 lines
1.6 KiB
C
Raw Normal View History

2018-07-21 03:51:49 +02:00
#ifndef NETWORK_H
#define NETWORK_H
2018-07-22 12:50:51 +02:00
/**
* \file network.h
* \brief network related functions
*/
2018-07-26 11:29:44 +02:00
#include "link.h"
/**
* \brief the default user agent string
*/
#define DEFAULT_USER_AGENT "HTTPDirFS-" VERSION
2018-07-30 15:20:04 +02:00
typedef struct {
char *username;
char *password;
2018-07-30 15:55:38 +02:00
char *proxy;
char *proxy_user;
char *proxy_pass;
2018-07-30 15:20:04 +02:00
long max_conns;
char *user_agent;
2019-04-26 21:37:49 +02:00
int http_429_wait;
char *cache_dir;
int cache_enabled;
2018-07-30 15:20:04 +02:00
} NetworkConfigStruct;
/** \brief HTTP response codes */
typedef enum {
HTTP_OK = 200,
HTTP_PARTIAL_CONTENT = 206,
HTTP_RANGE_NOT_SATISFIABLE = 416,
HTTP_TOO_MANY_REQUESTS = 429,
HTTP_CLOUDFLARE_UNKNOWN_ERROR = 520,
HTTP_CLOUDFLARE_TIMEOUT = 524
} HTTPResponseCode;
2019-04-26 21:37:49 +02:00
/** \brief The waiting time after getting HTTP 429 */
extern int HTTP_WAIT_SEC;
2019-04-26 21:37:49 +02:00
2018-07-30 15:20:04 +02:00
/** \brief CURL configuration */
extern NetworkConfigStruct NETWORK_CONFIG;
2018-07-26 11:29:44 +02:00
/** \brief curl shared interface */
2018-07-30 15:20:04 +02:00
extern CURLSH *CURL_SHARE;
2018-07-26 11:29:44 +02:00
2018-07-26 11:58:51 +02:00
/** \brief perform one transfer cycle */
2018-07-26 11:29:44 +02:00
int curl_multi_perform_once();
2018-07-30 15:20:04 +02:00
/** \brief initialise network config struct */
void network_config_init();
/** \brief initialise the network module */
LinkTable *network_init(const char *url);
2018-07-26 11:58:51 +02:00
/** \brief blocking file transfer */
2018-07-26 11:29:44 +02:00
void transfer_blocking(CURL *curl);
2018-07-26 11:58:51 +02:00
/** \brief non blocking file transfer */
2018-07-26 11:29:44 +02:00
void transfer_nonblocking(CURL *curl);
2018-07-20 16:38:44 +02:00
2018-07-26 11:58:51 +02:00
/** \brief callback function for file transfer */
2018-07-26 11:29:44 +02:00
size_t
2018-07-30 15:20:04 +02:00
write_memory_callback(void *contents, size_t size, size_t nmemb, void *userp);
2018-07-18 17:26:26 +02:00
/**
* \brief check if a HTTP response code corresponds to a temporary failure
*/
int HTTP_temp_failure(HTTPResponseCode http_resp);
2018-07-18 17:26:26 +02:00
#endif