Documentation for the Unity C# Library
Loading...
Searching...
No Matches
PixoGenericPlatformUtilities.cs
Go to the documentation of this file.
1using System.Collections.Generic;
2using UnityEngine;
3
4namespace PixoVR.Apex
5{
7 {
9 {
10 Debug.Log($"Initializing class {GetType().Name}");
11 }
12
13 public virtual bool OpenURL(string url)
14 {
15 return false;
16 }
17
18 public virtual bool OpenApplication(string applicationName, string[] argumentKeys, string[] argumentValues)
19 {
20 return false;
21 }
22
23 public virtual Dictionary<string, string> ParseApplicationArguments()
24 {
25 return null;
26 }
27
28 public virtual Dictionary<string, string> ParseURLArguments(string url)
29 {
30 Debug.Log($"Parsing URL Arguments {url}");
31 string urlData = url.Substring(url.IndexOf('?') + 1);
32
33 if (urlData.Length <= 0)
34 {
35 Debug.Log("No ? found in the url.");
36 return null;
37 }
38
39 Dictionary<string, string> parameters = new Dictionary<string, string>();
40
41 // We need to parse out the optional parameter, since it can contain &.
42 string[] optionalDataSplit = urlData.Split("optional=");
43 if (optionalDataSplit.Length > 1)
44 {
45 Debug.Log($"Optional data parts {optionalDataSplit[0]} -- {optionalDataSplit[1]}");
46 string optionalData = optionalDataSplit[1];
47 int jsonEndPosition = optionalData.LastIndexOf('}');
48 string isolatedOptionalData = optionalData.Substring(0, jsonEndPosition + 1);
49 Debug.Log($"Isolated data: {isolatedOptionalData}");
50 parameters.Add("optional", isolatedOptionalData);
51
52 if(jsonEndPosition < optionalData.Length - 1)
53 {
54 string otherData = optionalData.Substring(jsonEndPosition + 1);
55 Debug.Log($"Other data: {otherData}");
56 string baseData = optionalDataSplit[0];
57 if (baseData.Length > 0 && baseData.EndsWith('&'))
58 {
59 baseData = baseData.Remove(baseData.Length - 1, 1);
60 }
61 urlData = baseData + otherData;
62 Debug.Log($"Combined url: {urlData}");
63 }
64 }
65
66 string[] dataArray = urlData.Split('&');
67
68 if (dataArray.Length <= 0)
69 {
70 Debug.Log("No arguments found on the url.");
71 return null;
72 }
73
74 foreach (string dataElement in dataArray)
75 {
76 Debug.Log($"Parsing: {dataElement}");
77 string[] dataParts = dataElement.Split('=', 2);
78
79 if (dataParts.Length <= 1)
80 {
81 Debug.Log($"No named argument.");
82 continue;
83 }
84
85 Debug.Log($"Found argument {dataParts[0]} - {dataParts[1]}");
86 parameters.Add(dataParts[0], dataParts[1]);
87 }
88
89 return parameters;
90 }
91
92 public virtual bool ReadFileAsString(string fileName, out string data)
93 {
94 data = null;
95 return false;
96 }
97
98 public virtual bool ReadFile(string fileName, out byte[] data)
99 {
100 data = null;
101 return false;
102 }
103
104 public virtual bool WriteFile(string fileName, byte[] data)
105 {
106 return false;
107 }
108
109 public virtual bool WriteStringToFile(string fileName, string data, System.Text.Encoding encoding = null)
110 {
111 return false;
112 }
113 }
114}
virtual bool ReadFileAsString(string fileName, out string data)
virtual Dictionary< string, string > ParseApplicationArguments()
virtual bool ReadFile(string fileName, out byte[] data)
virtual bool WriteStringToFile(string fileName, string data, System.Text.Encoding encoding=null)
virtual bool OpenApplication(string applicationName, string[] argumentKeys, string[] argumentValues)
virtual Dictionary< string, string > ParseURLArguments(string url)
virtual bool WriteFile(string fileName, byte[] data)