[gjs: 1/2] add http client example



commit 3a2a604541880053986d988823e10197608b2df8
Author: Sonny Piers <sonny fastmail net>
Date:   Fri Sep 20 02:36:57 2019 +0200

    add http client example

 examples/http-client.js | 53 +++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 53 insertions(+)
---
diff --git a/examples/http-client.js b/examples/http-client.js
new file mode 100644
index 00000000..d6f863eb
--- /dev/null
+++ b/examples/http-client.js
@@ -0,0 +1,53 @@
+// This is a simple example of a HTTP client in Gjs using libsoup
+// https://developer.gnome.org/libsoup/stable/libsoup-client-howto.html
+
+const Soup = imports.gi.Soup;
+const GLib = imports.gi.GLib;
+const byteArray = imports.byteArray;
+
+const loop = GLib.MainLoop.new(null, false);
+
+const session = new Soup.Session();
+const message = new Soup.Message({
+    method: 'GET',
+    uri: Soup.URI.new('http://localhost:1080/hello?myname=gjs'),
+});
+
+session.send_async(message, null, send_async_callback);
+
+function read_bytes_async_callback(inputStream, res) {
+    let data;
+
+    try {
+        data = inputStream.read_bytes_finish(res);
+    } catch (e) {
+        logError(e);
+        loop.quit();
+        return;
+    }
+
+    log(`body:\n${byteArray.toString(byteArray.fromGBytes(data))}`);
+
+    loop.quit();
+}
+
+function send_async_callback(self, res) {
+    let inputStream;
+
+    try {
+        inputStream = session.send_finish(res);
+    } catch (e) {
+        logError(e);
+        loop.quit();
+        return;
+    }
+
+    log(`status: ${message.status_code} - ${message.reason_phrase}`);
+    message.response_headers.foreach((name, value) => {
+        log(`${name}: ${value}`);
+    });
+
+    inputStream.read_bytes_async(message.response_headers.get('content-length'), null, null, 
read_bytes_async_callback);
+}
+
+loop.run();


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]