Name: eos-knowledge-content-node
Owner: endlessm
Description: Library to manage content for Endless Knowledge apps (node.js bindings)
Created: 2017-03-08 02:42:38.0
Updated: 2018-02-11 09:26:52.0
Pushed: 2017-03-15 22:13:07.0
Homepage: null
Size: 33
Language: C++
GitHub Committers
User | Most Recent Commit | # Commits |
---|
Other Committers
User | Most Recent Commit | # Commits |
---|
Node bindings for the EndlessOS knowledge content library. With this module, you will be able to access and serve up offline content used in EndlessOS apps through nodejs, and by extension electron.
You can add this to any node project by running the following.
install --save eos-knowledge-content
For the most part, these bindings should resemble the gjs (GNOME javascript) bindings used in eos-knowledge-lib. Complete documentation of all objects and properties can be built from the eos-knowledge-content library.
Here's a quick start example running a query for 'foot' for an app with the app id 'com.endlessm.soccer.en'.
t Eknc = require('eos-knowledge-content');
.start_glib_mainloop();
engine = Eknc.Engine.get_default();
ne.default_app_id = 'com.endlessm.soccer.en';
query = new Eknc.QueryObject({
query: 'foot',
limit: 10,
tags_match_all: ['EknArticleObject'],
ne.query(query).then(function (results) {
console.log('Got results!');
for (let result of results.get_models()) {
console.log(result.title);
}
atch(function (error) {
console.log('Error :(');
console.log(error);
hen(function () {
process.exit(0);
The engine is the main access point to query for content. It is generally used as a singleton, available via
.Engine.get_default()
It has two properties default_app_id
and language
which you will likely want
to set. It provides two main functions query
and get_object
.
QueryObject
and returns a javascript
promise. This promise will return a QueryResults
object on a successful
query.ContentObjectModel
on success.The query object describes a query to run with Engine
. These objects are
immutable, and all options should be set on construction
Eknc.QueryObject({
ery: 'hello',
You should never need to create a QueryResults
object yourself, instead you
will fetch on from the Engine
. Its main method is get_models
.
ContentObjectModel
sYou will generally not need to construct these object yourself, rather fetch
them via the Engine
. They are immutable and provide a lot of metadata about
the contents of a article, image or set in our database. This metadata is
exposed via properties.
The asynchronous methods exposed by Engine
require glib's mainloop to be
running to function properly.
Inside electron, Chromium will drive the glib mainloop internally to power its own event loop, so no extra setup is needed.
If running the library directly through nodejs, you will need to call the
start_glib_mainloop
function before making Engine
calls.