Skip to content

Commit

Permalink
Correct attachment name (#73)
Browse files Browse the repository at this point in the history
* Correct attachment name

* Moved constants to const variables
  • Loading branch information
konraddysput authored Mar 30, 2021
1 parent 50138f1 commit e74af45
Show file tree
Hide file tree
Showing 4 changed files with 58 additions and 33 deletions.
2 changes: 1 addition & 1 deletion CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# Backtrace Unity Release Notes

## Version 3.4.0-rc2
## Version 3.4.0-rc3

- 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.
- background thread support - now BacktraceClient will report exceptions/unhandled exceptions generated by any background thread.
Expand Down
2 changes: 1 addition & 1 deletion Runtime/BacktraceClient.cs
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ public class BacktraceClient : MonoBehaviour, IBacktraceClient
{
public BacktraceConfiguration Configuration;

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

/// <summary>
Expand Down
85 changes: 55 additions & 30 deletions Runtime/Services/BacktraceApi.cs
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,10 @@ namespace Backtrace.Unity.Services
/// </summary>
internal class BacktraceApi : IBacktraceApi
{
/// <summary>
/// Name reserved file with diagnostic data - JSON diagnostic data/minidump file
/// </summary>
private const string DiagnosticFileName = "upload_file";
/// <summary>
/// User custom request method
/// </summary>
Expand Down Expand Up @@ -114,20 +118,7 @@ public IEnumerator SendMinidump(string minidumpPath, IEnumerable<string> attachm
{
yield break;
}
List<IMultipartFormSection> formData = new List<IMultipartFormSection>
{
new MultipartFormFileSection("upload_file", minidumpBytes)
};

foreach (var file in attachments)
{
if (File.Exists(file) && new FileInfo(file).Length < 10000000)
{
formData.Add(new MultipartFormFileSection(
string.Format("attachment__{0}", Path.GetFileName(file)),
File.ReadAllBytes(file)));
}
}
var formData = CreateMinidumpFormData(minidumpBytes, attachments);

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


List<IMultipartFormSection> formData = new List<IMultipartFormSection>
{
new MultipartFormFileSection("upload_file", Encoding.UTF8.GetBytes(json), "upload_file.json", "application/json")
};

foreach (var file in attachments)
{
if (File.Exists(file) && new FileInfo(file).Length < 10000000)
{
formData.Add(new MultipartFormFileSection(
string.Format("attachment__{0}", Path.GetFileName(file)),
File.ReadAllBytes(file)));
}
}

var formData = CreateJsonFormData(Encoding.UTF8.GetBytes(json), attachments);

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

/// <summary>
/// Generate JSON form data
/// </summary>
/// <param name="json">Diagnostic JSON bytes</param>
/// <param name="attachments">List of attachments</param>
/// <returns>Diagnostic JSON form data</returns>
private List<IMultipartFormSection> CreateJsonFormData(byte[] json, IEnumerable<string> attachments)
{
List<IMultipartFormSection> formData = new List<IMultipartFormSection>
{
new MultipartFormFileSection(DiagnosticFileName, json, string.Format("{0}.json",DiagnosticFileName), "application/json")
};
AddAttachmentToFormData(formData, attachments);
return formData;
}

/// <summary>
/// Create minidump form data
/// </summary>
/// <param name="minidump">Minidump bytes</param>
/// <param name="attachments">list of attachments</param>
/// <returns>Minidump form data</returns>
private List<IMultipartFormSection> CreateMinidumpFormData(byte[] minidump, IEnumerable<string> attachments)
{

List<IMultipartFormSection> formData = new List<IMultipartFormSection>
{
new MultipartFormFileSection(DiagnosticFileName, minidump)
};
AddAttachmentToFormData(formData, attachments);
return formData;
}

private void AddAttachmentToFormData(List<IMultipartFormSection> formData, IEnumerable<string> attachments)
{
// make sure attachments are not bigger than 10 Mb.
const int maximumAttachmentSize = 10000000;
const string attachmentPrefix = "attachment_";
foreach (var file in attachments)
{
if (File.Exists(file) && new FileInfo(file).Length < maximumAttachmentSize)
{
formData.Add(new MultipartFormFileSection(
string.Format("{0}{1}", attachmentPrefix, Path.GetFileName(file)),
File.ReadAllBytes(file)));
}
}
}

private void PrintLog(UnityWebRequest request)
{
if (!_shouldDisplayFailureMessage)
Expand Down
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"name": "io.backtrace.unity",
"displayName": "Backtrace",
"version": "3.4.0-rc2",
"version": "3.4.0-rc3",
"unity": "2017.1",
"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.",
"keywords": [
Expand Down

0 comments on commit e74af45

Please sign in to comment.