- First Update
This commit is contained in:
86
Mitria_Minecraft_Launcher/Downloader.cs
Normal file
86
Mitria_Minecraft_Launcher/Downloader.cs
Normal file
@@ -0,0 +1,86 @@
|
||||
using System;
|
||||
using System.ComponentModel;
|
||||
using System.IO;
|
||||
using System.Net;
|
||||
|
||||
|
||||
namespace Mitria_Minecraft_Launcher
|
||||
{
|
||||
public class Downloader
|
||||
{
|
||||
private static int BufferSize = 1024 * 1240 * 1; //1MB
|
||||
|
||||
public delegate void DownloaderProgressChangedEventHandler(object sender, DownloaderProgressChangedEventArgs downloaderProgressChangedEventArgs);
|
||||
public event DownloaderProgressChangedEventHandler DownloaderProgressChangedEvent;
|
||||
|
||||
public void DownloadFile(string url, string path)
|
||||
{
|
||||
HttpWebRequest request = WebRequest.CreateHttp(url);
|
||||
WebResponse response = request.GetResponse();
|
||||
long fileSize = long.Parse(response.Headers.Get("Content-Length"));
|
||||
|
||||
Stream webStream = response.GetResponseStream();
|
||||
Stream fileStream = File.Open(path, FileMode.Create);
|
||||
|
||||
byte[] buffer = new byte[BufferSize];
|
||||
int length = 0;
|
||||
int processedByte = 0;
|
||||
while ((length = webStream.Read(buffer, 0, BufferSize)) > 0)
|
||||
{
|
||||
fileStream.Write(buffer, 0, length);
|
||||
|
||||
processedByte += length;
|
||||
var e = new DownloaderProgressChangedEventArgs(processedByte, fileSize);
|
||||
DownloaderProgressChangedEvent?.Invoke(this, e);
|
||||
}
|
||||
|
||||
webStream.Dispose();
|
||||
fileStream.Dispose();
|
||||
}
|
||||
|
||||
public string DownloadString(string url)
|
||||
{
|
||||
try
|
||||
{
|
||||
HttpWebRequest request = WebRequest.CreateHttp(url);
|
||||
WebResponse response = request.GetResponse();
|
||||
|
||||
StreamReader streamReader = new StreamReader(response.GetResponseStream());
|
||||
string resultString = streamReader.ReadToEnd();
|
||||
streamReader.Close();
|
||||
|
||||
return resultString;
|
||||
}
|
||||
catch (WebException ex)
|
||||
{
|
||||
switch (ex.Status)
|
||||
{
|
||||
case WebExceptionStatus.ConnectFailure:
|
||||
CommonLibrary.Log.FATAL("ConnectFailure : " + url);
|
||||
break;
|
||||
case WebExceptionStatus.Timeout:
|
||||
CommonLibrary.Log.FATAL("TimeOut : " + url);
|
||||
break;
|
||||
case WebExceptionStatus.ProtocolError:
|
||||
CommonLibrary.Log.FATAL("Not Found Page : " + url);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
|
||||
}
|
||||
return string.Empty;
|
||||
}
|
||||
}
|
||||
}
|
||||
public class DownloaderProgressChangedEventArgs : EventArgs
|
||||
{
|
||||
public long ProcessedByte { get; set; }
|
||||
public long FileSize { get; set; }
|
||||
public DownloaderProgressChangedEventArgs(long processByte, long fileSize)
|
||||
{
|
||||
ProcessedByte = processByte;
|
||||
FileSize = fileSize;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
Reference in New Issue
Block a user