2 * Copyright (C) 2006 Andrej Kacian <andrej@kacian.sk>
4 * This program is free software; you can redistribute it and/or
5 * modify it under the terms of the GNU General Public License as
6 * published by the Free Software Foundation; either version 2 of the
7 * License, or (at your option) any later version.
9 * This program is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 * General Public License for more details.
14 * You should have received a copy of the GNU General Public
15 * License along with this program; if not, write to the
16 * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
17 * Boston, MA 02111-1307, USA.
24 #include <curl/curl.h>
29 #include "feeditemenclosure.h"
33 * Initializes a new empty FeedItem struct, setting its parent feed,
35 FeedItem *feed_item_new(Feed *feed)
37 FeedItem *item = NULL;
39 item = malloc( sizeof(FeedItem) );
42 item->title_format = 0;
47 item->comments_url = NULL;
48 item->parent_id = NULL;
49 item->enclosure = NULL;
51 item->sourcetitle = NULL;
52 item->sourceid = NULL;
53 item->sourcedate = -1;
55 item->id_is_permalink = FALSE;
56 item->xhtml_content = FALSE;
58 item->date_published = -1;
59 item->date_modified = -1;
69 void feed_item_free(FeedItem *item)
76 g_free(item->summary);
81 g_free(item->comments_url);
82 g_free(item->parent_id);
83 g_free(item->enclosure);
85 g_free(item->sourcetitle);
86 g_free(item->sourceid);
92 Feed *feed_item_get_feed(FeedItem *item)
94 g_return_val_if_fail(item != NULL, NULL);
99 gchar *feed_item_get_url(FeedItem *item)
101 g_return_val_if_fail(item != NULL, NULL);
105 void feed_item_set_url(FeedItem *item, const gchar *url)
107 g_return_if_fail(item != NULL);
108 g_return_if_fail(url != NULL);
111 item->url = g_strdup(url);
115 gchar *feed_item_get_title(FeedItem *item)
117 g_return_val_if_fail(item != NULL, NULL);
121 void feed_item_set_title(FeedItem *item, const gchar *title)
123 g_return_if_fail(item != NULL);
124 g_return_if_fail(title != NULL);
127 item->title = g_strdup(title);
131 gint feed_item_get_title_format(FeedItem *item)
133 g_return_val_if_fail(item != NULL, -1);
134 return item->title_format;
137 void feed_item_set_title_format(FeedItem *item, gint format)
139 g_return_if_fail(item != NULL);
140 g_return_if_fail(format >= 0 && format <= FEED_ITEM_TITLE_UNKNOWN);
142 item->title_format = format;
146 gchar *feed_item_get_summary(FeedItem *item)
148 g_return_val_if_fail(item != NULL, NULL);
149 return item->summary;
152 void feed_item_set_summary(FeedItem *item, const gchar *summary)
154 g_return_if_fail(item != NULL);
155 g_return_if_fail(summary != NULL);
157 g_free(item->summary);
158 item->summary = g_strdup(summary);
162 gchar *feed_item_get_text(FeedItem *item)
164 g_return_val_if_fail(item != NULL, NULL);
168 void feed_item_set_text(FeedItem *item, const gchar *text)
170 g_return_if_fail(item != NULL);
171 g_return_if_fail(text != NULL);
174 item->text = g_strdup(text);
178 gchar *feed_item_get_author(FeedItem *item)
180 g_return_val_if_fail(item != NULL, NULL);
184 void feed_item_set_author(FeedItem *item, const gchar *author)
186 g_return_if_fail(item != NULL);
187 g_return_if_fail(author != NULL);
189 g_free(item->author);
190 item->author = g_strdup(author);
194 gchar *feed_item_get_id(FeedItem *item)
196 g_return_val_if_fail(item != NULL, NULL);
200 void feed_item_set_id(FeedItem *item, const gchar *id)
202 g_return_if_fail(item != NULL);
203 g_return_if_fail(id != NULL);
206 item->id = g_strdup(id);
210 gchar *feed_item_get_comments_url(FeedItem *item)
212 g_return_val_if_fail(item != NULL, NULL);
213 return item->comments_url;
216 void feed_item_set_comments_url(FeedItem *item, const gchar *url)
218 g_return_if_fail(item != NULL);
219 g_return_if_fail(url != NULL);
221 g_free(item->comments_url);
222 item->comments_url = g_strdup(url);
226 gchar *feed_item_get_parent_id(FeedItem *item)
228 g_return_val_if_fail(item != NULL, NULL);
229 return item->parent_id;
232 void feed_item_set_parent_id(FeedItem *item, const gchar *id)
234 g_return_if_fail(item != NULL);
235 g_return_if_fail(id != NULL);
237 g_free(item->parent_id);
238 item->parent_id = g_strdup(id);
241 /* Media enclosure */
242 FeedItemEnclosure *feed_item_get_enclosure(FeedItem *item)
244 g_return_val_if_fail(item != NULL, NULL);
245 return item->enclosure;
248 void feed_item_set_enclosure(FeedItem *item, FeedItemEnclosure *enclosure)
250 g_return_if_fail(item != NULL);
251 g_return_if_fail(enclosure != NULL);
252 g_return_if_fail(enclosure->url != NULL);
253 g_return_if_fail(enclosure->type != NULL);
255 feed_item_enclosure_free(item->enclosure);
256 item->enclosure = enclosure;
259 /* Source title (Atom only) */
260 gchar *feed_item_get_sourcetitle(FeedItem *item)
262 g_return_val_if_fail(item != NULL, NULL);
263 return item->sourcetitle;
266 void feed_item_set_sourcetitle(FeedItem *item, const gchar *sourcetitle)
268 g_return_if_fail(item != NULL);
269 g_return_if_fail(sourcetitle != NULL);
271 g_free(item->sourcetitle);
272 item->sourcetitle = g_strdup(sourcetitle);
275 /* Source ID (Atom only) */
276 gchar *feed_item_get_sourceid(FeedItem *item)
278 g_return_val_if_fail(item != NULL, NULL);
279 return item->sourceid;
282 void feed_item_set_sourceid(FeedItem *item, const gchar *sourceid)
284 g_return_if_fail(item != NULL);
285 g_return_if_fail(sourceid != NULL);
287 g_free(item->sourceid);
288 item->sourceid = g_strdup(sourceid);
291 /* Source date (Atom only) */
292 time_t feed_item_get_sourcedate(FeedItem *item)
294 g_return_val_if_fail(item != NULL, -1);
295 return item->sourcedate;
298 void feed_item_set_sourcedate(FeedItem *item, time_t date)
300 g_return_if_fail(item != NULL);
301 item->sourcedate = date;
305 time_t feed_item_get_date_published(FeedItem *item)
307 g_return_val_if_fail(item != NULL, -1);
308 return item->date_published;
311 void feed_item_set_date_published(FeedItem *item, time_t date)
313 g_return_if_fail(item != NULL);
314 item->date_published = date;
318 time_t feed_item_get_date_modified(FeedItem *item)
320 g_return_val_if_fail(item != NULL, -1);
321 return item->date_modified;
324 void feed_item_set_date_modified(FeedItem *item, time_t date)
326 g_return_if_fail(item != NULL);
327 item->date_modified = date;
330 FeedItem *feed_item_copy(FeedItem *item)
334 g_return_val_if_fail(item != NULL, NULL);
336 nitem = feed_item_new(NULL);
338 nitem->url = g_strdup(item->url);
339 nitem->title = g_strdup(item->title);
340 nitem->summary = g_strdup(item->summary);
341 nitem->text = g_strdup(item->text);
342 nitem->author = g_strdup(item->author);
343 nitem->id = g_strdup(item->id);
344 nitem->comments_url = g_strdup(item->comments_url);
345 nitem->parent_id = g_strdup(item->parent_id);
347 nitem->enclosure = g_memdup(item->enclosure, sizeof(FeedItemEnclosure));
349 nitem->date_published = item->date_published;
350 nitem->date_modified = item->date_modified;
352 nitem->id_is_permalink = item->id_is_permalink;
353 nitem->xhtml_content = item->xhtml_content;
355 nitem->data = g_memdup(item->data, sizeof(item->data));
360 gboolean feed_item_id_is_permalink(FeedItem *item)
362 g_return_val_if_fail(item != NULL, FALSE);
364 return item->id_is_permalink;
367 void feed_item_set_id_permalink(FeedItem *item, gboolean permalink)
369 g_return_if_fail(item != NULL);
371 item->id_is_permalink = permalink;