From 69cb9028b8095c27dfdf46c40e9539e86b1fa7cd Mon Sep 17 00:00:00 2001 From: Bannerets Date: Tue, 5 Jun 2018 08:20:07 +0300 Subject: [PATCH] Add JavaScript example --- example/javascript/README.md | 11 ++++++ example/javascript/example.js | 63 +++++++++++++++++++++++++++++++++ example/javascript/package.json | 17 +++++++++ 3 files changed, 91 insertions(+) create mode 100644 example/javascript/README.md create mode 100644 example/javascript/example.js create mode 100644 example/javascript/package.json diff --git a/example/javascript/README.md b/example/javascript/README.md new file mode 100644 index 000000000..e8dfe2065 --- /dev/null +++ b/example/javascript/README.md @@ -0,0 +1,11 @@ +#### Requirements + +- node.js v9.0.0+ +- libtdjson binary + +#### Run + +```console +$ npm install +$ node example.js +``` diff --git a/example/javascript/example.js b/example/javascript/example.js new file mode 100644 index 000000000..76920eb3d --- /dev/null +++ b/example/javascript/example.js @@ -0,0 +1,63 @@ +const ffi = require('ffi-napi') +const ref = require('ref-napi') + +function buildQuery (query) { + const buffer = Buffer.from(JSON.stringify(query) + '\0', 'utf-8') + buffer.type = ref.types.CString + return buffer +} + +const PATH_TO_LIBRARY_FILE = 'libtdjson' + +const tdlib = ffi.Library( + PATH_TO_LIBRARY_FILE, + { + 'td_json_client_create' : ['pointer', []], + 'td_json_client_send' : ['void' , ['pointer', 'string']], + 'td_json_client_receive' : ['string' , ['pointer', 'double']], + 'td_json_client_execute' : ['string' , ['pointer', 'string']], + 'td_json_client_destroy' : ['void' , ['pointer']], + 'td_set_log_file_path' : ['int' , ['string']], + 'td_set_log_verbosity_level' : ['void' , ['int']], + 'td_set_log_fatal_error_callback': ['void' , ['pointer']] + } +) + +// Create client +const client = tdlib.td_json_client_create() + +function send (query) { + tdlib.td_json_client_send(client, buildQuery(query)) +} + +function execute (query) { + return JSON.parse( + tdlib.td_json_client_execute(client, buildQuery(query)) + ) +} + +function receive () { + const timeout = 2 + return JSON.parse( + tdlib.td_json_client_receive(client, timeout) + ) +} + +function destroy () { + tdlib.td_json_client_destroy(client) +} + +// Testing execute +console.log('execute', execute({ + '@type': 'getTextEntities', + 'text': '@telegram /test_command https://telegram.org telegram.me' +})) + +// Testing send +send({ '@type': 'getAuthorizationState' }) + +// Testing receive +console.log('receive', receive()) + +// Destroy client +destroy() diff --git a/example/javascript/package.json b/example/javascript/package.json new file mode 100644 index 000000000..a2bd6eef6 --- /dev/null +++ b/example/javascript/package.json @@ -0,0 +1,17 @@ +{ + "name": "tdlib-js-example", + "version": "1.0.0", + "description": "", + "private": true, + "main": "example.js", + "scripts": { + "start": "node example.js" + }, + "engines": { + "node": ">= 9.0.0" + }, + "dependencies": { + "ffi-napi": "^2.4.3", + "ref-napi": "^1.4.0" + } +}