/// <summary> /// Web上のストリームをダウンロードする /// </summary> /// <param name="url">URL</param> /// <param name="fileName">保存するファイル名</param> /// <param name="doDownloadProgressMinimum">ファイルサイズの最小値(0)をセットするデリゲート</param> /// <param name="doSetDownloadProgressMaximum">ファイルサイズをセットするデリゲート</param> /// <param name="doSetDownloadProgressValue">ダウンロード済みのファイルサイズをセットするデリゲート</param> public static void FetchFile(Uri url, string fileName, FetchEventHandler fetchEventHandler, FetchEventHandler fetchingEventHandler, FetchEventHandler fetchedEventHandler) { WebStream ws = null; try { ws = new WebStream(url); switch (PocketLadio.UserSetting.ProxyUse) { case UserSetting.ProxyConnect.Unuse: ws.ProxyUse = WebStream.ProxyConnect.Unuse; break; case UserSetting.ProxyConnect.OsSetting: ws.ProxyUse = WebStream.ProxyConnect.OsSetting; break; case UserSetting.ProxyConnect.OriginalSetting: ws.ProxyUse = WebStream.ProxyConnect.OriginalSetting; break; } ws.ProxyServer = PocketLadio.UserSetting.ProxyServer; ws.ProxyPort = PocketLadio.UserSetting.ProxyPort; ws.TimeOut = PocketLadioInfo.WebRequestTimeoutMillSec; ws.UserAgent = PocketLadioInfo.UserAgent; ws.CreateWebStream(); WebFileFetch fetch = new WebFileFetch(ws); if (fetchEventHandler != null) { fetch.Fetch += fetchEventHandler; } if (fetchingEventHandler != null) { fetch.Fetching += fetchingEventHandler; } if (fetchedEventHandler != null) { fetch.Fetched += fetchedEventHandler; } fetch.FetchFile(fileName); } finally { if (ws != null) { ws.Close(); } } }
/// <summary> /// Web上のストリームをダウンロードする /// </summary> /// <param name="url">URL</param> /// <param name="fileName">保存するファイル名</param> /// <param name="doDownloadProgressMinimum">ファイルサイズの最小値(0)をセットするデリゲート</param> /// <param name="doSetDownloadProgressMaximum">ファイルサイズをセットするデリゲート</param> /// <param name="doSetDownloadProgressValue">ダウンロード済みのファイルサイズをセットするデリゲート</param> public static void FetchFile(Uri url, string fileName, FetchEventHandler fetchEventHandler, FetchEventHandler fetchingEventHandler, FetchEventHandler fetchedEventHandler) { WebStream ws = null; try { ws = new WebStream(url); switch (PodcasCo.UserSetting.ProxyUse) { case UserSetting.ProxyConnect.Unuse: ws.ProxyUse = WebStream.ProxyConnect.Unuse; break; case UserSetting.ProxyConnect.OsSetting: ws.ProxyUse = WebStream.ProxyConnect.OsSetting; break; case UserSetting.ProxyConnect.OriginalSetting: ws.ProxyUse = WebStream.ProxyConnect.OriginalSetting; break; } ws.ProxyServer = PodcasCo.UserSetting.ProxyServer; ws.ProxyPort = PodcasCo.UserSetting.ProxyPort; ws.TimeOut = PodcasCoInfo.WebRequestTimeoutMillSec; ws.UserAgent = PodcasCoInfo.UserAgent; ws.SetResume(fileName); try { ws.CreateWebStream(); WebFileFetch fetch = new WebFileFetch(ws); fetch.DownLoadBufferSize = PodcasCo.UserSetting.DownLoadBufferSize; if (fetchEventHandler != null) { fetch.Fetch += fetchEventHandler; } if (fetchingEventHandler != null) { fetch.Fetching += fetchingEventHandler; } if (fetchedEventHandler != null) { fetch.Fetched += fetchedEventHandler; } fetch.FetchFile(fileName); } catch (MismatchFetchFileException) { // ダウンロードすべきよりも、すでにダウンロードしているファイルの方が大きい場合は // 一端ファイルを削除し、リジュームを無効にする File.Delete(fileName); ws.RemoveResume(); ws.CreateWebStream(); WebFileFetch fetch = new WebFileFetch(ws); fetch.DownLoadBufferSize = PodcasCo.UserSetting.DownLoadBufferSize; if (fetchEventHandler != null) { fetch.Fetch += fetchEventHandler; } if (fetchingEventHandler != null) { fetch.Fetching += fetchingEventHandler; } if (fetchedEventHandler != null) { fetch.Fetched += fetchedEventHandler; } fetch.FetchFile(fileName); } catch (AlreadyFetchFileException) { // ファイルがすでに存在する場合は何もしない ; } } finally { if (ws != null) { ws.Close(); } } }