From 5ebb88f0efb0112f77f9092d3e10229f41cdaeda Mon Sep 17 00:00:00 2001 From: Dimitri Lozeve Date: Sun, 1 Oct 2023 19:17:17 +0200 Subject: [PATCH] Add license and readme --- LICENSE | 28 ++++++++++++++++++++++++++++ README.org | 40 ++++++++++++++++++++++++++++++++++++++++ 2 files changed, 68 insertions(+) create mode 100644 LICENSE create mode 100644 README.org diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..1a6cd73 --- /dev/null +++ b/LICENSE @@ -0,0 +1,28 @@ +BSD 3-Clause License + +Copyright (c) 2023, Dimitri Lozeve + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + +1. Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + +2. Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + +3. Neither the name of the copyright holder nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/README.org b/README.org new file mode 100644 index 0000000..2379e8b --- /dev/null +++ b/README.org @@ -0,0 +1,40 @@ +* BQN HTTP library + +FFI bindings to [[https://curl.se/libcurl/][libcurl]] for [[https://mlochbaum.github.io/BQN/][BQN]]. + +** Making requests + +Only GET and POST requests are implemented at this time. + +#+begin_src bqn +⟨Get,Post⟩←•Import"curl.bqn" +#+end_src + +Simple GET requests: +#+begin_src bqn +r←Get"https://httpbin.org/get" +#+end_src + +You can pass headers as a left argument: +#+begin_src bqn +r←⟨"Content-Type: application/json"⟩Get"https://httpbin.org/get" +#+end_src + +Arguments, port number, etc, can be included in the URL. + +For POST requests, pass data as an additional string parameter. It +will not be converted or encoded in any way. +#+begin_src bqn +r←⟨"Content-Type: application/json"⟩Post"https://httpbin.org/post"‿"{""key"": ""value""}" +#+end_src + +** Response objects + +The response object is a namespace with the following elements: +- ~code~: the response code. +- ~headers~: the response headers as a single string, separated by newlines. +- ~content~: the response content, as raw bytes. +- ~time~: the time the request took, in seconds. + +If your endpoint returns text, you can use ~FromBytes~ from +[[https://github.com/mlochbaum/bqn-libs/blob/master/strings.bqn][bqn-libs/strings.bqn]] to decode UTF-8.