<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <link rel="stylesheet" href="style.css" type="text/css"> <meta content="text/html; charset=iso-8859-1" http-equiv="Content-Type"> <link rel="Start" href="index.html"> <link rel="previous" href="Http_headers.html"> <link rel="next" href="Ocsigen_headers.html"> <link rel="Up" href="index.html"> <link title="Index of types" rel=Appendix href="index_types.html"> <link title="Index of exceptions" rel=Appendix href="index_exceptions.html"> <link title="Index of values" rel=Appendix href="index_values.html"> <link title="Index of class methods" rel=Appendix href="index_methods.html"> <link title="Index of classes" rel=Appendix href="index_classes.html"> <link title="Index of modules" rel=Appendix href="index_modules.html"> <link title="Index of module types" rel=Appendix href="index_module_types.html"> <link title="Ocsigen_cache" rel="Chapter" href="Ocsigen_cache.html"> <link title="Ocsigen_lib_base" rel="Chapter" href="Ocsigen_lib_base.html"> <link title="Ocsigen_lib" rel="Chapter" href="Ocsigen_lib.html"> <link title="Ocsigen_config" rel="Chapter" href="Ocsigen_config.html"> <link title="Ocsigen_getcommandline" rel="Chapter" href="Ocsigen_getcommandline.html"> <link title="Ocsigen_messages" rel="Chapter" href="Ocsigen_messages.html"> <link title="Ocsigen_stream" rel="Chapter" href="Ocsigen_stream.html"> <link title="Ocsigen_loader" rel="Chapter" href="Ocsigen_loader.html"> <link title="Polytables" rel="Chapter" href="Polytables.html"> <link title="Http_headers" rel="Chapter" href="Http_headers.html"> <link title="Ocsigen_http_frame" rel="Chapter" href="Ocsigen_http_frame.html"> <link title="Ocsigen_headers" rel="Chapter" href="Ocsigen_headers.html"> <link title="Framepp" rel="Chapter" href="Framepp.html"> <link title="Ocsigen_http_com" rel="Chapter" href="Ocsigen_http_com.html"> <link title="Ocsigen_charset_mime" rel="Chapter" href="Ocsigen_charset_mime.html"> <link title="Ocsigen_senders" rel="Chapter" href="Ocsigen_senders.html"> <link title="Ocsigen_cookies" rel="Chapter" href="Ocsigen_cookies.html"> <link title="Ocsigen_extensions" rel="Chapter" href="Ocsigen_extensions.html"> <link title="Ocsigen_parseconfig" rel="Chapter" href="Ocsigen_parseconfig.html"> <link title="Ocsigen_http_client" rel="Chapter" href="Ocsigen_http_client.html"> <link title="Ocsigen_local_files" rel="Chapter" href="Ocsigen_local_files.html"> <link title="Ocsigen_server" rel="Chapter" href="Ocsigen_server.html"> <link title="Ocsigen_comet" rel="Chapter" href="Ocsigen_comet.html"> <link title="Accesscontrol" rel="Chapter" href="Accesscontrol.html"> <link title="Authbasic" rel="Chapter" href="Authbasic.html"> <link title="Ocsipersist" rel="Chapter" href="Ocsipersist.html"><title>Ocsigen_http_frame</title> </head> <body> <div class="navbar"><a class="pre" href="Http_headers.html" title="Http_headers">Previous</a> <a class="up" href="index.html" title="Index">Up</a> <a class="post" href="Ocsigen_headers.html" title="Ocsigen_headers">Next</a> </div> <h1>Module <a href="type_Ocsigen_http_frame.html">Ocsigen_http_frame</a></h1> <pre><span class="keyword">module</span> Ocsigen_http_frame: <code class="code">sig</code> <a href="Ocsigen_http_frame.html">..</a> <code class="code">end</code></pre><div class="info module top"> <code class="code">compute_new_ri_cookies now path ri_cookies cookies_to_set</code> adds the cookies from <code class="code">cookies_to_set</code> to <code class="code">ri_cookies</code>, as if the cookies had been send to the browser and the browser was doing a new request to the url <code class="code">path</code>. Only the cookies that match <code class="code">path</code> (current path) are added.<br> </div> <hr width="100%"> <pre><span id="TYPEetag"><span class="keyword">type</span> <code class="type"></code>etag</span> = <code class="type">string</code> </pre> <pre><span id="VALcompute_new_ri_cookies"><span class="keyword">val</span> compute_new_ri_cookies</span> : <code class="type">float -><br> string list -><br> string Ocsigen_lib.String.Table.t -><br> <a href="Ocsigen_cookies.html#TYPEcookie">Ocsigen_cookies.cookie</a> Ocsigen_lib.String.Table.t Ocsigen_cookies.Cookies.t -><br> string Ocsigen_lib.String.Table.t</code></pre><div class="info "> <code class="code">compute_new_ri_cookies now path ri_cookies cookies_to_set</code> adds the cookies from <code class="code">cookies_to_set</code> to <code class="code">ri_cookies</code>, as if the cookies had been send to the browser and the browser was doing a new request to the url <code class="code">path</code>. Only the cookies that match <code class="code">path</code> (current path) are added.<br> </div> <pre><code><span id="TYPEresult"><span class="keyword">type</span> <code class="type"></code>result</span> = {</code></pre><table class="typetable"> <tr> <td align="left" valign="top" > <code> </code></td> <td align="left" valign="top" > <code><span id="TYPEELTresult.res_cookies">res_cookies</span> : <code class="type"><a href="Ocsigen_cookies.html#TYPEcookieset">Ocsigen_cookies.cookieset</a></code>;</code></td> <td class="typefieldcomment" align="left" valign="top" ><code>(*</code></td><td class="typefieldcomment" align="left" valign="top" >cookies to set</td><td class="typefieldcomment" align="left" valign="bottom" ><code>*)</code></td> </tr> <tr> <td align="left" valign="top" > <code> </code></td> <td align="left" valign="top" > <code><span id="TYPEELTresult.res_lastmodified">res_lastmodified</span> : <code class="type">float option</code>;</code></td> <td class="typefieldcomment" align="left" valign="top" ><code>(*</code></td><td class="typefieldcomment" align="left" valign="top" >Default: <code class="code">None</code></td><td class="typefieldcomment" align="left" valign="bottom" ><code>*)</code></td> </tr> <tr> <td align="left" valign="top" > <code> </code></td> <td align="left" valign="top" > <code><span id="TYPEELTresult.res_etag">res_etag</span> : <code class="type"><a href="Ocsigen_http_frame.html#TYPEetag">etag</a> option</code>;</code></td> </tr> <tr> <td align="left" valign="top" > <code> </code></td> <td align="left" valign="top" > <code><span id="TYPEELTresult.res_code">res_code</span> : <code class="type">int</code>;</code></td> <td class="typefieldcomment" align="left" valign="top" ><code>(*</code></td><td class="typefieldcomment" align="left" valign="top" >HTTP code, if not 200</td><td class="typefieldcomment" align="left" valign="bottom" ><code>*)</code></td> </tr> <tr> <td align="left" valign="top" > <code> </code></td> <td align="left" valign="top" > <code><span id="TYPEELTresult.res_stream">res_stream</span> : <code class="type">string <a href="Ocsigen_stream.html#TYPEt">Ocsigen_stream.t</a> *<br> (string <a href="Ocsigen_stream.html#TYPEt">Ocsigen_stream.t</a> -> int64 -> string <a href="Ocsigen_stream.html#TYPEstep">Ocsigen_stream.step</a> Lwt.t) option</code>;</code></td> <td class="typefieldcomment" align="left" valign="top" ><code>(*</code></td><td class="typefieldcomment" align="left" valign="top" >Default: empty stream. The second field is (optionaly) the function used to skip a part of the stream, if you do not you want to use a basic reading of the stream. For example, for static files, you can optimize it by using a <code class="code">seek</code> function.</td><td class="typefieldcomment" align="left" valign="bottom" ><code>*)</code></td> </tr> <tr> <td align="left" valign="top" > <code> </code></td> <td align="left" valign="top" > <code><span id="TYPEELTresult.res_content_length">res_content_length</span> : <code class="type">int64 option</code>;</code></td> <td class="typefieldcomment" align="left" valign="top" ><code>(*</code></td><td class="typefieldcomment" align="left" valign="top" ><code class="code">None</code> means Transfer-encoding: chunked</td><td class="typefieldcomment" align="left" valign="bottom" ><code>*)</code></td> </tr> <tr> <td align="left" valign="top" > <code> </code></td> <td align="left" valign="top" > <code><span id="TYPEELTresult.res_content_type">res_content_type</span> : <code class="type">string option</code>;</code></td> </tr> <tr> <td align="left" valign="top" > <code> </code></td> <td align="left" valign="top" > <code><span id="TYPEELTresult.res_headers">res_headers</span> : <code class="type"><a href="Http_headers.html#TYPEt">Http_headers.t</a></code>;</code></td> <td class="typefieldcomment" align="left" valign="top" ><code>(*</code></td><td class="typefieldcomment" align="left" valign="top" >The headers you want to add</td><td class="typefieldcomment" align="left" valign="bottom" ><code>*)</code></td> </tr> <tr> <td align="left" valign="top" > <code> </code></td> <td align="left" valign="top" > <code><span id="TYPEELTresult.res_charset">res_charset</span> : <code class="type">string option</code>;</code></td> <td class="typefieldcomment" align="left" valign="top" ><code>(*</code></td><td class="typefieldcomment" align="left" valign="top" >Default: None</td><td class="typefieldcomment" align="left" valign="bottom" ><code>*)</code></td> </tr> <tr> <td align="left" valign="top" > <code> </code></td> <td align="left" valign="top" > <code><span id="TYPEELTresult.res_location">res_location</span> : <code class="type">string option</code>;</code></td> <td class="typefieldcomment" align="left" valign="top" ><code>(*</code></td><td class="typefieldcomment" align="left" valign="top" >Default: None</td><td class="typefieldcomment" align="left" valign="bottom" ><code>*)</code></td> </tr></table> } <div class="info "> The type of answers to send<br> </div> <pre><span id="VALdefault_result"><span class="keyword">val</span> default_result</span> : <code class="type">unit -> <a href="Ocsigen_http_frame.html#TYPEresult">result</a></code></pre><div class="info "> Default <code class="code">result</code> to use as a base for constructing others.<br> </div> <pre><span id="VALempty_result"><span class="keyword">val</span> empty_result</span> : <code class="type">unit -> <a href="Ocsigen_http_frame.html#TYPEresult">result</a></code></pre><div class="info "> <code class="code">result</code> for an empty page.<br> </div> <pre><span class="keyword">module type</span> <a href="Ocsigen_http_frame.HTTP_CONTENT.html">HTTP_CONTENT</a> = <code class="code">sig</code> <a href="Ocsigen_http_frame.HTTP_CONTENT.html">..</a> <code class="code">end</code></pre> <pre><span class="keyword">module</span> <a href="Ocsigen_http_frame.Http_header.html">Http_header</a>: <code class="code">sig</code> <a href="Ocsigen_http_frame.Http_header.html">..</a> <code class="code">end</code></pre> <pre><span class="keyword">module</span> <a href="Ocsigen_http_frame.Http_error.html">Http_error</a>: <code class="code">sig</code> <a href="Ocsigen_http_frame.Http_error.html">..</a> <code class="code">end</code></pre> <pre><code><span id="TYPEt"><span class="keyword">type</span> <code class="type"></code>t</span> = {</code></pre><table class="typetable"> <tr> <td align="left" valign="top" > <code> </code></td> <td align="left" valign="top" > <code><span id="TYPEELTt.frame_header">frame_header</span> : <code class="type"><a href="Ocsigen_http_frame.Http_header.html#TYPEhttp_header">Http_header.http_header</a></code>;</code></td> </tr> <tr> <td align="left" valign="top" > <code> </code></td> <td align="left" valign="top" > <code><span id="TYPEELTt.frame_content">frame_content</span> : <code class="type">string <a href="Ocsigen_stream.html#TYPEt">Ocsigen_stream.t</a> option</code>;</code></td> </tr> <tr> <td align="left" valign="top" > <code> </code></td> <td align="left" valign="top" > <code><span id="TYPEELTt.frame_abort">frame_abort</span> : <code class="type">unit -> unit Lwt.t</code>;</code></td> </tr></table> } <div class="info "> The type of HTTP frames. The content may be void (no body) or a stream. While sending, a stream will be sent with chunked encoding if no content-length is supplied. abort is the function to be called if you want to cancel the stream reading (closes the connection).<br> </div> </body></html>