summaryrefslogtreecommitdiff
path: root/ref/api/http.html
diff options
context:
space:
mode:
Diffstat (limited to 'ref/api/http.html')
-rw-r--r--ref/api/http.html37
1 files changed, 16 insertions, 21 deletions
diff --git a/ref/api/http.html b/ref/api/http.html
index bec909b9..19c182af 100644
--- a/ref/api/http.html
+++ b/ref/api/http.html
@@ -256,7 +256,7 @@ and so forth. This function silently truncates any method to 32-characters. (The
<p>The <a name="a003"></a><code>nng_http_get_method</code> function is used, typically on a server, to retrieve the method the client
set when issuing the transaction.</p>
<h3 id="http-uri"><a class="header" href="#http-uri">HTTP URI</a></h3>
-<pre><code class="language-c">int nng_http_set_uri(nng_http *conn, const char *uri, const char *query);
+<pre><code class="language-c">nng_err nng_http_set_uri(nng_http *conn, const char *uri, const char *query);
const char *nng_http_get_uri(nng_http *conn);
</code></pre>
<p>The <a name="a004"></a><code>nng_http_set_uri</code> function sets the <a name="a005"></a>URI, which normally appears like a path such as “/docs/index.html”,
@@ -275,7 +275,7 @@ or <a href="/api/errors.html#NNG_EINVAL"><code>NNG_EINVAL</code></a> if there is
If the URI is unset (such as for a freshly created connection), then it returns <code>NULL</code>. The returned value
will have any query concentated, for example “/api/get_user.cgi?name=garrett”.</p>
<h3 id="http-version"><a class="header" href="#http-version">HTTP Version</a></h3>
-<pre><code class="language-c">int nng_http_set_version(nng_http *conn, const char *version);
+<pre><code class="language-c">nng_err nng_http_set_version(nng_http *conn, const char *version);
const char *nng_http_get_version(nng_http *conn);
</code></pre>
<p>The <a name="a007"></a><code>nng_http_set_version</code> function is used to select the HTTP protocol version to use for the
@@ -300,9 +300,10 @@ It might be easiest to just fail any request coming in that is not HTTP/1.1.</p>
<p>NNG does not support HTTP/2 or HTTP/3 at this time.</p>
</div>
<h3 id="http-status"><a class="header" href="#http-status">HTTP Status</a></h3>
-<pre><code class="language-c">uint16_t nng_http_get_status(nng_http *conn);
+<pre><code class="language-c">typedef enum ... nng_http_status;
+nng_http_status nng_http_get_status(nng_http *conn);
const char *nng_http_get_reason(nng_http_conn *conn);
-void nng_http_set_status(nng_http *conn, uint16_t status, const char *reason);
+void nng_http_set_status(nng_http *conn, nng_http_status status, const char *reason);
</code></pre>
<p>The <a name="a009"></a><code>nng_http_get_status</code> function obtains the numeric code (typipcally numbered from 100 through 599) returned
by the server in the last exchange on <em>conn</em>. (If no exchange has been performed yet, the result is undefined.)</p>
@@ -401,8 +402,8 @@ the header name and value. It also updates <em>next</em>, which should be used f
<p>Once <code>nng_http_next_header</code> returns <code>false</code>, further calls with the same parameters will continue to do so.
The scan can be rest by setting <em>next</em> to <code>NULL</code>.</p>
<h3 id="modifying-headers"><a class="header" href="#modifying-headers">Modifying Headers</a></h3>
-<pre><code class="language-c">int nng_http_add_header(nng_http *conn, const char *key, const char *val);
-int nng_http_set_header(nng_http *conn, const char *key, const char *val);
+<pre><code class="language-c">nng_err nng_http_add_header(nng_http *conn, const char *key, const char *val);
+nng_err nng_http_set_header(nng_http *conn, const char *key, const char *val);
void nng_http_del_header(nng_http *conn, const char *key);
</code></pre>
<p>The <a name="a014"></a><code>nng_http_add_header</code>, <a name="a015"></a><code>nng_http_set_header</code>, and <a name="a016"></a><code>nng_http_del_header</code> functions are
@@ -495,7 +496,7 @@ operations until the the entire amount of data requested by the <a href="/api/ai
<p>These functions are most likely to be useful after hijacking the connection with <a href="/api/http.html#hijacking-connections"><code>nng_http_hijack</code></a>.
They can be used to transfer request or response body data as well.</p>
<h3 id="hijacking-connections"><a class="header" href="#hijacking-connections">Hijacking Connections</a></h3>
-<pre><code class="language-c">void nng_http_hijack(nng_http_conn *conn);
+<pre><code class="language-c">nng_err nng_http_hijack(nng_http *conn);
</code></pre>
<p>TODO: This API will change to convert the conn into a stream object.</p>
<p>The <a name="a026"></a><code>nng_http_hijack</code> function hijacks the connection <em>conn</em>, causing it
@@ -550,8 +551,8 @@ of its resources.</p>
and must be closed explicitly as needed.</p>
</div>
<h3 id="client-tls"><a class="header" href="#client-tls">Client TLS</a></h3>
-<pre><code class="language-c">int nng_http_client_get_tls(nng_http_client *client, nng_tls_config **tlsp);
-int nng_http_client_set_tls(nng_http_client *client, nng_tls_config *tls);
+<pre><code class="language-c">nng_err nng_http_client_get_tls(nng_http_client *client, nng_tls_config **tlsp);
+nng_err nng_http_client_set_tls(nng_http_client *client, nng_tls_config *tls);
</code></pre>
<p>The <a name="a030"></a><code>nng_http_client_get_tls</code> and <a name="a031"></a><code>nng_http_client_set_tls</code> functions are used to
retrieve or change the <a href="/TODO.html">TLS configuration</a> used when making outbound connections, enabling
@@ -609,17 +610,11 @@ if ((rv = nng_aio_result(aio)) != 0) {
}
</code></pre>
<h3 id="preparing-a-transaction"><a class="header" href="#preparing-a-transaction">Preparing a Transaction</a></h3>
-<pre><code class="language-c">int nng_http_set_version(nng_http *conn, const char *version);
-int nng_http_set_uri(nng_http *conn, const char *uri);
-</code></pre>
-<p>The <a name="a034"></a><code>nng_http_set_uri</code> function provides a URI for the transaction. This will be used to
-set the URI for the request. The URI typically appears like a path, starting with “/”, although
-it may also contain a query string.</p>
<h3 id="request-body"><a class="header" href="#request-body">Request Body</a></h3>
<h3 id="sending-the-request"><a class="header" href="#sending-the-request">Sending the Request</a></h3>
<pre><code class="language-c">void nng_http_write_request(nng_http *conn, nng_aio *aio);
</code></pre>
-<p>The <a name="a035"></a><code>nng_http_write_request</code> function starts an asynchronous write of
+<p>The <a name="a034"></a><code>nng_http_write_request</code> function starts an asynchronous write of
the HTTP request associated with <em>conn</em>.
The entire request is sent,
including headers, and if present, the request body data.
@@ -639,7 +634,7 @@ which provides a simpler interface for performing a complete HTTP client transac
<h2 id="obtaining-the-response"><a class="header" href="#obtaining-the-response">Obtaining the Response</a></h2>
<pre><code class="language-c">void nng_http_read_response(nng_http *conn, nng_aio *aio);
</code></pre>
-<p>The <a name="a036"></a><code>nng_http_read_response</code> function starts an asynchronous read from the
+<p>The <a name="a035"></a><code>nng_http_read_response</code> function starts an asynchronous read from the
HTTP connection <em>conn</em>, reading an HTTP response into the response associated with <em>conn</em>, including all
of the related headers.</p>
<p>It does <em>not</em> transfer any response body. To do that, use <a href="/api/http.html#direct-read-and-write"><code>nng_http_read_all</code></a> or <a href="/api/http.html#direct-read-and-write"><code>nng_http_read</code></a>.</p>
@@ -659,11 +654,11 @@ need to do so may use the direct read functions.</p>
<p>An easier one-shot method for many use cases might be [<code>nng_http_transact</code>].</p>
</div>
<h3 id="submitting-the-transaction"><a class="header" href="#submitting-the-transaction">Submitting the Transaction</a></h3>
-<pre><code class="language-c">int nng_http_transact(nng_http *conn, nng_aio *aio);
+<pre><code class="language-c">void nng_http_transact(nng_http *conn, nng_aio *aio);
</code></pre>
-<p>The HTTP request is issued, and the response processed, asynchronously by the <a name="a037"></a><code>nng_http_transact</code> function.
+<p>The HTTP request is issued, and the response processed, asynchronously by the <a name="a036"></a><code>nng_http_transact</code> function.
When the function is complete, the <em>aio</em> will be notified.</p>
-<p>The <a name="a038"></a><code>nng_http_transact</code> function is used to perform a complete
+<p>The <a name="a037"></a><code>nng_http_transact</code> function is used to perform a complete
HTTP exchange over the connection <em>conn</em>, sending the request
and attached body data to the remote server, and reading the response.</p>
<p>The entire response is read, including any associated body, which can
@@ -704,7 +699,7 @@ may be obtained via [<code>nng_aio_result()</code>].</p>
</code></pre>
<p>Normally the server will send any attached response, but there are circumstances where
a response must be sent manually, such as when <a href="/api/http.html#hijacking-connections">hijacking</a> a connection.</p>
-<p>In such a case, <a name="a039"></a><code>nng_http_write_response</code> can be called, which will send the response and any attached data, asynchronously
+<p>In such a case, <a name="a038"></a><code>nng_http_write_response</code> can be called, which will send the response and any attached data, asynchronously
using the <a href="/api/aio.html#asynchronous-io-handle"><code>nng_aio</code></a> <em>aio</em>.</p>
<p>By default, for <code>HTTP/1.1</code> connections, the connection is kept open, and
will be reused to receive new requests. For <code>HTTP/1.0</code>, or if the client has requested