Warning | ||
---|---|---|
| ||
This library is not a part of version 1.0 of the pico-engine |
Table of Contents | ||||
---|---|---|---|---|
|
...
Code Block |
---|
children = engine:listChildren(pico_id)
/*
[
"child 0 pico_id",
"child 1 pico_id",
...
]
*/ |
listPolicies
List all the engine policies.
Code Block |
---|
policies = engine:listPolicies() /* [ {id: "1234", name: "policy 1", event: {allow: [...]} query: ...}, {id: "4321", name: "policy 2", event: {allow: [...]} query: ...}, {id: "5555", name: "policy 3", event: {allow: [...]} query: ...}, ] */ |
listChannels
List the pico's channels.
...
Code Block |
---|
desc = engine:describeRuleset("io.picolabs.hello_world");
/*
{
"rid": "io.picolabs.hello_world",
"src": "ruleset io.picolabs.hello_world{ ...<cut for brevity> ... }",
"hash": "a096f2f3bfbd63e54bf4f39081814dbc895f3f003ae9918dbe24aec8acc097b9",
"url": "https://raw.githubusercontent.com/Picolab/node-pico-engine-core/master/test-rulesets/hello-world.krl",
"timestamp_stored": "2017-05-17T21:31:21.663Z",
"timestamp_enable": "2017-05-17T21:31:21.663Z",
"meta": {
"name": "Hello World",
"description": "\nA first ruleset for the Quickstart\n ",
"author": "Phil Windley"
}
}
*/ |
encryptChannelMessage
Encrypt a message sent over a channel
Parameter | Datatype | Required |
---|---|---|
<eci> | <string> | YES |
<encryptedMessage> | <string> | YES |
<nonce> | <string> | YES |
<otherPublicKey> | <string> | YES |
Code Block |
---|
encrypted_message = engine:encryptChannelMessage(eci, message, subscription.other_encryption_public_key)
/*
{
"encryptedMessage" : <base 58 encrypted message>,
"nonce" : <base 58 nonce used to encrypt message>,
}
*/ |
decryptChannelMessage
Encrypt a message sent over a channel
Parameter | Datatype | Required |
---|---|---|
<eci> | <string> | YES |
<message> | <string> | YES |
<otherPublicKey> | <string> | YES |
Code Block |
---|
decrypted_message = engine:decryptChannelMessage(eci, encrypted_message, nonce, other_encryption_public_key)
/*
// The decrypted message if successfully decrypted, false otherwise
*/ |
signChannelMessage
SIgn a message sent over a channel
Parameter | Datatype | Required |
---|---|---|
<eci> | <string> | YES |
<message> | <string> | YES |
Code Block |
---|
signed_message = engine:signChannelMessage(eci, message)
/*
// Base 58 encoded string that is the signed message
*/ |
verifySignedMessage
Verify a message sent over a channel
Parameter | Datatype | Required |
---|---|---|
<verifyKey> | <string> | YES |
<message> | <string> | YES |
Code Block |
---|
verifiedMessage = engine:verifySignedMessage(verify_key, signedMessage) /* // The original message if verified, false otherwise */ |
Actions
newPico
Creates a new pico.
...
Code Block |
---|
engine:removePico(id) |
newPolicy
Creates a new policy.
Parameter | Datatype | Required |
---|---|---|
<policy> | <map> | YES |
Code Block |
---|
engine:newPolicy({
name: "only allow foo/bar events",
event: {
allow: [
{domain: "foo", type: "bar"}
]
}
}) setting(resp)
/*
{
id: "1234",
name: "only allow foo/bar events",
event: {
allow: [{domain: "foo", type: "bar"}],
deny: [],
},
query: {allow: [], deny: []}
}
*/ |
For more description on how these policies work see: https://github.com/Picolab/pico-engine/pull/350#issue-160657235
removePolicy
Removes a policy. It will error if any channels are still using it.
Parameter | Datatype | Required |
---|---|---|
<policy_id> | <string> | YES |
Code Block |
---|
engine:removePolicy("1234") |
newChannel
Creates a new channel for a pico.
Parameter | Datatype | Required | Default |
---|---|---|---|
<pico_id> | <string> | NO | the running pico_id |
<name> | <string> | YES | |
<type> | <string> | YES | |
<policy_id> | <string> | YES |
Code Block |
---|
engine:newChannel(name = "channel_name", type = "channel_type", policy_id = "1234") setting(resp) /* { "id" : <new_eci>, "pico_id": <pico_id>, "name": "channel_name", "type": "channel_type", "policy_id": "1234" } */ |
Note: "id" in the resp body is the given pico's new channel eci, not the original id passed into the function.
...
If you provide `base` then it will be resolved with the url. For example, `base` is "http://raw.githubusercontent.com/" and `url` is "/username/repository1/file.txt" then the engine will register `http`http://raw.githubusercontent.com/username/repository1/file.txt`txt`
Attempting to register a ruleset with the same rid as a rule that is already registered will pull the ruleset from the given base/url and act as an update action, overwriting the current file with the one from the remote repository.
...