public
Description: A Clutter-based Twitter client
Homepage: http://live.gnome.org/Tweet
Clone URL: git://github.com/ebassi/tweet.git
Search Repo:
Add missing fields to TwitterUser

The show_user() method of TwitterClient returns a detailed user
profile description, with more fields than the usual.

TwitterUser now contains most of the returned fields; the only
exceptions are the profile colours, which can be added at any
later point if the need arise.
Emmanuele Bassi (author)
Sat Apr 12 06:41:51 -0700 2008
commit  c8a4eb7ad681a507a22930764337453ef41b4020
tree    1d5acb43d1f7525744838201ea21b01c11774576
parent  53aa0b9b6dde73d16e78cf7f7c2d3cd879480e5b
...
24
25
26
 
 
27
28
 
 
 
 
29
 
 
30
 
31
32
33
...
44
45
46
47
 
 
 
 
 
 
 
 
 
48
49
50
...
60
61
62
 
 
63
64
65
...
110
111
112
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
113
114
115
...
189
190
191
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
192
193
194
...
208
209
210
 
 
211
212
213
...
264
265
266
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
267
268
269
...
410
411
412
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
413
...
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
...
53
54
55
 
56
57
58
59
60
61
62
63
64
65
66
67
...
77
78
79
80
81
82
83
84
...
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
...
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
...
311
312
313
314
315
316
317
318
...
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
...
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
0
@@ -24,10 +24,19 @@
0
   gchar *location;
0
   gchar *screen_name;
0
   gchar *profile_image_url;
0
+ gchar *created_at;
0
+ gchar *time_zone;
0
 
0
   guint id;
0
+ guint friends_count;
0
+ guint statuses_count;
0
+ guint followers_count;
0
+ guint favorites_count;
0
 
0
+ gint utc_offset;
0
+
0
   guint protected : 1;
0
+ guint following : 1;
0
 
0
   TwitterStatus *status;
0
 };
0
@@ -44,7 +53,15 @@
0
   PROP_PROFILE_IMAGE_URL,
0
   PROP_ID,
0
   PROP_PROTECTED,
0
- PROP_STATUS
0
+ PROP_STATUS,
0
+ PROP_FOLLOWING,
0
+ PROP_FRIENDS_COUNT,
0
+ PROP_STATUSES_COUNT,
0
+ PROP_FOLLOWERS_COUNT,
0
+ PROP_FAVORITES_COUNT,
0
+ PROP_CREATED_AT,
0
+ PROP_TIME_ZONE,
0
+ PROP_UTC_OFFSET
0
 };
0
 
0
 G_DEFINE_TYPE (TwitterUser, twitter_user, G_TYPE_INITIALLY_UNOWNED);
0
@@ -60,6 +77,8 @@
0
   g_free (priv->location);
0
   g_free (priv->screen_name);
0
   g_free (priv->profile_image_url);
0
+ g_free (priv->created_at);
0
+ g_free (priv->time_zone);
0
 
0
   G_OBJECT_CLASS (twitter_user_parent_class)->finalize (gobject);
0
 }
0
@@ -110,6 +129,34 @@
0
       g_value_set_object (value, priv->status);
0
       break;
0
 
0
+ case PROP_FOLLOWING:
0
+ g_value_set_boolean (value, priv->following);
0
+ break;
0
+
0
+ case PROP_FRIENDS_COUNT:
0
+ g_value_set_uint (value, priv->friends_count);
0
+ break;
0
+
0
+ case PROP_STATUSES_COUNT:
0
+ g_value_set_uint (value, priv->statuses_count);
0
+ break;
0
+
0
+ case PROP_FOLLOWERS_COUNT:
0
+ g_value_set_uint (value, priv->followers_count);
0
+ break;
0
+
0
+ case PROP_CREATED_AT:
0
+ g_value_set_string (value, priv->created_at);
0
+ break;
0
+
0
+ case PROP_TIME_ZONE:
0
+ g_value_set_string (value, priv->time_zone);
0
+ break;
0
+
0
+ case PROP_UTC_OFFSET:
0
+ g_value_set_int (value, priv->utc_offset);
0
+ break;
0
+
0
     default:
0
       G_OBJECT_WARN_INVALID_PROPERTY_ID (gobject, prop_id, pspec);
0
       break;
0
@@ -189,6 +236,62 @@
0
                                                         "The user status",
0
                                                         TWITTER_TYPE_STATUS,
0
                                                         G_PARAM_READABLE));
0
+ g_object_class_install_property (gobject_class,
0
+ PROP_FOLLOWING,
0
+ g_param_spec_boolean ("following",
0
+ "Following",
0
+ "Whether we are following the user",
0
+ FALSE,
0
+ G_PARAM_READABLE));
0
+ g_object_class_install_property (gobject_class,
0
+ PROP_FRIENDS_COUNT,
0
+ g_param_spec_uint ("friends-count",
0
+ "Friends Count",
0
+ "The number of friends the user has",
0
+ 0, G_MAXUINT, 0,
0
+ G_PARAM_READABLE));
0
+ g_object_class_install_property (gobject_class,
0
+ PROP_STATUSES_COUNT,
0
+ g_param_spec_uint ("statuses-count",
0
+ "Statuses Count",
0
+ "The number of statuses the user wrote",
0
+ 0, G_MAXUINT, 0,
0
+ G_PARAM_READABLE));
0
+ g_object_class_install_property (gobject_class,
0
+ PROP_FOLLOWERS_COUNT,
0
+ g_param_spec_uint ("followers-count",
0
+ "Followers Count",
0
+ "The number of followers the user has",
0
+ 0, G_MAXUINT, 0,
0
+ G_PARAM_READABLE));
0
+ g_object_class_install_property (gobject_class,
0
+ PROP_FAVORITES_COUNT,
0
+ g_param_spec_uint ("favorites-count",
0
+ "Favorites Count",
0
+ "The number of favorite statues the user has",
0
+ 0, G_MAXUINT, 0,
0
+ G_PARAM_READABLE));
0
+ g_object_class_install_property (gobject_class,
0
+ PROP_CREATED_AT,
0
+ g_param_spec_string ("created-at",
0
+ "Created At",
0
+ "The date the user profile was created",
0
+ NULL,
0
+ G_PARAM_READABLE));
0
+ g_object_class_install_property (gobject_class,
0
+ PROP_TIME_ZONE,
0
+ g_param_spec_string ("time-zone",
0
+ "Time Zone",
0
+ "The name of the time zone of the user",
0
+ NULL,
0
+ G_PARAM_READABLE));
0
+ g_object_class_install_property (gobject_class,
0
+ PROP_UTC_OFFSET,
0
+ g_param_spec_int ("utc-offset",
0
+ "Offset from UTC",
0
+ "The offset of the time zone of the user from UTC",
0
+ G_MININT, G_MAXINT, 0,
0
+ G_PARAM_READABLE));
0
 }
0
 
0
 static void
0
@@ -208,6 +311,8 @@
0
   g_free (priv->location);
0
   g_free (priv->screen_name);
0
   g_free (priv->profile_image_url);
0
+ g_free (priv->created_at);
0
+ g_free (priv->time_zone);
0
 
0
   if (priv->status)
0
     g_object_unref (priv->status);
0
@@ -264,6 +369,39 @@
0
       priv->status = twitter_status_new_from_node (member);
0
       g_object_ref_sink (priv->status);
0
     }
0
+
0
+ member = json_object_get_member (obj, "following");
0
+ if (member)
0
+ priv->following = json_node_get_boolean (member);
0
+
0
+ member = json_object_get_member (obj, "friends_count");
0
+ if (member)
0
+ priv->friends_count = json_node_get_int (member);
0
+
0
+ member = json_object_get_member (obj, "statuses_count");
0
+ if (member)
0
+ priv->statuses_count = json_node_get_int (member);
0
+
0
+ member = json_object_get_member (obj, "followers_count");
0
+ if (member)
0
+ priv->followers_count = json_node_get_int (member);
0
+
0
+ /* XXX - english spelling */
0
+ member = json_object_get_member (obj, "favourites_count");
0
+ if (member)
0
+ priv->favorites_count = json_node_get_int (member);
0
+
0
+ member = json_object_get_member (obj, "created_at");
0
+ if (member)
0
+ priv->created_at = json_node_dup_string (member);
0
+
0
+ member = json_object_get_member (obj, "time_zone");
0
+ if (member)
0
+ priv->time_zone = json_node_dup_string (member);
0
+
0
+ member = json_object_get_member (obj, "utc_offset");
0
+ if (member)
0
+ priv->utc_offset = json_node_get_int (member);
0
 }
0
 
0
 TwitterUser *
0
@@ -410,5 +548,69 @@
0
   g_return_val_if_fail (TWITTER_IS_USER (user), NULL);
0
 
0
   return user->priv->status;
0
+}
0
+
0
+gboolean
0
+twitter_user_get_following (TwitterUser *user)
0
+{
0
+ g_return_val_if_fail (TWITTER_IS_USER (user), FALSE);
0
+
0
+ return user->priv->following;
0
+}
0
+
0
+guint
0
+twitter_user_get_friends_count (TwitterUser *user)
0
+{
0
+ g_return_val_if_fail (TWITTER_IS_USER (user), 0);
0
+
0
+ return user->priv->friends_count;
0
+}
0
+
0
+guint
0
+twitter_user_get_statuses_count (TwitterUser *user)
0
+{
0
+ g_return_val_if_fail (TWITTER_IS_USER (user), 0);
0
+
0
+ return user->priv->statuses_count;
0
+}
0
+
0
+guint
0
+twitter_user_get_followers_count (TwitterUser *user)
0
+{
0
+ g_return_val_if_fail (TWITTER_IS_USER (user), 0);
0
+
0
+ return user->priv->followers_count;
0
+}
0
+
0
+guint
0
+twitter_user_get_favorites_count (TwitterUser *user)
0
+{
0
+ g_return_val_if_fail (TWITTER_IS_USER (user), 0);
0
+
0
+ return user->priv->favorites_count;
0
+}
0
+
0
+G_CONST_RETURN gchar *
0
+twitter_user_get_created_at (TwitterUser *user)
0
+{
0
+ g_return_val_if_fail (TWITTER_IS_USER (user), NULL);
0
+
0
+ return user->priv->created_at;
0
+}
0
+
0
+G_CONST_RETURN gchar *
0
+twitter_user_get_time_zone (TwitterUser *user)
0
+{
0
+ g_return_val_if_fail (TWITTER_IS_USER (user), NULL);
0
+
0
+ return user->priv->time_zone;
0
+}
0
+
0
+gint
0
+twitter_user_get_utc_offset (TwitterUser *user)
0
+{
0
+ g_return_val_if_fail (TWITTER_IS_USER (user), 0);
0
+
0
+ return user->priv->utc_offset;
0
 }
...
27
28
29
 
 
 
 
 
 
 
 
 
30
31
32
...
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
0
@@ -27,6 +27,15 @@
0
 
0
 TwitterStatus * twitter_user_get_status (TwitterUser *user);
0
 
0
+gboolean twitter_user_get_following (TwitterUser *user);
0
+guint twitter_user_get_friends_count (TwitterUser *user);
0
+guint twitter_user_get_statuses_count (TwitterUser *user);
0
+guint twitter_user_get_followers_count (TwitterUser *user);
0
+guint twitter_user_get_favorites_count (TwitterUser *user);
0
+G_CONST_RETURN gchar *twitter_user_get_created_at (TwitterUser *user);
0
+G_CONST_RETURN gchar *twitter_user_get_time_zone (TwitterUser *user);
0
+gint twitter_user_get_utc_offset (TwitterUser *user);
0
+
0
 G_END_DECLS
0
 
0
 #endif /* __TWITTER_USER_H__ */

Comments

    No one has commented yet.