From 0cc96c69b3fce09a9c4a8d467d17cfbda76bc02f Mon Sep 17 00:00:00 2001
From: Garrett D'Amore <garrett@damore.org>
Date: Thu, 30 Aug 2018 14:23:39 -0700
Subject: fixes #681 HTTP convenience GET method desired...

This adds a couple of new methods, and related documentation
and test cases.
---
 docs/man/nng_http_client_transact.3http.adoc | 89 ++++++++++++++++++++++++++++
 1 file changed, 89 insertions(+)
 create mode 100644 docs/man/nng_http_client_transact.3http.adoc

(limited to 'docs/man/nng_http_client_transact.3http.adoc')

diff --git a/docs/man/nng_http_client_transact.3http.adoc b/docs/man/nng_http_client_transact.3http.adoc
new file mode 100644
index 00000000..a469dc50
--- /dev/null
+++ b/docs/man/nng_http_client_transact.3http.adoc
@@ -0,0 +1,89 @@
+= nng_http_client_transact(3http)
+//
+// Copyright 2018 Staysail Systems, Inc. <info@staysail.tech>
+// Copyright 2018 Capitar IT Group BV <info@capitar.com>
+//
+// This document is supplied under the terms of the MIT License, a
+// copy of which should be located in the distribution where this
+// file was obtained (LICENSE.txt).  A copy of the license may also be
+// found online at https://opensource.org/licenses/MIT.
+//
+
+== NAME
+
+nng_http_client_transact - perform one HTTP transaction
+
+== SYNOPSIS
+
+[source, c]
+----
+#include <nng/nng.h>
+#include <nng/supplemental/http/http.h>
+
+void nng_http_client_transact(nng_http_client *client, nng_http_req *req,
+    nng_http_res *res, nng_aio *aio);
+----
+
+== DESCRIPTION
+
+The `nng_http_client_transact()` function is used to perform a complete
+HTTP exchange.
+It creates a new connection using _client_, performs the transaction by
+sending the request _req_
+(and attached body data) to the remote server, then reading the response
+_res_, and finally closes the connection that it created.
+The entire response is read, including any associated body, which can
+subsequently be obtained using
+`<<nng_http_res_get_data.3http#,nng_http_res_get_data()>>`.
+
+This function is intended to make creation of client applications easier,
+by performing multiple asynchronous operations required to complete an
+entire HTTP transaction.
+
+A similar function,
+`<<nng_http_conn_transact.3http#,nng_http_conn_transact()>>`,
+exists.
+That function behaves similarily, but uses an existing connection, which
+can be reused.
+
+NOTE: This function does not support reading data sent using chunked
+transfer encoding, and if the server attempts to do so, the underlying
+connection will be closed and an `NNG_ENOTSUP` error will be returned.
+This limitation is considered a bug, and a fix is planned for the future.
+
+WARNING: If the remote server tries to send an extremely large buffer,
+then a corresponding allocation will be made, which can lead to denial
+of service attacks.
+Client applications should take care to use this only with reasonably
+trust-worthy servers.
+
+This function returns immediately, with no return value.
+Completion of the operation is signaled via the _aio_, and the final result
+may be obtained via `<<nng_aio_result.3#,nng_aio_result()>>`.
+That result will either be zero or an error code.
+
+== RETURN VALUES
+
+None.
+
+== ERRORS
+
+[horizontal]
+`NNG_ECANCELED`:: The operation was canceled.
+`NNG_ECLOSED`:: The connection was closed.
+`NNG_ECONNRESET`:: The peer closed the connection.
+`NNG_ENOMEM`:: Insufficient free memory to perform the operation.
+`NNG_ENOTSUP`:: HTTP operations are not supported, or peer sent chunked encoding.
+`NNG_EPROTO`:: An HTTP protocol error occurred.
+`NNG_ETIMEDOUT`:: Timeout waiting for data from the connection.
+
+== SEE ALSO
+
+[.text-left]
+<<nng_aio_alloc.3#,nng_aio_alloc(3)>>,
+<<nng_aio_result.3#,nng_aio_result(3)>>,
+<<nng_strerror.3#,nng_strerror(3)>>,
+<<nng_http_client_connect.3http#,nng_http_client_connect(3http)>>,
+<<nng_http_conn_transact.3http#,nng_http_conn_transact(3http)>>,
+<<nng_http_res_get_data.3http#,nng_http_res_get_data(3http)>>,
+<<nng.7#,nng(7)>>
-- 
cgit v1.2.3-70-g09d2

