Skip to content

Commit e74af45

Browse files
authored
Correct attachment name (#73)
* Correct attachment name * Moved constants to const variables
1 parent 50138f1 commit e74af45

File tree

4 files changed

+58
-33
lines changed

4 files changed

+58
-33
lines changed

CHANGELOG.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# Backtrace Unity Release Notes
22

3-
## Version 3.4.0-rc2
3+
## Version 3.4.0-rc3
44

55
- native/managed attachment support - user can add path to attachments via BacktraceClient Initialize method or via Unity Editor in the BacktraceClient's inspector. Once user add them on the initialization method/game object - it will be available in every report that BacktraceClient will send to Backtrace.
66
- background thread support - now BacktraceClient will report exceptions/unhandled exceptions generated by any background thread.

Runtime/BacktraceClient.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ public class BacktraceClient : MonoBehaviour, IBacktraceClient
2222
{
2323
public BacktraceConfiguration Configuration;
2424

25-
public const string VERSION = "3.4.0-rc2";
25+
public const string VERSION = "3.4.0-rc3";
2626
public bool Enabled { get; private set; }
2727

2828
/// <summary>

Runtime/Services/BacktraceApi.cs

Lines changed: 55 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,10 @@ namespace Backtrace.Unity.Services
1818
/// </summary>
1919
internal class BacktraceApi : IBacktraceApi
2020
{
21+
/// <summary>
22+
/// Name reserved file with diagnostic data - JSON diagnostic data/minidump file
23+
/// </summary>
24+
private const string DiagnosticFileName = "upload_file";
2125
/// <summary>
2226
/// User custom request method
2327
/// </summary>
@@ -114,20 +118,7 @@ public IEnumerator SendMinidump(string minidumpPath, IEnumerable<string> attachm
114118
{
115119
yield break;
116120
}
117-
List<IMultipartFormSection> formData = new List<IMultipartFormSection>
118-
{
119-
new MultipartFormFileSection("upload_file", minidumpBytes)
120-
};
121-
122-
foreach (var file in attachments)
123-
{
124-
if (File.Exists(file) && new FileInfo(file).Length < 10000000)
125-
{
126-
formData.Add(new MultipartFormFileSection(
127-
string.Format("attachment__{0}", Path.GetFileName(file)),
128-
File.ReadAllBytes(file)));
129-
}
130-
}
121+
var formData = CreateMinidumpFormData(minidumpBytes, attachments);
131122

132123
yield return new WaitForEndOfFrame();
133124
var boundaryIdBytes = UnityWebRequest.GenerateBoundary();
@@ -221,22 +212,7 @@ public IEnumerator Send(string json, List<string> attachments, Dictionary<string
221212
? GetParametrizedQuery(_serverUrl.ToString(), queryAttributes)
222213
: ServerUrl;
223214

224-
225-
List<IMultipartFormSection> formData = new List<IMultipartFormSection>
226-
{
227-
new MultipartFormFileSection("upload_file", Encoding.UTF8.GetBytes(json), "upload_file.json", "application/json")
228-
};
229-
230-
foreach (var file in attachments)
231-
{
232-
if (File.Exists(file) && new FileInfo(file).Length < 10000000)
233-
{
234-
formData.Add(new MultipartFormFileSection(
235-
string.Format("attachment__{0}", Path.GetFileName(file)),
236-
File.ReadAllBytes(file)));
237-
}
238-
}
239-
215+
var formData = CreateJsonFormData(Encoding.UTF8.GetBytes(json), attachments);
240216

241217
var boundaryIdBytes = UnityWebRequest.GenerateBoundary();
242218
using (var request = UnityWebRequest.Post(requestUrl, formData, boundaryIdBytes))
@@ -299,6 +275,55 @@ public IEnumerator Send(string json, List<string> attachments, Dictionary<string
299275
}
300276
}
301277

278+
/// <summary>
279+
/// Generate JSON form data
280+
/// </summary>
281+
/// <param name="json">Diagnostic JSON bytes</param>
282+
/// <param name="attachments">List of attachments</param>
283+
/// <returns>Diagnostic JSON form data</returns>
284+
private List<IMultipartFormSection> CreateJsonFormData(byte[] json, IEnumerable<string> attachments)
285+
{
286+
List<IMultipartFormSection> formData = new List<IMultipartFormSection>
287+
{
288+
new MultipartFormFileSection(DiagnosticFileName, json, string.Format("{0}.json",DiagnosticFileName), "application/json")
289+
};
290+
AddAttachmentToFormData(formData, attachments);
291+
return formData;
292+
}
293+
294+
/// <summary>
295+
/// Create minidump form data
296+
/// </summary>
297+
/// <param name="minidump">Minidump bytes</param>
298+
/// <param name="attachments">list of attachments</param>
299+
/// <returns>Minidump form data</returns>
300+
private List<IMultipartFormSection> CreateMinidumpFormData(byte[] minidump, IEnumerable<string> attachments)
301+
{
302+
303+
List<IMultipartFormSection> formData = new List<IMultipartFormSection>
304+
{
305+
new MultipartFormFileSection(DiagnosticFileName, minidump)
306+
};
307+
AddAttachmentToFormData(formData, attachments);
308+
return formData;
309+
}
310+
311+
private void AddAttachmentToFormData(List<IMultipartFormSection> formData, IEnumerable<string> attachments)
312+
{
313+
// make sure attachments are not bigger than 10 Mb.
314+
const int maximumAttachmentSize = 10000000;
315+
const string attachmentPrefix = "attachment_";
316+
foreach (var file in attachments)
317+
{
318+
if (File.Exists(file) && new FileInfo(file).Length < maximumAttachmentSize)
319+
{
320+
formData.Add(new MultipartFormFileSection(
321+
string.Format("{0}{1}", attachmentPrefix, Path.GetFileName(file)),
322+
File.ReadAllBytes(file)));
323+
}
324+
}
325+
}
326+
302327
private void PrintLog(UnityWebRequest request)
303328
{
304329
if (!_shouldDisplayFailureMessage)

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"name": "io.backtrace.unity",
33
"displayName": "Backtrace",
4-
"version": "3.4.0-rc2",
4+
"version": "3.4.0-rc3",
55
"unity": "2017.1",
66
"description": "Backtrace's integration with Unity games allows customers to capture and report handled and unhandled Unity exceptions to their Backtrace instance, instantly offering the ability to prioritize and debug software errors.",
77
"keywords": [

0 commit comments

Comments
 (0)