diff options
Diffstat (limited to 'OpenSim/Grid/NewAssetServer/Metadata.cs')
-rw-r--r-- | OpenSim/Grid/NewAssetServer/Metadata.cs | 85 |
1 files changed, 85 insertions, 0 deletions
diff --git a/OpenSim/Grid/NewAssetServer/Metadata.cs b/OpenSim/Grid/NewAssetServer/Metadata.cs new file mode 100644 index 0000000..247a3e8 --- /dev/null +++ b/OpenSim/Grid/NewAssetServer/Metadata.cs | |||
@@ -0,0 +1,85 @@ | |||
1 | using System; | ||
2 | using System.Collections.Generic; | ||
3 | using System.Xml; | ||
4 | using OpenMetaverse; | ||
5 | using OpenMetaverse.StructuredData; | ||
6 | |||
7 | namespace AssetServer | ||
8 | { | ||
9 | public class Metadata | ||
10 | { | ||
11 | public UUID ID; | ||
12 | public string Name; | ||
13 | public string Description; | ||
14 | public DateTime CreationDate; | ||
15 | public string ContentType; | ||
16 | public byte[] SHA1; | ||
17 | public bool Temporary; | ||
18 | public Dictionary<string, Uri> Methods = new Dictionary<string, Uri>(); | ||
19 | public OSDMap ExtraData; | ||
20 | |||
21 | public OSDMap SerializeToOSD() | ||
22 | { | ||
23 | OSDMap osdata = new OSDMap(); | ||
24 | |||
25 | if (ID != UUID.Zero) osdata["id"] = OSD.FromUUID(ID); | ||
26 | osdata["name"] = OSD.FromString(Name); | ||
27 | osdata["description"] = OSD.FromString(Description); | ||
28 | osdata["creation_date"] = OSD.FromDate(CreationDate); | ||
29 | osdata["type"] = OSD.FromString(ContentType); | ||
30 | osdata["sha1"] = OSD.FromBinary(SHA1); | ||
31 | osdata["temporary"] = OSD.FromBoolean(Temporary); | ||
32 | |||
33 | OSDMap methods = new OSDMap(Methods.Count); | ||
34 | foreach (KeyValuePair<string, Uri> kvp in Methods) | ||
35 | methods.Add(kvp.Key, OSD.FromUri(kvp.Value)); | ||
36 | osdata["methods"] = methods; | ||
37 | |||
38 | if (ExtraData != null) osdata["extra_data"] = ExtraData; | ||
39 | |||
40 | return osdata; | ||
41 | } | ||
42 | |||
43 | public byte[] SerializeToBytes() | ||
44 | { | ||
45 | LitJson.JsonData jsonData = OSDParser.SerializeJson(SerializeToOSD()); | ||
46 | return System.Text.Encoding.UTF8.GetBytes(jsonData.ToJson()); | ||
47 | } | ||
48 | |||
49 | public void Deserialize(byte[] data) | ||
50 | { | ||
51 | OSD osdata = OSDParser.DeserializeJson(System.Text.Encoding.UTF8.GetString(data)); | ||
52 | Deserialize(osdata); | ||
53 | } | ||
54 | |||
55 | public void Deserialize(string data) | ||
56 | { | ||
57 | OSD osdata = OSDParser.DeserializeJson(data); | ||
58 | Deserialize(osdata); | ||
59 | } | ||
60 | |||
61 | public void Deserialize(OSD osdata) | ||
62 | { | ||
63 | if (osdata.Type == OSDType.Map) | ||
64 | { | ||
65 | OSDMap map = (OSDMap)osdata; | ||
66 | ID = map["id"].AsUUID(); | ||
67 | Name = map["name"].AsString(); | ||
68 | Description = map["description"].AsString(); | ||
69 | CreationDate = map["creation_date"].AsDate(); | ||
70 | ContentType = map["type"].AsString(); | ||
71 | SHA1 = map["sha1"].AsBinary(); | ||
72 | Temporary = map["temporary"].AsBoolean(); | ||
73 | |||
74 | OSDMap methods = map["methods"] as OSDMap; | ||
75 | if (methods != null) | ||
76 | { | ||
77 | foreach (KeyValuePair<string, OSD> kvp in methods) | ||
78 | Methods.Add(kvp.Key, kvp.Value.AsUri()); | ||
79 | } | ||
80 | |||
81 | ExtraData = map["extra_data"] as OSDMap; | ||
82 | } | ||
83 | } | ||
84 | } | ||
85 | } | ||