aboutsummaryrefslogtreecommitdiff
path: root/src/rss.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/rss.c')
-rw-r--r--src/rss.c32
1 files changed, 16 insertions, 16 deletions
diff --git a/src/rss.c b/src/rss.c
index c8bdd2d..780deee 100644
--- a/src/rss.c
+++ b/src/rss.c
@@ -220,7 +220,7 @@ static void url_escape(const char *str, char *output) {
}
}
-static int get_rss_url_from_episode_info(const char *episode_name, EpisodeInfo *episode_info, char *rss_url) {
+static int get_rss_url_from_episode_info(const char *episode_name, EpisodeInfo *episode_info, char *rss_url, fallback *fall) {
char *selected_submitter = NULL;
char response[512];
char group_name_escaped[1536];
@@ -247,7 +247,7 @@ static int get_rss_url_from_episode_info(const char *episode_name, EpisodeInfo *
return -1;
}
- if(is_header_response_ok(url) == 0) {
+ if(is_header_response_ok(url, fall) == 0) {
selected_submitter = response_str;
break;
} else {
@@ -296,13 +296,17 @@ static int get_rss_url_from_episode_info(const char *episode_name, EpisodeInfo *
return 0;
}
-int add_rss(const char *name, char *url, char *rss_config_dir, const char *start_after) {
+int add_rss(const char *name, char *url, char *rss_config_dir, const char *start_after, fallback *fall) {
int result = 0;
char rss_url[4096];
Buffer buffer;
buffer_init(&buffer);
- result = download_to_buffer(url, &buffer);
+
+ Buffer download_items_buffer;
+ buffer_init(&download_items_buffer);
+
+ result = download_to_buffer(url, &buffer, fall);
if(result != 0) {
EpisodeInfo episode_info;
if(episode_info_create_from_episode_name(&episode_info, url) != 0) {
@@ -310,7 +314,7 @@ int add_rss(const char *name, char *url, char *rss_config_dir, const char *start
goto cleanup;
}
- if(get_rss_url_from_episode_info(url, &episode_info, rss_url) != 0)
+ if(get_rss_url_from_episode_info(url, &episode_info, rss_url, fall) != 0)
goto cleanup;
/* User didn't want to track rss */
@@ -325,16 +329,13 @@ int add_rss(const char *name, char *url, char *rss_config_dir, const char *start
url = rss_url;
buffer_clear(&buffer);
- result = download_to_buffer(url, &buffer);
+ result = download_to_buffer(url, &buffer, fall);
if(result != 0) {
fprintf(stderr, "Failed to download rss: %s\n", url);
goto cleanup;
}
}
- Buffer download_items_buffer;
- buffer_init(&download_items_buffer);
-
char *rss_title = NULL;
result = parse_rss(buffer.data, &rss_title, rss_parse_add_callback, &download_items_buffer);
if(result != 0) {
@@ -427,7 +428,7 @@ int add_rss(const char *name, char *url, char *rss_config_dir, const char *start
}
size_t num_download_items = download_items_start ? (((DownloadItemsData*)buffer_end(&download_items_buffer)) - download_items_start) : 0;
- result = write_plugin_json_to_file(rss_tracked_dir, "data", url, updated, download_items_start, num_download_items, NULL);
+ result = write_plugin_json_to_file(rss_tracked_dir, "data", url, updated, download_items_start, num_download_items, NULL, fall);
if(result != 0) {
fprintf(stderr, "Failed to create %s/data\n", rss_tracked_dir);
remove_recursive(rss_tracked_dir);
@@ -484,7 +485,7 @@ static int int_min(int a, int b) {
return a < b ? a : b;
}
-static int add_torrents_in_reverse(TransmissionSession *transmission_session, Buffer *download_items_buffer, TrackedRss *tracked_rss, char *rss_tracked_dir) {
+static int add_torrents_in_reverse(TransmissionSession *transmission_session, Buffer *download_items_buffer, TrackedRss *tracked_rss, char *rss_tracked_dir, fallback *fall) {
int result = 0;
char *torrent_names[MAX_UPDATE_ITEMS];
DownloadItemsData *added_download_items[MAX_UPDATE_ITEMS];
@@ -514,9 +515,8 @@ static int add_torrents_in_reverse(TransmissionSession *transmission_session, Bu
TrackedItem tracked_item;
tracked_item.title = tracked_rss->title;
- tracked_item.link = tracked_rss->link;
tracked_item.json_data = tracked_rss->json_data;
- result = tracked_item_update_latest(&tracked_item, rss_tracked_dir, added_download_items, torrent_names, timestamps, torrent_name_index);
+ result = tracked_item_update_latest(&tracked_item, rss_tracked_dir, added_download_items, torrent_names, timestamps, torrent_name_index, fall);
for(int i = 0; i < torrent_name_index; ++i) {
free(torrent_names[i]);
@@ -526,7 +526,7 @@ static int add_torrents_in_reverse(TransmissionSession *transmission_session, Bu
return result;
}
-int sync_rss(TrackedRss *tracked_rss, TransmissionSession *transmission_session, char *rss_config_dir) {
+int sync_rss(TrackedRss *tracked_rss, TransmissionSession *transmission_session, char *rss_config_dir, fallback *fall) {
/* TODO: This can be cached */
int rss_config_dir_len = strlen(rss_config_dir);
@@ -538,7 +538,7 @@ int sync_rss(TrackedRss *tracked_rss, TransmissionSession *transmission_session,
Buffer rss_data_buffer;
buffer_init(&rss_data_buffer);
- result = download_to_buffer(tracked_rss->link, &rss_data_buffer);
+ result = download_to_buffer(tracked_rss->link, &rss_data_buffer, fall);
if(result != 0) {
fprintf(stderr, "Failed to download rss: %s\n", tracked_rss->link);
goto cleanup;
@@ -557,7 +557,7 @@ int sync_rss(TrackedRss *tracked_rss, TransmissionSession *transmission_session,
char *rss_tracked_dir = rss_config_dir;
strcat(rss_tracked_dir, "/tracked/");
- result = add_torrents_in_reverse(transmission_session, &download_items_buffer, tracked_rss, rss_tracked_dir);
+ result = add_torrents_in_reverse(transmission_session, &download_items_buffer, tracked_rss, rss_tracked_dir, fall);
if(result != 0) {
fprintf(stderr, "Failed while adding torrents for url: %s\n", tracked_rss->link);
goto cleanup;