|
1 | | -using Backtrace.Unity.Common; |
2 | | -using Backtrace.Unity.Interfaces; |
| 1 | +using Backtrace.Unity.Interfaces; |
3 | 2 | using Backtrace.Unity.Model; |
4 | 3 | using Newtonsoft.Json; |
5 | 4 | using System; |
@@ -50,7 +49,7 @@ public BacktraceApi(BacktraceCredentials credentials, uint reportPerMin = 3) |
50 | 49 | { |
51 | 50 | throw new ArgumentException($"{nameof(BacktraceCredentials)} cannot be null"); |
52 | 51 | } |
53 | | - _serverurl = $"{credentials.BacktraceHostUri.AbsoluteUri}post?format=json&token={credentials.Token}"; |
| 52 | + _serverurl = $"{credentials.BacktraceHostUri.AbsoluteUri}post?format=json&token={credentials.Token}&_mod_sync=1"; |
54 | 53 | Debug.Log("server url : " + _serverurl); |
55 | 54 | reportLimitWatcher = new ReportLimitWatcher(reportPerMin); |
56 | 55 | } |
@@ -95,103 +94,34 @@ public IEnumerator Send(BacktraceData data, Action<BacktraceResult> callback = n |
95 | 94 |
|
96 | 95 | private IEnumerator Send(string json, List<string> attachments, BacktraceReport report, Action<BacktraceResult> callback) |
97 | 96 | { |
98 | | - var requestId = Guid.NewGuid(); |
99 | | - var formData = new List<IMultipartFormSection> |
| 97 | + var request = new UnityWebRequest(_serverurl, "POST"); |
| 98 | + byte[] bodyRaw = Encoding.UTF8.GetBytes(json); |
| 99 | + request.uploadHandler = (UploadHandler)new UploadHandlerRaw(bodyRaw); |
| 100 | + request.downloadHandler = (DownloadHandler)new DownloadHandlerBuffer(); |
| 101 | + request.SetRequestHeader("Content-Type", "application/json"); |
| 102 | + yield return request.SendWebRequest(); |
| 103 | + |
| 104 | + _result = request.responseCode == 200 |
| 105 | + ? new BacktraceResult() |
| 106 | + : BacktraceResult.OnError(report, new Exception(request.error)); |
| 107 | + Debug.Log("CODE: " + request.responseCode); |
| 108 | + StringBuilder sb = new StringBuilder(); |
| 109 | + var responseHeaders = request.GetResponseHeaders(); |
| 110 | + if (responseHeaders != null) |
100 | 111 | { |
101 | | - new MultipartFormDataSection("upload_file.json", json, "application/json") |
102 | | - }; |
103 | | - byte[] boundary = UnityWebRequest.GenerateBoundary(); |
104 | | - string boundaryString = Encoding.ASCII.GetString(boundary); |
105 | | - Debug.Log("Generated boundary " + boundaryString); |
106 | | - |
107 | | - using (var www = UnityWebRequest.Post(_serverurl, formData, boundary)) |
108 | | - { |
109 | | - www.method = "POST"; |
110 | | - www.uploadHandler = (UploadHandler)new UploadHandlerRaw(boundary); |
111 | | - www.downloadHandler = (DownloadHandler)new DownloadHandlerBuffer(); |
112 | | - www.SetRequestHeader("Content-Type", FormDataHelper.GetContentTypeWithBoundary(requestId)); |
113 | | - var response = www.responseCode; |
114 | | - yield return www.SendWebRequest(); |
115 | | - _result = www.isNetworkError || www.isHttpError |
116 | | - ? BacktraceResult.OnError(report, new Exception(www.error)) |
117 | | - : new BacktraceResult(); |
118 | | - |
119 | | - StringBuilder sb = new StringBuilder(); |
120 | | - var responseHeaders = www.GetResponseHeaders(); |
121 | | - if (responseHeaders != null) |
122 | | - { |
123 | | - foreach (System.Collections.Generic.KeyValuePair<string, string> dict in www.GetResponseHeaders()) |
124 | | - { |
125 | | - sb.Append(dict.Key).Append(": \t[").Append(dict.Value).Append("]\n"); |
126 | | - } |
127 | | - |
128 | | - // Print Headers |
129 | | - Debug.Log("RESPONSE: " + sb.ToString()); |
130 | | - } |
131 | | - else |
| 112 | + foreach (KeyValuePair<string, string> dict in request.GetResponseHeaders()) |
132 | 113 | { |
133 | | - Debug.Log("RESPONSE IS EMPTY"); |
| 114 | + sb.Append(dict.Key).Append(": \t[").Append(dict.Value).Append("]\n"); |
134 | 115 | } |
135 | | - callback?.Invoke(_result); |
| 116 | + Debug.Log("RESPONSE: " + sb.ToString()); |
136 | 117 | } |
137 | | - |
| 118 | + else |
| 119 | + { |
| 120 | + Debug.Log("RESPONSE IS EMPTY"); |
| 121 | + } |
| 122 | + callback?.Invoke(_result); |
138 | 123 | } |
139 | 124 |
|
140 | | - |
141 | | - //private BacktraceResult Send(Guid requestId, string json, List<string> attachments, BacktraceReport report) |
142 | | - //{ |
143 | | - // var formData = FormDataHelper.GetFormData(json, attachments, requestId); |
144 | | - // string contentType = FormDataHelper.GetContentTypeWithBoundary(requestId); |
145 | | - // var request = WebRequest.Create(_serverurl) as HttpWebRequest; |
146 | | - |
147 | | - // //Set up the request properties. |
148 | | - // request.Method = "POST"; |
149 | | - // request.ContentType = contentType; |
150 | | - // request.ContentLength = formData.Length; |
151 | | - // try |
152 | | - // { |
153 | | - // using (Stream requestStream = request.GetRequestStream()) |
154 | | - // { |
155 | | - // requestStream.Write(formData, 0, formData.Length); |
156 | | - // requestStream.Close(); |
157 | | - // } |
158 | | - // return ReadServerResponse(request, report); |
159 | | - // } |
160 | | - // catch (Exception exception) |
161 | | - // { |
162 | | - // OnServerError?.Invoke(exception); |
163 | | - // return BacktraceResult.OnError(report, exception); |
164 | | - // } |
165 | | - //} |
166 | | - |
167 | | - ///// <summary> |
168 | | - ///// Handle server respond for synchronous request |
169 | | - ///// </summary> |
170 | | - ///// <param name="request">Current HttpWebRequest</param> |
171 | | - //private BacktraceResult ReadServerResponse(HttpWebRequest request, BacktraceReport report) |
172 | | - //{ |
173 | | - // using (WebResponse webResponse = request.GetResponse() as HttpWebResponse) |
174 | | - // { |
175 | | - // StreamReader responseReader = new StreamReader(webResponse.GetResponseStream()); |
176 | | - // string fullResponse = responseReader.ReadToEnd(); |
177 | | - // var response = JsonConvert.DeserializeObject<BacktraceResult>(fullResponse); |
178 | | - // response.BacktraceReport = report; |
179 | | - // OnServerResponse?.Invoke(response); |
180 | | - // return response; |
181 | | - // } |
182 | | - //} |
183 | | - //#endregion |
184 | | - ///// <summary> |
185 | | - ///// Get serialization settings |
186 | | - ///// </summary> |
187 | | - ///// <returns></returns> |
188 | | - //private JsonSerializerSettings JsonSerializerSettings { get; } = new JsonSerializerSettings |
189 | | - //{ |
190 | | - // NullValueHandling = NullValueHandling.Ignore, |
191 | | - // DefaultValueHandling = DefaultValueHandling.Ignore |
192 | | - //}; |
193 | | - |
194 | | - |
195 | 125 | public void SetClientRateLimitEvent(Action<BacktraceReport> onClientReportLimitReached) |
196 | 126 | { |
197 | 127 | reportLimitWatcher.OnClientReportLimitReached = onClientReportLimitReached; |
|
0 commit comments