1 /*
2 ** Jabby (a C library for Jabber protocol)
3 ** Copyright (c) 2002 Hubert Soko�owski <who_ami@tlen.pl>
4 **
5 ** This code is free software; you can redistribute it and/or
6 ** modify it under the terms of the GNU General Public License.
7 **
8 */
9
10 #include "jabby.h"
11 #include <string.h>
12
jabby_search_res_new()13 jabby_search_res *jabby_search_res_new()
14 {
15 jabby_search_res *search;
16
17 search = g_malloc(sizeof(*search));
18 memset(search, '\0', sizeof(*search));
19 return search;
20 }
21
jabby_search_set_new()22 jabby_search_set *jabby_search_set_new()
23 {
24 jabby_search_set *search;
25
26 search = g_malloc(sizeof(*search));
27 memset(search, '\0', sizeof(*search));
28 return search;
29 }
30
jabby_search_res_free(jabby_search_res * search)31 void jabby_search_res_free(jabby_search_res *search)
32 {
33 g_free(search->id);
34 g_free(search->first);
35 g_free(search->last);
36 g_free(search->city);
37 g_free(search->nick);
38 g_free(search);
39 }
40
jabby_search_set_free(jabby_search_set * search)41 void jabby_search_set_free(jabby_search_set *search)
42 {
43 g_free(search->id);
44 g_free(search->first);
45 g_free(search->last);
46 g_free(search->city);
47 g_free(search);
48 }
49
jabby_search_wp(jabby_session * ses,jabby_search_set * search)50 void jabby_search_wp(jabby_session *ses, jabby_search_set *search)
51 {
52 iks *x, *y, *d, *field, *value;
53 gchar *s;
54
55 x = iks_new("iq");
56 iks_insert_attrib(x, "type", "set");
57 iks_insert_attrib(x, "to", "search.jabber.wp.pl");
58 iks_insert_attrib(x, "id", "search");
59 y = iks_insert(x, "query");
60 iks_insert_attrib(y, "xmlns", IKS_NS_SEARCH);
61 d = iks_insert(y, "x");
62 iks_insert_attrib(d, "xmlns", "jabber:x:data");
63 if(search->id)
64 {
65 field = iks_insert(d, "field");
66 iks_insert_attrib(field, "var", "nick");
67 value = iks_insert(field, "value");
68 iks_insert_cdata(value, search->id, -1);
69 }
70 if(search->first)
71 {
72 field = iks_insert(d, "field");
73 iks_insert_attrib(field, "var", "first");
74 value = iks_insert(field, "value");
75 iks_insert_cdata(value, search->first, -1);
76 }
77 if(search->last)
78 {
79 field = iks_insert(d, "field");
80 iks_insert_attrib(field, "var", "last");
81 value = iks_insert(field, "value");
82 iks_insert_cdata(value, search->last, -1);
83 }
84 if(search->city)
85 {
86 field = iks_insert(d, "field");
87 iks_insert_attrib(field, "var", "city");
88 value = iks_insert(field, "value");
89 iks_insert_cdata(value, search->city, -1);
90 }
91 if(search->age_min)
92 {
93 field = iks_insert(d, "field");
94 iks_insert_attrib(field, "var", "age_min");
95 value = iks_insert(field, "value");
96 s = g_strdup_printf("%d", search->age_min);
97 iks_insert_cdata(value, s, -1);
98 g_free(s);
99 }
100 if(search->age_max)
101 {
102 field = iks_insert(d, "field");
103 iks_insert_attrib(field, "var", "age_max");
104 value = iks_insert(field, "value");
105 s = g_strdup_printf("%d", search->age_max);
106 iks_insert_cdata(value, s, -1);
107 g_free(s);
108 }
109 if(search->population)
110 {
111 field = iks_insert(d, "field");
112 iks_insert_attrib(field, "var", "population");
113 value = iks_insert(field, "value");
114 s = g_strdup_printf("%d", search->population);
115 iks_insert_cdata(value, s, -1);
116 g_free(s);
117 }
118 if(search->province)
119 {
120 field = iks_insert(d, "field");
121 iks_insert_attrib(field, "var", "province");
122 value = iks_insert(field, "value");
123 s = g_strdup_printf("%d", search->province);
124 iks_insert_cdata(value, s, -1);
125 g_free(s);
126 }
127 if(search->sex)
128 {
129 field = iks_insert(d, "field");
130 iks_insert_attrib(field, "var", "sex");
131 value = iks_insert(field, "value");
132 s = g_strdup_printf("%d", search->sex);
133 iks_insert_cdata(value, s, -1);
134 g_free(s);
135 }
136 if(search->occupation)
137 {
138 field = iks_insert(d, "field");
139 iks_insert_attrib(field, "var", "occupation");
140 value = iks_insert(field, "value");
141 s = g_strdup_printf("%d", search->occupation);
142 iks_insert_cdata(value, s, -1);
143 g_free(s);
144 }
145 if(search->online)
146 {
147 field = iks_insert(d, "field");
148 iks_insert_attrib(field, "var", "online");
149 value = iks_insert(field, "value");
150 s = g_strdup_printf("%d", search->online);
151 iks_insert_cdata(value, s, -1);
152 g_free(s);
153 }
154 iks_send(ses->parser, x);
155 iks_delete(x);
156 }
157
158