66 lines
2.0 KiB
C#
66 lines
2.0 KiB
C#
#if !UNITY_2017_2_OR_NEWER
|
|
using System;
|
|
using System.IO;
|
|
using UnityEngine.Networking;
|
|
|
|
namespace AnyThink.Scripts.IntegrationManager.Editor
|
|
{
|
|
public class ATDownloadHandler : DownloadHandlerScript
|
|
{
|
|
// Required by DownloadHandler base class. Called when you address the 'bytes' property.
|
|
protected override byte[] GetData()
|
|
{
|
|
return null;
|
|
}
|
|
|
|
private FileStream fileStream;
|
|
|
|
public ATDownloadHandler(string path) : base(new byte[2048])
|
|
{
|
|
var downloadDirectory = Path.GetDirectoryName(path);
|
|
if (!Directory.Exists(downloadDirectory))
|
|
{
|
|
Directory.CreateDirectory(downloadDirectory);
|
|
}
|
|
|
|
try
|
|
{
|
|
//Open the current file to write to
|
|
fileStream = new FileStream(path, FileMode.OpenOrCreate, FileAccess.ReadWrite);
|
|
}
|
|
catch (Exception exception)
|
|
{
|
|
// MaxSdkLogger.UserError(string.Format("Failed to create file at {0}\n{1}", path, exception.Message));
|
|
ATLog.logError(string.Format("Failed to create file at {0}\n{1}", path, exception.Message));
|
|
}
|
|
}
|
|
|
|
protected override bool ReceiveData(byte[] byteFromServer, int dataLength)
|
|
{
|
|
if (byteFromServer == null || byteFromServer.Length < 1 || fileStream == null)
|
|
{
|
|
return false;
|
|
}
|
|
|
|
try
|
|
{
|
|
//Write the current data to the file
|
|
fileStream.Write(byteFromServer, 0, dataLength);
|
|
}
|
|
catch (Exception exception)
|
|
{
|
|
fileStream.Close();
|
|
fileStream = null;
|
|
ATLog.logError(string.Format("Failed to download file{0}", exception.Message));
|
|
}
|
|
|
|
return true;
|
|
}
|
|
|
|
protected override void CompleteContent()
|
|
{
|
|
fileStream.Close();
|
|
}
|
|
}
|
|
}
|
|
#endif |