diff options
author | Sonny Piers <sonny@fastmail.net> | 2019-09-20 02:36:57 +0200 |
---|---|---|
committer | Sonny Piers <sonny@fastmail.net> | 2019-09-20 02:41:42 +0200 |
commit | 3a2a604541880053986d988823e10197608b2df8 (patch) | |
tree | 79bbc82122ca000145d3bab0fda7905b8f9bdc83 /examples | |
parent | 8176280293478b42fc08b83b4d42713464dff78b (diff) | |
download | gjs-3a2a604541880053986d988823e10197608b2df8.tar.gz |
add http client example
Diffstat (limited to 'examples')
-rw-r--r-- | examples/http-client.js | 53 |
1 files changed, 53 insertions, 0 deletions
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(); |