1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173
|
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/1999/REC-html401-19991224/loose.dtd">
<html>
<head>
<title>Castle Game Engine: CastleDownload</title>
<meta name="generator" content="PasDoc 0.13.0">
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<link rel="StyleSheet" type="text/css" href="pasdoc.css">
</head>
<body>
<table class="container"><tr><td class="navigation">
<h2>Castle Game Engine</h2><p><a href="introduction.html" class="navigation">Introduction</a></p><p><a href="AllUnits.html" class="navigation">Units</a></p><p><a href="ClassHierarchy.html" class="navigation">Class Hierarchy</a></p><p><a href="AllClasses.html" class="navigation">Classes, Interfaces, Objects and Records</a></p><p><a href="AllTypes.html" class="navigation">Types</a></p><p><a href="AllVariables.html" class="navigation">Variables</a></p><p><a href="AllConstants.html" class="navigation">Constants</a></p><p><a href="AllFunctions.html" class="navigation">Functions and Procedures</a></p><p><a href="AllIdentifiers.html" class="navigation">Identifiers</a></p></td><td class="content">
<h1 class="unit">Unit CastleDownload</h1>
<table class="sections wide_list">
<tr>
<td><a class="section" href="#PasDoc-Description">Description</a></td><td><a class="section" href="#PasDoc-Uses">Uses</a></td><td><a class="section" href="#PasDoc-Classes">Classes, Interfaces, Objects and Records</a></td><td><a class="section" href="#PasDoc-FuncsProcs">Functions and Procedures</a></td><td><a class="section" href="#PasDoc-Types">Types</a></td><td><a class="section" href="#PasDoc-Constants">Constants</a></td><td><a class="section" href="#PasDoc-Variables">Variables</a></td></tr></table>
<a name="PasDoc-Description"></a><h2 class="description">Description</h2>
<p>
Download URLs.</p>
<a name="PasDoc-Uses"></a><h2 class="uses">Uses</h2>
<ul class="useslist"><li>SysUtils</li><li>Classes</li><li>FpHttpClient</li></ul><h2 class="overview">Overview</h2>
<a name="PasDoc-Classes"></a><h3 class="cio">Classes, Interfaces, Objects and Records</h3>
<table class="classestable wide_list">
<tr class="listheader">
<th class="itemname">Name</th>
<th class="itemdesc">Description</th>
</tr>
<tr class="list">
<td class="itemname">Class <a class="bold" href="CastleDownload.EDownloadError.html"><code>EDownloadError</code></a></td>
<td class="itemdesc"> </td>
</tr>
</table>
<a name="PasDoc-FuncsProcs"></a><h3 class="summary">Functions and Procedures</h3>
<table class="summary wide_list">
<tr class="list">
<td class="itemcode"><code>function <b><a href="CastleDownload.html#Download">Download</a></b>(const URL: string; const Options: <a href="CastleDownload.html#TStreamOptions">TStreamOptions</a> = []): TStream;</code></td>
</tr>
<tr class="list2">
<td class="itemcode"><code>function <b><a href="CastleDownload.html#Download">Download</a></b>(const URL: string; const Options: <a href="CastleDownload.html#TStreamOptions">TStreamOptions</a>; out MimeType: string): TStream;</code></td>
</tr>
<tr class="list">
<td class="itemcode"><code>function <b><a href="CastleDownload.html#URLSaveStream">URLSaveStream</a></b>(const URL: string; const Options: <a href="CastleDownload.html#TStreamOptions">TStreamOptions</a> = []): TStream;</code></td>
</tr>
</table>
<a name="PasDoc-Types"></a><h3 class="summary">Types</h3>
<table class="summary wide_list">
<tr class="list">
<td class="itemcode"><code><b><a href="CastleDownload.html#TStreamOption">TStreamOption</a></b> = (...);</code></td>
</tr>
<tr class="list2">
<td class="itemcode"><code><b><a href="CastleDownload.html#TStreamOptions">TStreamOptions</a></b> = set of <a href="CastleDownload.html#TStreamOption">TStreamOption</a>;</code></td>
</tr>
</table>
<a name="PasDoc-Constants"></a><h3 class="summary">Constants</h3>
<table class="summary wide_list">
<tr class="list">
<td class="itemcode"><code><b><a href="CastleDownload.html#DefaultEnableNetwork">DefaultEnableNetwork</a></b> = false;</code></td>
</tr>
</table>
<a name="PasDoc-Variables"></a><h3 class="summary">Variables</h3>
<table class="summary wide_list">
<tr class="list">
<td class="itemcode"><code><b><a href="CastleDownload.html#EnableNetwork">EnableNetwork</a></b>: boolean = <a href="CastleDownload.html#DefaultEnableNetwork">DefaultEnableNetwork</a>;</code></td>
</tr>
</table>
<h2 class="description">Description</h2>
<h3 class="detail">Functions and Procedures</h3>
<table class="detail wide_list">
<tr class="list">
<td class="itemcode"><a name="Download"></a><code>function <b>Download</b>(const URL: string; const Options: <a href="CastleDownload.html#TStreamOptions">TStreamOptions</a> = []): TStream;</code></td>
</tr>
<tr><td colspan="1">
<p>
Return a stream to read given URL. Returned stream is suitable only for reading, and the initial position is always at the beginning. Overloaded version also returns a MIME type (or '' if unknown).
<p>All errors are reported by raising exceptions.
<p>A local file URL is always supported, without using any networking library. URL without any protocol is always treated like a local filename (absolute or relative to current dir), so this function can be a drop-in replacement for normal file reading. The MIME type for local files is guessed based on their extension.
<p>A data URI scheme (<a href="http://en.wikipedia.org/wiki/Data_URI_scheme">http://en.wikipedia.org/wiki/Data_URI_scheme</a>) is also always supported. The MIME type for such content is specified explicitly in URI. TODO: right now, soGzip is ignored for data URIs, we never filter them through gunzip.
<p>It also automatically supports protocols to embed script contents: ecmascript, javascript (see VRML and X3D specifications), <a class="normal" href="CastleScript.html">castlescript</a>, kambiscript (see <a href="http://castle-engine.sourceforge.net/castle_script.php">http://castle-engine.sourceforge.net/castle_script.php</a>), compiled (<a href="http://castle-engine.sourceforge.net/x3d_extensions.php#section_ext_script_compiled">http://castle-engine.sourceforge.net/x3d_extensions.php#section_ext_script_compiled</a>). The MIME type for these is implied by the protocol (like "application/javascript" for ecmascript/javascript), and the returned stream simply contains script code.
<p>Set <a class="normal" href="CastleDownload.html#EnableNetwork">EnableNetwork</a> to <code>True</code> to have also support for network protocols. Right now this means only http, handled by FpHttpClient. The MIME type for such content is usually reported by the http server (but if the server doesn't report MIME type, we still try to guess it, looking at URL using <a class="normal" href="CastleURIUtils.html#URIMimeType">URIMimeType</a>).
<p>On Android, URLs that indicate assets (files packaged inside .apk) are also supported, as <code>assets:/my_file.png</code>.</p>
</td></tr>
</table>
<table class="detail wide_list">
<tr class="list">
<td class="itemcode"><a name="Download"></a><code>function <b>Download</b>(const URL: string; const Options: <a href="CastleDownload.html#TStreamOptions">TStreamOptions</a>; out MimeType: string): TStream;</code></td>
</tr>
<tr><td colspan="1">
</td></tr>
</table>
<table class="detail wide_list">
<tr class="list">
<td class="itemcode"><a name="URLSaveStream"></a><code>function <b>URLSaveStream</b>(const URL: string; const Options: <a href="CastleDownload.html#TStreamOptions">TStreamOptions</a> = []): TStream;</code></td>
</tr>
<tr><td colspan="1">
<p>
Create a stream to save a given URL, for example create a TFileStream to save a file for a <code>file</code> URL. In other words, perform <i>upload</i>. Right now, this only works for <code>file</code> URLs, and the only advantage it has over manually creating TFileStream is that this accepts URLs.</p>
</td></tr>
</table>
<h3 class="detail">Types</h3>
<table class="detail wide_list">
<tr class="list">
<td class="itemcode"><a name="TStreamOption"></a><code><b>TStreamOption</b> = (...);</code></td>
</tr>
<tr><td colspan="1">
<p>
Options for the <a class="normal" href="CastleDownload.html#Download">Download</a> and <a class="normal" href="CastleDownload.html#URLSaveStream">URLSaveStream</a> functions.</p>
<h6 class="description_section">Values</h6>
<ul>
<li>
soForceMemoryStream: Force result to be a TMemoryStream, with contents fully loaded to the memory, and freely seekable (you can move back and forth within). Without this option, <a class="normal" href="CastleDownload.html#Download">Download</a> may return other streams, for example TFileStream (that may not have good buffering, depending on OS) or TBase64DecodingStream (that may not allow seeking).
<p>Using TMemoryStream means that reading is fast and comfortable, but eats memory and doesn't allow to simultaneously read and process the contents (the file must be fully loaded, e.g. downloaded from the Internet, and ungzipped, before this function returns). So use this option only for files that aren't too big.
<p>For larger files, you usually don't want to use this option, instead wrap result in <a class="normal" href="CastleClassUtils.TBufferedReadStream.html">TBufferedReadStream</a>.</li>
<li>
soGzip: Filter the contents through gzip decompression (for <a class="normal" href="CastleDownload.html#Download">Download</a>) or compression (for <a class="normal" href="CastleDownload.html#URLSaveStream">URLSaveStream</a>).</li>
</ul>
</td></tr>
</table>
<table class="detail wide_list">
<tr class="list">
<td class="itemcode"><a name="TStreamOptions"></a><code><b>TStreamOptions</b> = set of <a href="CastleDownload.html#TStreamOption">TStreamOption</a>;</code></td>
</tr>
<tr><td colspan="1">
</td></tr>
</table>
<h3 class="detail">Constants</h3>
<table class="detail wide_list">
<tr class="list">
<td class="itemcode"><a name="DefaultEnableNetwork"></a><code><b>DefaultEnableNetwork</b> = false;</code></td>
</tr>
<tr><td colspan="1">
</td></tr>
</table>
<h3 class="detail">Variables</h3>
<table class="detail wide_list">
<tr class="list">
<td class="itemcode"><a name="EnableNetwork"></a><code><b>EnableNetwork</b>: boolean = <a href="CastleDownload.html#DefaultEnableNetwork">DefaultEnableNetwork</a>;</code></td>
</tr>
<tr><td colspan="1">
<p>
Can <a class="normal" href="CastleDownload.html#Download">Download</a> actually use the network. As all the downloading is blocking for now, this is initially <code>False</code>. If you want to really use the network, change it to <code>True</code>.</p>
</td></tr>
</table>
<!-- Piwik -->
<script type="text/javascript">
var _paq = _paq || [];
_paq.push(["trackPageView"]);
_paq.push(["enableLinkTracking"]);
(function() {
var u=(("https:" == document.location.protocol) ? "https" : "http") + "://michalis.ii.uni.wroc.pl/piwik-castle-engine/";
_paq.push(["setTrackerUrl", u+"piwik.php"]);
_paq.push(["setSiteId", "1"]);
var d=document, g=d.createElement("script"), s=d.getElementsByTagName("script")[0]; g.type="text/javascript";
g.defer=true; g.async=true; g.src=u+"piwik.js"; s.parentNode.insertBefore(g,s);
})();
</script>
<!-- End Piwik Code -->
<noscript>
<!-- Piwik Image Tracker -->
<img src="http://michalis.ii.uni.wroc.pl/piwik-castle-engine/piwik.php?idsite=1&rec=1" style="border:0" alt="" />
<!-- End Piwik -->
</noscript>
<hr noshade size="1"><span class="appinfo"><em>Generated by <a href="http://pasdoc.sourceforge.net/">PasDoc 0.13.0</a> on 2015-06-15 04:43:09</em>
</span>
</td></tr></table></body></html>
|