we don't really need to build src/liblj/ as library; and we don't need to write each...
[k8lowj.git] / src / liblj / serveruser.h
blobe783714a7071bcb7bf924a3d0ee03b6d43461587
1 /* liblivejournal - a client library for LiveJournal.
2 * Copyright (C) 2003 Evan Martin <evan@livejournal.com>
4 * vim: tabstop=4 shiftwidth=4 noexpandtab :
5 */
7 #ifndef __LIVEJOURNAL_SERVERUSER_H__
8 #define __LIVEJOURNAL_SERVERUSER_H__
10 #include "liblj/types.h"
12 typedef struct _LJServer LJServer;
13 typedef struct _LJUser LJUser;
15 /* --- server --- */
17 typedef enum {
18 LJ_AUTH_SCHEME_UNKNOWN,
19 LJ_AUTH_SCHEME_NONE, /* we use md5 passwords by default.
20 they're replayable, but at least you're not sending
21 in plaintext. */
22 LJ_AUTH_SCHEME_C0, /* challenge/response.
23 http://www.livejournal.com/~lj_dev/599743.html. */
24 LJ_AUTH_SCHEME_OTHER /* for authschemes we don't know about yet. */
25 } LJAuthScheme;
27 struct _LJServer {
28 char *url;
30 GSList *moods;
32 int protocolversion;
33 LJAuthScheme authscheme;
36 LJServer* lj_server_new(const char *url);
37 int lj_server_get_last_cached_moodid(LJServer *server);
38 #define lj_server_unicode(s) ((s)->protocolversion > 0)
40 /* --- user --- */
42 struct _LJUser {
43 LJServer *server;
45 char *username;
46 char *password;
47 char *fullname;
49 gboolean checkfriends;
51 GSList *pickws;
52 GSList *friendgroups;
53 GSList *usejournals;
54 GSList *webmenu;
57 LJUser* lj_user_new(LJServer *server);
58 gint lj_user_compare(gconstpointer a, gconstpointer b);
61 /* --- moods --- */
63 #define lj_mood_new() g_new0(LJMood, 1)
64 #define lj_mood_id_from_name(server, name) _lj_nid_by_name(server->moods, name)
65 #define lj_mood_name_from_id(server, id) _lj_nid_by_id(server->moods, id)
66 #define lj_mood_compare _lj_nid_compare_alpha
67 typedef struct _LJMood {
68 NID_CONTENT
69 int parentid;
70 } LJMood;
72 /* --- friend group --- */
74 #define lj_friendgroup_new() g_new0(LJFriendGroup, 1)
75 #define lj_friendgroup_from_id(user, id) _lj_nid_by_id(user->friendgroups, id)
76 #define lj_friend_group_free _lj_nid_free
78 /* --- web menu --- */
80 typedef struct {
81 char *text;
82 char *url;
83 GSList *subitems;
84 } LJWebMenuItem;
86 #define lj_webmenuitem_new() g_new0(LJWebMenuItem, 1)
87 void lj_webmenu_free(GSList *menu);
89 #endif /* __LIVEJOURNAL_SERVERUSER_H__ */