75 lines
2.3 KiB
Vala
75 lines
2.3 KiB
Vala
public class AttributionInfo : Object {
|
|
// Picture width
|
|
public int64 width;
|
|
|
|
// Picture height
|
|
public int64 height;
|
|
|
|
public static AttributionInfo from_variant(Variant variant) {
|
|
var attribution_info = new AttributionInfo();
|
|
|
|
VariantDict dict = new VariantDict(variant);
|
|
attribution_info.width = dict.lookup_value("width", VariantType.INT32)?.get_int32() ?? 0;
|
|
attribution_info.height = dict.lookup_value("height", VariantType.INT32)?.get_int32() ?? 0;
|
|
|
|
return attribution_info;
|
|
}
|
|
}
|
|
|
|
public class AttachmentMetadata : Object {
|
|
public AttributionInfo? attribution_info = null;
|
|
|
|
public static AttachmentMetadata from_variant(Variant variant) {
|
|
var metadata = new AttachmentMetadata();
|
|
|
|
VariantDict dict = new VariantDict(variant);
|
|
metadata.attribution_info = AttributionInfo.from_variant(dict.lookup_value("attribution_info", VariantType.DICTIONARY));
|
|
|
|
return metadata;
|
|
}
|
|
}
|
|
|
|
public class Attachment : Object {
|
|
public string guid;
|
|
public string path;
|
|
public string preview_path;
|
|
public bool downloaded;
|
|
public bool preview_downloaded;
|
|
public AttachmentMetadata? metadata;
|
|
|
|
public Attachment(string guid, AttachmentMetadata? metadata) {
|
|
this.guid = guid;
|
|
this.metadata = metadata;
|
|
}
|
|
|
|
public Attachment.from_variant(Variant variant) {
|
|
VariantIter iter;
|
|
variant.get("a{sv}", out iter);
|
|
|
|
string key;
|
|
Variant val;
|
|
while (iter.next("{sv}", out key, out val)) {
|
|
switch (key) {
|
|
case "guid":
|
|
this.guid = val.get_string();
|
|
break;
|
|
case "path":
|
|
this.path = val.get_string();
|
|
break;
|
|
case "preview_path":
|
|
this.preview_path = val.get_string();
|
|
break;
|
|
case "downloaded":
|
|
this.downloaded = val.get_boolean();
|
|
break;
|
|
case "preview_downloaded":
|
|
this.preview_downloaded = val.get_boolean();
|
|
break;
|
|
case "metadata":
|
|
this.metadata = AttachmentMetadata.from_variant(val);
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
}
|