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 |