tootle-linux-client/src/API/Status.vala

71 lines
2.3 KiB
Vala
Raw Normal View History

2018-04-14 14:09:06 +02:00
public class Tootle.Status{
2018-04-21 11:21:03 +02:00
public Account account;
2018-04-14 14:09:06 +02:00
public int64 id;
public string uri;
public string url;
2018-04-23 18:43:29 +02:00
public string? spoiler_text;
2018-04-14 14:09:06 +02:00
public string content;
public int64 reblogs_count;
public int64 favourites_count;
2018-04-21 11:21:03 +02:00
public string avatar;
public string acct;
2018-04-28 18:27:10 +02:00
public Mention[]? mentions;
public Tag[]? tags;
2018-04-14 14:09:06 +02:00
2018-04-16 20:22:42 +02:00
public bool reblogged;
public bool favorited;
2018-04-21 11:21:03 +02:00
public Status? reblog;
2018-04-14 14:09:06 +02:00
public Status(int64 id) {
this.id = id;
2018-04-16 20:22:42 +02:00
this.reblogged = false;
this.favorited = false;
2018-04-14 14:09:06 +02:00
}
public static Status parse(Json.Object obj) {
var id = int64.parse (obj.get_string_member ("id"));
var status = new Status (id);
2018-04-21 11:21:03 +02:00
status.account = Account.parse(obj.get_object_member ("account"));
2018-04-14 14:09:06 +02:00
status.uri = obj.get_string_member ("uri");
status.url = obj.get_string_member ("url");
status.reblogs_count = obj.get_int_member ("reblogs_count");
status.favourites_count = obj.get_int_member ("favourites_count");
2018-04-25 15:16:57 +02:00
status.content = Utils.escape_html ( obj.get_string_member ("content"));
2018-04-28 18:27:10 +02:00
Mention[]? _mentions = {};
obj.get_array_member ("mentions").foreach_element ((array, i, node) => {
var object = node.get_object ();
if (object != null)
_mentions += Mention.parse (object);
});
if (_mentions.length > 0)
status.mentions = _mentions;
Tag[]? _tags = {};
obj.get_array_member ("tags").foreach_element ((array, i, node) => {
var object = node.get_object ();
if (object != null)
_tags += Tag.parse (object);
});
if (_tags.length > 0)
status.tags = _tags;
2018-04-23 18:43:29 +02:00
var spoiler = obj.get_string_member ("spoiler_text");
if (spoiler != "")
2018-04-25 15:16:57 +02:00
status.spoiler_text = Utils.escape_html (spoiler);
2018-04-14 14:09:06 +02:00
2018-04-16 20:22:42 +02:00
if(obj.has_member ("reblogged"))
status.reblogged = obj.get_boolean_member ("reblogged");
if(obj.has_member ("favourited"))
status.favorited = obj.get_boolean_member ("favourited");
2018-04-21 11:21:03 +02:00
if(obj.has_member ("reblog") && obj.get_null_member("reblog") != true)
status.reblog = Status.parse (obj.get_object_member ("reblog"));
2018-04-14 14:09:06 +02:00
return status;
}
}