Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: update for 1.0.0


Warning
titlenot present in 1.0

This library is not a part of version 1.0 of the pico-engine

Table of Contents
maxLevel3
indent15px

...

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

ParameterDatatypeRequired
<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

ParameterDatatypeRequired
<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

ParameterDatatypeRequired
<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

ParameterDatatypeRequired
<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.

ParameterDatatypeRequired
<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.

ParameterDatatypeRequired
<policy_id><string>YES


Code Block
engine:removePolicy("1234")


newChannel

Creates a new channel for a pico.

ParameterDatatypeRequiredDefault
<pico_id><string>NOthe 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.

...