1 /* liblivejournal - a client library for LiveJournal.
2 * Copyright (C) 2003 Evan Martin <evan@livejournal.com>
4 * vim: tabstop=4 shiftwidth=4 noexpandtab :
8 #include <stdlib.h> /* atoi */
10 #include "liblj/entry.h"
11 #include "liblj/getevents.h"
14 lj_getevents_init(LJGetEvents
*getevents
,
15 LJUser
*user
, const char *usejournal
,
16 void (*parse_result
)(LJVerb
*)) {
17 LJVerb
*verb
= (LJVerb
*)getevents
;
19 lj_verb_init(verb
, user
, "getevents", FALSE
, parse_result
);
21 lj_request_add(verb
->request
, "usejournal", usejournal
);
22 lj_request_add(verb
->request
, "lineendings", "unix");
26 single_parse_result(LJVerb
*verb
) {
27 LJGetEventsSingle
*getevents
= (LJGetEventsSingle
*)verb
;
28 getevents
->entry
= lj_entry_new_single_from_result(verb
->result
, NULL
/*XXX*/);
32 lj_getevents_single_new(LJUser
*user
, const char *usejournal
, int itemid
) {
33 LJGetEventsSingle
*getevents
= g_new0(LJGetEventsSingle
, 1);
34 lj_getevents_init((LJGetEvents
*)getevents
, user
, usejournal
,
36 lj_request_add(((LJVerb
*)getevents
)->request
, "selecttype", "one");
37 lj_request_add_int(((LJVerb
*)getevents
)->request
, "itemid", itemid
);
42 lj_getevents_single_free(LJGetEventsSingle
*getevents
, gboolean includeentry
) {
43 lj_verb_free_contents((LJVerb
*)getevents
);
44 if (includeentry
&& getevents
->entry
)
45 lj_entry_free(getevents
->entry
);
50 sync_parse_result(LJVerb
*verb
) {
51 LJGetEventsSync
*getevents
= (LJGetEventsSync
*)verb
;
53 getevents
->entry_count
= lj_result_get_int(verb
->result
, "events_count");
55 lj_entries_new_from_result(verb
->result
, getevents
->entry_count
,
56 &getevents
->warnings
);
60 lj_getevents_sync_new(LJUser
*user
, const char *usejournal
,
61 const char *lastsync
) {
62 LJGetEventsSync
*getevents
= g_new0(LJGetEventsSync
, 1);
63 lj_getevents_init((LJGetEvents
*)getevents
, user
, usejournal
,
65 lj_request_add(((LJVerb
*)getevents
)->request
, "selecttype", "syncitems");
67 lj_request_add(((LJVerb
*)getevents
)->request
, "lastsync", lastsync
);
72 lj_getevents_sync_free(LJGetEventsSync
*getevents
, gboolean includeentries
) {
73 lj_verb_free_contents((LJVerb
*)getevents
);
74 g_free(getevents
->entries
);
79 recent_parse_result(LJVerb
*verb
) {
80 LJGetEventsSync
*getevents
= (LJGetEventsSync
*)verb
;
82 getevents
->entry_count
= lj_result_get_int(verb
->result
, "events_count");
84 lj_entries_new_from_result(verb
->result
, getevents
->entry_count
,
85 &getevents
->warnings
);
89 lj_getevents_recent_new(LJUser
*user
, const char *usejournal
, int howmany
,
90 const char *beforedate
, gboolean summary
, int truncate
) {
91 LJGetEventsRecent
*getevents
= g_new0(LJGetEventsRecent
, 1);
92 lj_getevents_init((LJGetEvents
*)getevents
, user
, usejournal
,
94 lj_request_add(((LJVerb
*)getevents
)->request
, "selecttype", "lastn");
95 lj_request_add_int(((LJVerb
*)getevents
)->request
, "howmany", howmany
);
97 lj_request_add(((LJVerb
*)getevents
)->request
, "beforedate", beforedate
);
100 lj_request_add_int(((LJVerb
*)getevents
)->request
, "truncate", truncate
);
101 lj_request_add_int(((LJVerb
*)getevents
)->request
, "prefersubject", 1);
102 lj_request_add_int(((LJVerb
*)getevents
)->request
, "noprops", 1);
108 lj_getevents_recent_free(LJGetEventsRecent
*getevents
, gboolean includeentries
) {
110 if (includeentries
) {
111 for (i
= 0; i
< getevents
->entry_count
; i
++)
112 lj_entry_free(getevents
->entries
[i
]);
114 lj_verb_free_contents((LJVerb
*)getevents
);
115 g_free(getevents
->entries
);