aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Grid/NewAssetServer/Utils.cs
diff options
context:
space:
mode:
Diffstat (limited to 'OpenSim/Grid/NewAssetServer/Utils.cs')
-rw-r--r--OpenSim/Grid/NewAssetServer/Utils.cs1034
1 files changed, 1034 insertions, 0 deletions
diff --git a/OpenSim/Grid/NewAssetServer/Utils.cs b/OpenSim/Grid/NewAssetServer/Utils.cs
new file mode 100644
index 0000000..5499933
--- /dev/null
+++ b/OpenSim/Grid/NewAssetServer/Utils.cs
@@ -0,0 +1,1034 @@
1/*
2 * Copyright (c) 2008 Intel Corporation
3 * All rights reserved.
4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions
6 * are met:
7 *
8 * -- Redistributions of source code must retain the above copyright
9 * notice, this list of conditions and the following disclaimer.
10 * -- Redistributions in binary form must reproduce the above copyright
11 * notice, this list of conditions and the following disclaimer in the
12 * documentation and/or other materials provided with the distribution.
13 * -- Neither the name of the Intel Corporation nor the names of its
14 * contributors may be used to endorse or promote products derived from
15 * this software without specific prior written permission.
16 *
17 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
18 * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
19 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
20 * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE INTEL OR ITS
21 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
22 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
23 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
24 * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
25 * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
26 * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
27 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
28 */
29
30using System;
31using System.Collections.Specialized;
32using System.Globalization;
33using System.Net;
34using System.Xml;
35using System.Xml.Serialization;
36using OpenMetaverse;
37using OpenMetaverse.StructuredData;
38using HttpServer;
39
40namespace AssetServer
41{
42 public static class Utils
43 {
44 public static UUID GetAuthToken(IHttpRequest request)
45 {
46 UUID authToken = UUID.Zero;
47
48 string[] authHeader = request.Headers.GetValues("Authorization");
49 if (authHeader != null && authHeader.Length == 1)
50 {
51 // Example header:
52 // Authorization: OpenGrid 65fda0b5-4446-42f5-b828-aaf644293646
53 string[] authHeaderParts = authHeader[0].Split(' ');
54 if (authHeaderParts.Length == 2 && authHeaderParts[0] == "OpenGrid")
55 UUID.TryParse(authHeaderParts[1], out authToken);
56 }
57
58 if (authToken == UUID.Zero && request.Cookies != null)
59 {
60 // Check for an authToken cookie to make logins browser-compatible
61 RequestCookie authCookie = request.Cookies["authToken"];
62 if (authCookie != null)
63 UUID.TryParse(authCookie.Value, out authToken);
64 }
65
66 return authToken;
67 }
68
69 public static Uri GetOpenSimUri(UUID avatarID)
70 {
71 return new Uri("http://opensim/" + avatarID.ToString());
72 }
73
74 public static bool TryGetOpenSimUUID(Uri avatarUri, out UUID avatarID)
75 {
76 string[] parts = avatarUri.Segments;
77 return UUID.TryParse(parts[parts.Length - 1], out avatarID);
78 }
79
80 #region SL / file extension / content-type conversions
81
82 public static string SLAssetTypeToContentType(int assetType)
83 {
84 switch (assetType)
85 {
86 case 0:
87 return "image/jp2";
88 case 1:
89 return "application/ogg";
90 case 2:
91 return "application/x-metaverse-callingcard";
92 case 3:
93 return "application/x-metaverse-landmark";
94 case 5:
95 return "application/x-metaverse-clothing";
96 case 6:
97 return "application/x-metaverse-primitive";
98 case 7:
99 return "application/x-metaverse-notecard";
100 case 8:
101 return "application/x-metaverse-folder";
102 case 10:
103 return "application/x-metaverse-lsl";
104 case 11:
105 return "application/x-metaverse-lso";
106 case 12:
107 return "image/tga";
108 case 13:
109 return "application/x-metaverse-bodypart";
110 case 17:
111 return "audio/x-wav";
112 case 19:
113 return "image/jpeg";
114 case 20:
115 return "application/x-metaverse-animation";
116 case 21:
117 return "application/x-metaverse-gesture";
118 case 22:
119 return "application/x-metaverse-simstate";
120 default:
121 return "application/octet-stream";
122 }
123 }
124
125 public static int ContentTypeToSLAssetType(string contentType)
126 {
127 switch (contentType)
128 {
129 case "image/jp2":
130 return 0;
131 case "application/ogg":
132 return 1;
133 case "application/x-metaverse-callingcard":
134 return 2;
135 case "application/x-metaverse-landmark":
136 return 3;
137 case "application/x-metaverse-clothing":
138 return 5;
139 case "application/x-metaverse-primitive":
140 return 6;
141 case "application/x-metaverse-notecard":
142 return 7;
143 case "application/x-metaverse-lsl":
144 return 10;
145 case "application/x-metaverse-lso":
146 return 11;
147 case "image/tga":
148 return 12;
149 case "application/x-metaverse-bodypart":
150 return 13;
151 case "audio/x-wav":
152 return 17;
153 case "image/jpeg":
154 return 19;
155 case "application/x-metaverse-animation":
156 return 20;
157 case "application/x-metaverse-gesture":
158 return 21;
159 case "application/x-metaverse-simstate":
160 return 22;
161 default:
162 return -1;
163 }
164 }
165
166 public static string ContentTypeToExtension(string contentType)
167 {
168 switch (contentType)
169 {
170 case "image/jp2":
171 return "texture";
172 case "application/ogg":
173 return "ogg";
174 case "application/x-metaverse-callingcard":
175 return "callingcard";
176 case "application/x-metaverse-landmark":
177 return "landmark";
178 case "application/x-metaverse-clothing":
179 return "clothing";
180 case "application/x-metaverse-primitive":
181 return "primitive";
182 case "application/x-metaverse-notecard":
183 return "notecard";
184 case "application/x-metaverse-lsl":
185 return "lsl";
186 case "application/x-metaverse-lso":
187 return "lso";
188 case "image/tga":
189 return "tga";
190 case "application/x-metaverse-bodypart":
191 return "bodypart";
192 case "audio/x-wav":
193 return "wav";
194 case "image/jpeg":
195 return "jpg";
196 case "application/x-metaverse-animation":
197 return "animation";
198 case "application/x-metaverse-gesture":
199 return "gesture";
200 case "application/x-metaverse-simstate":
201 return "simstate";
202 default:
203 return "bin";
204 }
205 }
206
207 public static string ExtensionToContentType(string extension)
208 {
209 switch (extension)
210 {
211 case "texture":
212 case "jp2":
213 case "j2c":
214 return "image/jp2";
215 case "sound":
216 case "ogg":
217 return "application/ogg";
218 case "callingcard":
219 return "application/x-metaverse-callingcard";
220 case "landmark":
221 return "application/x-metaverse-landmark";
222 case "clothing":
223 return "application/x-metaverse-clothing";
224 case "primitive":
225 return "application/x-metaverse-primitive";
226 case "notecard":
227 return "application/x-metaverse-notecard";
228 case "lsl":
229 return "application/x-metaverse-lsl";
230 case "lso":
231 return "application/x-metaverse-lso";
232 case "tga":
233 return "image/tga";
234 case "bodypart":
235 return "application/x-metaverse-bodypart";
236 case "wav":
237 return "audio/x-wav";
238 case "jpg":
239 case "jpeg":
240 return "image/jpeg";
241 case "animation":
242 return "application/x-metaverse-animation";
243 case "gesture":
244 return "application/x-metaverse-gesture";
245 case "simstate":
246 return "application/x-metaverse-simstate";
247 case "txt":
248 return "text/plain";
249 case "xml":
250 return "application/xml";
251 default:
252 return "application/octet-stream";
253 }
254 }
255
256 #endregion SL / file extension / content-type conversions
257
258 #region XML Serialization
259
260 public class GeneratedReader : XmlSerializationReader
261 {
262 public object ReadRoot_InventoryFolderBase()
263 {
264 Reader.MoveToContent();
265 if (Reader.LocalName != "InventoryFolderBase" || Reader.NamespaceURI != "")
266 throw CreateUnknownNodeException();
267 return ReadObject_InventoryFolder(true, true);
268 }
269
270 public object ReadRoot_InventoryItemBase()
271 {
272 Reader.MoveToContent();
273 if (Reader.LocalName != "InventoryItemBase" || Reader.NamespaceURI != "")
274 throw CreateUnknownNodeException();
275 return ReadObject_InventoryItem(true, true);
276 }
277
278 public object ReadRoot_InventoryCollection()
279 {
280 Reader.MoveToContent();
281 if (Reader.LocalName != "InventoryCollection" || Reader.NamespaceURI != "")
282 throw CreateUnknownNodeException();
283 return ReadObject_InventoryCollection(true, true);
284 }
285
286 public InventoryFolder ReadObject_InventoryFolder(bool isNullable, bool checkType)
287 {
288 InventoryFolder ob = null;
289 if (isNullable && ReadNull()) return null;
290
291 if (checkType)
292 {
293 System.Xml.XmlQualifiedName t = GetXsiType();
294 if (t == null)
295 { }
296 else if (t.Name != "InventoryFolderBase" || t.Namespace != "")
297 throw CreateUnknownTypeException(t);
298 }
299
300 ob = (InventoryFolder)Activator.CreateInstance(typeof(InventoryFolder), true);
301
302 Reader.MoveToElement();
303
304 while (Reader.MoveToNextAttribute())
305 {
306 if (IsXmlnsAttribute(Reader.Name))
307 {
308 }
309 else
310 {
311 UnknownNode(ob);
312 }
313 }
314
315 Reader.MoveToElement();
316 Reader.MoveToElement();
317 if (Reader.IsEmptyElement)
318 {
319 Reader.Skip();
320 return ob;
321 }
322
323 Reader.ReadStartElement();
324 Reader.MoveToContent();
325
326 bool b0 = false, b1 = false, b2 = false, b3 = false, b4 = false, b5 = false;
327
328 while (Reader.NodeType != System.Xml.XmlNodeType.EndElement)
329 {
330 if (Reader.NodeType == System.Xml.XmlNodeType.Element)
331 {
332 if (Reader.LocalName == "Owner" && Reader.NamespaceURI == "" && !b1)
333 {
334 b1 = true;
335 ob.@Owner = ReadObject_UUID(false, true);
336 }
337 else if (Reader.LocalName == "Version" && Reader.NamespaceURI == "" && !b5)
338 {
339 b5 = true;
340 string s6 = Reader.ReadElementString();
341 ob.@Version = UInt16.Parse(s6, CultureInfo.InvariantCulture);
342 }
343 else if (Reader.LocalName == "ID" && Reader.NamespaceURI == "" && !b3)
344 {
345 b3 = true;
346 ob.@ID = ReadObject_UUID(false, true);
347 }
348 else if (Reader.LocalName == "Type" && Reader.NamespaceURI == "" && !b4)
349 {
350 b4 = true;
351 string s7 = Reader.ReadElementString();
352 ob.@Type = Int16.Parse(s7, CultureInfo.InvariantCulture);
353 }
354 else if (Reader.LocalName == "Name" && Reader.NamespaceURI == "" && !b0)
355 {
356 b0 = true;
357 string s8 = Reader.ReadElementString();
358 ob.@Name = s8;
359 }
360 else if (Reader.LocalName == "ParentID" && Reader.NamespaceURI == "" && !b2)
361 {
362 b2 = true;
363 ob.@ParentID = ReadObject_UUID(false, true);
364 }
365 else
366 {
367 UnknownNode(ob);
368 }
369 }
370 else
371 UnknownNode(ob);
372
373 Reader.MoveToContent();
374 }
375
376 ReadEndElement();
377
378 return ob;
379 }
380
381 public InventoryItem ReadObject_InventoryItem(bool isNullable, bool checkType)
382 {
383 InventoryItem ob = null;
384 if (isNullable && ReadNull()) return null;
385
386 if (checkType)
387 {
388 System.Xml.XmlQualifiedName t = GetXsiType();
389 if (t == null)
390 { }
391 else if (t.Name != "InventoryItemBase" || t.Namespace != "")
392 throw CreateUnknownTypeException(t);
393 }
394
395 ob = (InventoryItem)Activator.CreateInstance(typeof(InventoryItem), true);
396
397 Reader.MoveToElement();
398
399 while (Reader.MoveToNextAttribute())
400 {
401 if (IsXmlnsAttribute(Reader.Name))
402 {
403 }
404 else
405 {
406 UnknownNode(ob);
407 }
408 }
409
410 Reader.MoveToElement();
411 Reader.MoveToElement();
412 if (Reader.IsEmptyElement)
413 {
414 Reader.Skip();
415 return ob;
416 }
417
418 Reader.ReadStartElement();
419 Reader.MoveToContent();
420
421 bool b9 = false, b10 = false, b11 = false, b12 = false, b13 = false, b14 = false, b15 = false, b16 = false, b17 = false, b18 = false, b19 = false, b20 = false, b21 = false, b22 = false, b23 = false, b24 = false, b25 = false, b26 = false, b27 = false, b28 = false;
422
423 while (Reader.NodeType != System.Xml.XmlNodeType.EndElement)
424 {
425 if (Reader.NodeType == System.Xml.XmlNodeType.Element)
426 {
427 if (Reader.LocalName == "GroupPermissions" && Reader.NamespaceURI == "" && !b20)
428 {
429 b20 = true;
430 string s29 = Reader.ReadElementString();
431 ob.@GroupPermissions = UInt32.Parse(s29, CultureInfo.InvariantCulture);
432 }
433 else if (Reader.LocalName == "AssetType" && Reader.NamespaceURI == "" && !b21)
434 {
435 b21 = true;
436 string s30 = Reader.ReadElementString();
437 ob.@AssetType = Int32.Parse(s30, CultureInfo.InvariantCulture);
438 }
439 else if (Reader.LocalName == "SalePrice" && Reader.NamespaceURI == "" && !b25)
440 {
441 b25 = true;
442 string s31 = Reader.ReadElementString();
443 ob.@SalePrice = Int32.Parse(s31, CultureInfo.InvariantCulture);
444 }
445 else if (Reader.LocalName == "AssetID" && Reader.NamespaceURI == "" && !b22)
446 {
447 b22 = true;
448 ob.@AssetID = ReadObject_UUID(false, true);
449 }
450 else if (Reader.LocalName == "Folder" && Reader.NamespaceURI == "" && !b11)
451 {
452 b11 = true;
453 ob.@Folder = ReadObject_UUID(false, true);
454 }
455 else if (Reader.LocalName == "Name" && Reader.NamespaceURI == "" && !b14)
456 {
457 b14 = true;
458 string s32 = Reader.ReadElementString();
459 ob.@Name = s32;
460 }
461 else if (Reader.LocalName == "NextPermissions" && Reader.NamespaceURI == "" && !b16)
462 {
463 b16 = true;
464 string s33 = Reader.ReadElementString();
465 ob.@NextPermissions = UInt32.Parse(s33, CultureInfo.InvariantCulture);
466 }
467 else if (Reader.LocalName == "BasePermissions" && Reader.NamespaceURI == "" && !b18)
468 {
469 b18 = true;
470 string s34 = Reader.ReadElementString();
471 ob.@BasePermissions = UInt32.Parse(s34, CultureInfo.InvariantCulture);
472 }
473 else if (Reader.LocalName == "ID" && Reader.NamespaceURI == "" && !b9)
474 {
475 b9 = true;
476 ob.@ID = ReadObject_UUID(false, true);
477 }
478 else if (Reader.LocalName == "Flags" && Reader.NamespaceURI == "" && !b27)
479 {
480 b27 = true;
481 string s35 = Reader.ReadElementString();
482 ob.@Flags = UInt32.Parse(s35, CultureInfo.InvariantCulture);
483 }
484 else if (Reader.LocalName == "GroupOwned" && Reader.NamespaceURI == "" && !b24)
485 {
486 b24 = true;
487 string s36 = Reader.ReadElementString();
488 ob.@GroupOwned = XmlConvert.ToBoolean(s36);
489 }
490 else if (Reader.LocalName == "InvType" && Reader.NamespaceURI == "" && !b10)
491 {
492 b10 = true;
493 string s37 = Reader.ReadElementString();
494 ob.@InvType = Int32.Parse(s37, CultureInfo.InvariantCulture);
495 }
496 else if (Reader.LocalName == "GroupID" && Reader.NamespaceURI == "" && !b23)
497 {
498 b23 = true;
499 ob.@GroupID = ReadObject_UUID(false, true);
500 }
501 else if (Reader.LocalName == "Description" && Reader.NamespaceURI == "" && !b15)
502 {
503 b15 = true;
504 string s38 = Reader.ReadElementString();
505 ob.@Description = s38;
506 }
507 else if (Reader.LocalName == "CreationDate" && Reader.NamespaceURI == "" && !b28)
508 {
509 b28 = true;
510 string s39 = Reader.ReadElementString();
511 ob.@CreationDate = Int32.Parse(s39, CultureInfo.InvariantCulture);
512 }
513 else if (Reader.LocalName == "EveryOnePermissions" && Reader.NamespaceURI == "" && !b19)
514 {
515 b19 = true;
516 string s40 = Reader.ReadElementString();
517 ob.@EveryOnePermissions = UInt32.Parse(s40, CultureInfo.InvariantCulture);
518 }
519 else if (Reader.LocalName == "Creator" && Reader.NamespaceURI == "" && !b13)
520 {
521 b13 = true;
522 ob.@Creator = ReadObject_UUID(false, true);
523 }
524 else if (Reader.LocalName == "Owner" && Reader.NamespaceURI == "" && !b12)
525 {
526 b12 = true;
527 ob.@Owner = ReadObject_UUID(false, true);
528 }
529 else if (Reader.LocalName == "SaleType" && Reader.NamespaceURI == "" && !b26)
530 {
531 b26 = true;
532 string s41 = Reader.ReadElementString();
533 ob.@SaleType = byte.Parse(s41, CultureInfo.InvariantCulture);
534 }
535 else if (Reader.LocalName == "CurrentPermissions" && Reader.NamespaceURI == "" && !b17)
536 {
537 b17 = true;
538 string s42 = Reader.ReadElementString();
539 ob.@CurrentPermissions = UInt32.Parse(s42, CultureInfo.InvariantCulture);
540 }
541 else
542 {
543 UnknownNode(ob);
544 }
545 }
546 else
547 UnknownNode(ob);
548
549 Reader.MoveToContent();
550 }
551
552 ReadEndElement();
553
554 return ob;
555 }
556
557 public InventoryCollection ReadObject_InventoryCollection(bool isNullable, bool checkType)
558 {
559 InventoryCollection ob = null;
560 if (isNullable && ReadNull()) return null;
561
562 if (checkType)
563 {
564 System.Xml.XmlQualifiedName t = GetXsiType();
565 if (t == null)
566 { }
567 else if (t.Name != "InventoryCollection" || t.Namespace != "")
568 throw CreateUnknownTypeException(t);
569 }
570
571 ob = (InventoryCollection)Activator.CreateInstance(typeof(InventoryCollection), true);
572
573 Reader.MoveToElement();
574
575 while (Reader.MoveToNextAttribute())
576 {
577 if (IsXmlnsAttribute(Reader.Name))
578 {
579 }
580 else
581 {
582 UnknownNode(ob);
583 }
584 }
585
586 Reader.MoveToElement();
587 Reader.MoveToElement();
588 if (Reader.IsEmptyElement)
589 {
590 Reader.Skip();
591 if (ob.@Folders == null)
592 {
593 ob.@Folders = new System.Collections.Generic.Dictionary<UUID, InventoryFolder>();
594 }
595 if (ob.@Items == null)
596 {
597 ob.@Items = new System.Collections.Generic.Dictionary<UUID, InventoryItem>();
598 }
599 return ob;
600 }
601
602 Reader.ReadStartElement();
603 Reader.MoveToContent();
604
605 bool b43 = false, b44 = false, b45 = false;
606
607 while (Reader.NodeType != System.Xml.XmlNodeType.EndElement)
608 {
609 if (Reader.NodeType == System.Xml.XmlNodeType.Element)
610 {
611 if (Reader.LocalName == "UserID" && Reader.NamespaceURI == "" && !b45)
612 {
613 b45 = true;
614 ob.@UserID = ReadObject_UUID(false, true);
615 }
616 else if (Reader.LocalName == "Items" && Reader.NamespaceURI == "" && !b44)
617 {
618 System.Collections.Generic.Dictionary<UUID, InventoryItem> o46 = ob.@Items;
619 if (((object)o46) == null)
620 {
621 o46 = new System.Collections.Generic.Dictionary<UUID, InventoryItem>();
622 ob.@Items = o46;
623 }
624 if (Reader.IsEmptyElement)
625 {
626 Reader.Skip();
627 }
628 else
629 {
630 int n47 = 0;
631 Reader.ReadStartElement();
632 Reader.MoveToContent();
633
634 while (Reader.NodeType != System.Xml.XmlNodeType.EndElement)
635 {
636 if (Reader.NodeType == System.Xml.XmlNodeType.Element)
637 {
638 if (Reader.LocalName == "InventoryItemBase" && Reader.NamespaceURI == "")
639 {
640 if (((object)o46) == null)
641 throw CreateReadOnlyCollectionException("System.Collections.Generic.List<InventoryItemBase>");
642 InventoryItem item = ReadObject_InventoryItem(true, true);
643 o46.Add(item.ID, item);
644 n47++;
645 }
646 else UnknownNode(null);
647 }
648 else UnknownNode(null);
649
650 Reader.MoveToContent();
651 }
652 ReadEndElement();
653 }
654 b44 = true;
655 }
656 else if (Reader.LocalName == "Folders" && Reader.NamespaceURI == "" && !b43)
657 {
658 System.Collections.Generic.Dictionary<UUID, InventoryFolder> o48 = ob.@Folders;
659 if (((object)o48) == null)
660 {
661 o48 = new System.Collections.Generic.Dictionary<UUID, InventoryFolder>();
662 ob.@Folders = o48;
663 }
664 if (Reader.IsEmptyElement)
665 {
666 Reader.Skip();
667 }
668 else
669 {
670 int n49 = 0;
671 Reader.ReadStartElement();
672 Reader.MoveToContent();
673
674 while (Reader.NodeType != System.Xml.XmlNodeType.EndElement)
675 {
676 if (Reader.NodeType == System.Xml.XmlNodeType.Element)
677 {
678 if (Reader.LocalName == "InventoryFolderBase" && Reader.NamespaceURI == "")
679 {
680 if (((object)o48) == null)
681 throw CreateReadOnlyCollectionException("System.Collections.Generic.List<InventoryFolderBase>");
682 InventoryFolder folder = ReadObject_InventoryFolder(true, true);
683 o48.Add(folder.ID, folder);
684 n49++;
685 }
686 else UnknownNode(null);
687 }
688 else UnknownNode(null);
689
690 Reader.MoveToContent();
691 }
692 ReadEndElement();
693 }
694 b43 = true;
695 }
696 else
697 {
698 UnknownNode(ob);
699 }
700 }
701 else
702 UnknownNode(ob);
703
704 Reader.MoveToContent();
705 }
706 if (ob.@Folders == null)
707 {
708 ob.@Folders = new System.Collections.Generic.Dictionary<UUID, InventoryFolder>();
709 }
710 if (ob.@Items == null)
711 {
712 ob.@Items = new System.Collections.Generic.Dictionary<UUID, InventoryItem>();
713 }
714
715 ReadEndElement();
716
717 return ob;
718 }
719
720 public OpenMetaverse.UUID ReadObject_UUID(bool isNullable, bool checkType)
721 {
722 OpenMetaverse.UUID ob = (OpenMetaverse.UUID)Activator.CreateInstance(typeof(OpenMetaverse.UUID), true);
723 System.Xml.XmlQualifiedName t = GetXsiType();
724 if (t == null)
725 { }
726 else if (t.Name != "UUID" || t.Namespace != "")
727 throw CreateUnknownTypeException(t);
728
729 Reader.MoveToElement();
730
731 while (Reader.MoveToNextAttribute())
732 {
733 if (IsXmlnsAttribute(Reader.Name))
734 {
735 }
736 else
737 {
738 UnknownNode(ob);
739 }
740 }
741
742 Reader.MoveToElement();
743 Reader.MoveToElement();
744 if (Reader.IsEmptyElement)
745 {
746 Reader.Skip();
747 return ob;
748 }
749
750 Reader.ReadStartElement();
751 Reader.MoveToContent();
752
753 bool b52 = false;
754
755 while (Reader.NodeType != System.Xml.XmlNodeType.EndElement)
756 {
757 if (Reader.NodeType == System.Xml.XmlNodeType.Element)
758 {
759 if (Reader.LocalName == "Guid" && Reader.NamespaceURI == "" && !b52)
760 {
761 b52 = true;
762 string s53 = Reader.ReadElementString();
763 ob.@Guid = XmlConvert.ToGuid(s53);
764 }
765 else
766 {
767 UnknownNode(ob);
768 }
769 }
770 else
771 UnknownNode(ob);
772
773 Reader.MoveToContent();
774 }
775
776 ReadEndElement();
777
778 return ob;
779 }
780
781 protected override void InitCallbacks()
782 {
783 }
784
785 protected override void InitIDs()
786 {
787 }
788 }
789
790 public class GeneratedWriter : XmlSerializationWriter
791 {
792 const string xmlNamespace = "http://www.w3.org/2000/xmlns/";
793 static readonly System.Reflection.MethodInfo toBinHexStringMethod = typeof(XmlConvert).GetMethod("ToBinHexString", System.Reflection.BindingFlags.Static | System.Reflection.BindingFlags.NonPublic, null, new Type[] { typeof(byte[]) }, null);
794 static string ToBinHexString(byte[] input)
795 {
796 return input == null ? null : (string)toBinHexStringMethod.Invoke(null, new object[] { input });
797 }
798 public void WriteRoot_InventoryFolder(object o)
799 {
800 WriteStartDocument();
801 InventoryFolder ob = (InventoryFolder)o;
802 TopLevelElement();
803 WriteObject_InventoryFolder(ob, "InventoryFolderBase", "", true, false, true);
804 }
805
806 public void WriteRoot_InventoryItem(object o)
807 {
808 WriteStartDocument();
809 InventoryItem ob = (InventoryItem)o;
810 TopLevelElement();
811 WriteObject_InventoryItem(ob, "InventoryItemBase", "", true, false, true);
812 }
813
814 public void WriteRoot_InventoryCollection(object o)
815 {
816 WriteStartDocument();
817 InventoryCollection ob = (InventoryCollection)o;
818 TopLevelElement();
819 WriteObject_InventoryCollection(ob, "InventoryCollection", "", true, false, true);
820 }
821
822 void WriteObject_InventoryFolder(InventoryFolder ob, string element, string namesp, bool isNullable, bool needType, bool writeWrappingElem)
823 {
824 if (((object)ob) == null)
825 {
826 if (isNullable)
827 WriteNullTagLiteral(element, namesp);
828 return;
829 }
830
831 System.Type type = ob.GetType();
832 if (type == typeof(InventoryFolder))
833 { }
834 else
835 {
836 throw CreateUnknownTypeException(ob);
837 }
838
839 if (writeWrappingElem)
840 {
841 WriteStartElement(element, namesp, ob);
842 }
843
844 if (needType) WriteXsiType("InventoryFolderBase", "");
845
846 WriteElementString("Name", "", ob.@Name);
847 WriteObject_UUID(ob.@Owner, "Owner", "", false, false, true);
848 WriteObject_UUID(ob.@ParentID, "ParentID", "", false, false, true);
849 WriteObject_UUID(ob.@ID, "ID", "", false, false, true);
850 WriteElementString("Type", "", ob.@Type.ToString(CultureInfo.InvariantCulture));
851 WriteElementString("Version", "", ob.@Version.ToString(CultureInfo.InvariantCulture));
852 if (writeWrappingElem) WriteEndElement(ob);
853 }
854
855 void WriteObject_InventoryItem(InventoryItem ob, string element, string namesp, bool isNullable, bool needType, bool writeWrappingElem)
856 {
857 if (((object)ob) == null)
858 {
859 if (isNullable)
860 WriteNullTagLiteral(element, namesp);
861 return;
862 }
863
864 System.Type type = ob.GetType();
865 if (type == typeof(InventoryItem))
866 { }
867 else
868 {
869 throw CreateUnknownTypeException(ob);
870 }
871
872 if (writeWrappingElem)
873 {
874 WriteStartElement(element, namesp, ob);
875 }
876
877 if (needType) WriteXsiType("InventoryItemBase", "");
878
879 WriteObject_UUID(ob.@ID, "ID", "", false, false, true);
880 WriteElementString("InvType", "", ob.@InvType.ToString(CultureInfo.InvariantCulture));
881 WriteObject_UUID(ob.@Folder, "Folder", "", false, false, true);
882 WriteObject_UUID(ob.@Owner, "Owner", "", false, false, true);
883 WriteObject_UUID(ob.@Creator, "Creator", "", false, false, true);
884 WriteElementString("Name", "", ob.@Name);
885 WriteElementString("Description", "", ob.@Description);
886 WriteElementString("NextPermissions", "", ob.@NextPermissions.ToString(CultureInfo.InvariantCulture));
887 WriteElementString("CurrentPermissions", "", ob.@CurrentPermissions.ToString(CultureInfo.InvariantCulture));
888 WriteElementString("BasePermissions", "", ob.@BasePermissions.ToString(CultureInfo.InvariantCulture));
889 WriteElementString("EveryOnePermissions", "", ob.@EveryOnePermissions.ToString(CultureInfo.InvariantCulture));
890 WriteElementString("GroupPermissions", "", ob.@GroupPermissions.ToString(CultureInfo.InvariantCulture));
891 WriteElementString("AssetType", "", ob.@AssetType.ToString(CultureInfo.InvariantCulture));
892 WriteObject_UUID(ob.@AssetID, "AssetID", "", false, false, true);
893 WriteObject_UUID(ob.@GroupID, "GroupID", "", false, false, true);
894 WriteElementString("GroupOwned", "", (ob.@GroupOwned ? "true" : "false"));
895 WriteElementString("SalePrice", "", ob.@SalePrice.ToString(CultureInfo.InvariantCulture));
896 WriteElementString("SaleType", "", ob.@SaleType.ToString(CultureInfo.InvariantCulture));
897 WriteElementString("Flags", "", ob.@Flags.ToString(CultureInfo.InvariantCulture));
898 WriteElementString("CreationDate", "", ob.@CreationDate.ToString(CultureInfo.InvariantCulture));
899 if (writeWrappingElem) WriteEndElement(ob);
900 }
901
902 void WriteObject_InventoryCollection(InventoryCollection ob, string element, string namesp, bool isNullable, bool needType, bool writeWrappingElem)
903 {
904 if (((object)ob) == null)
905 {
906 if (isNullable)
907 WriteNullTagLiteral(element, namesp);
908 return;
909 }
910
911 System.Type type = ob.GetType();
912 if (type == typeof(InventoryCollection))
913 { }
914 else
915 {
916 throw CreateUnknownTypeException(ob);
917 }
918
919 if (writeWrappingElem)
920 {
921 WriteStartElement(element, namesp, ob);
922 }
923
924 if (needType) WriteXsiType("InventoryCollection", "");
925
926 if (ob.@Folders != null)
927 {
928 WriteStartElement("Folders", "", ob.@Folders);
929 foreach (InventoryFolder folder in ob.Folders.Values)
930 {
931 WriteObject_InventoryFolder(folder, "InventoryFolderBase", "", true, false, true);
932 }
933 WriteEndElement(ob.@Folders);
934 }
935 if (ob.@Items != null)
936 {
937 WriteStartElement("Items", "", ob.@Items);
938 foreach (InventoryItem item in ob.Items.Values)
939 {
940 WriteObject_InventoryItem(item, "InventoryItemBase", "", true, false, true);
941 }
942 WriteEndElement(ob.@Items);
943 }
944 WriteObject_UUID(ob.@UserID, "UserID", "", false, false, true);
945 if (writeWrappingElem) WriteEndElement(ob);
946 }
947
948 void WriteObject_UUID(OpenMetaverse.UUID ob, string element, string namesp, bool isNullable, bool needType, bool writeWrappingElem)
949 {
950 System.Type type = ob.GetType();
951 if (type == typeof(OpenMetaverse.UUID))
952 { }
953 else
954 {
955 throw CreateUnknownTypeException(ob);
956 }
957
958 if (writeWrappingElem)
959 {
960 WriteStartElement(element, namesp, ob);
961 }
962
963 if (needType) WriteXsiType("UUID", "");
964
965 WriteElementString("Guid", "", XmlConvert.ToString(ob.@Guid));
966 if (writeWrappingElem) WriteEndElement(ob);
967 }
968
969 protected override void InitCallbacks()
970 {
971 }
972
973 }
974
975 public class BaseXmlSerializer : System.Xml.Serialization.XmlSerializer
976 {
977 protected override System.Xml.Serialization.XmlSerializationReader CreateReader()
978 {
979 return new GeneratedReader();
980 }
981
982 protected override System.Xml.Serialization.XmlSerializationWriter CreateWriter()
983 {
984 return new GeneratedWriter();
985 }
986
987 public override bool CanDeserialize(System.Xml.XmlReader xmlReader)
988 {
989 return true;
990 }
991 }
992
993 public sealed class InventoryFolderSerializer : BaseXmlSerializer
994 {
995 protected override void Serialize(object obj, System.Xml.Serialization.XmlSerializationWriter writer)
996 {
997 ((GeneratedWriter)writer).WriteRoot_InventoryFolder(obj);
998 }
999
1000 protected override object Deserialize(System.Xml.Serialization.XmlSerializationReader reader)
1001 {
1002 return ((GeneratedReader)reader).ReadRoot_InventoryFolderBase();
1003 }
1004 }
1005
1006 public sealed class InventoryItemSerializer : BaseXmlSerializer
1007 {
1008 protected override void Serialize(object obj, System.Xml.Serialization.XmlSerializationWriter writer)
1009 {
1010 ((GeneratedWriter)writer).WriteRoot_InventoryItem(obj);
1011 }
1012
1013 protected override object Deserialize(System.Xml.Serialization.XmlSerializationReader reader)
1014 {
1015 return ((GeneratedReader)reader).ReadRoot_InventoryItemBase();
1016 }
1017 }
1018
1019 public sealed class InventoryCollectionSerializer : BaseXmlSerializer
1020 {
1021 protected override void Serialize(object obj, System.Xml.Serialization.XmlSerializationWriter writer)
1022 {
1023 ((GeneratedWriter)writer).WriteRoot_InventoryCollection(obj);
1024 }
1025
1026 protected override object Deserialize(System.Xml.Serialization.XmlSerializationReader reader)
1027 {
1028 return ((GeneratedReader)reader).ReadRoot_InventoryCollection();
1029 }
1030 }
1031
1032 #endregion XML Serialization
1033 }
1034}