Skip to content

Instantly share code, notes, and snippets.

View kevinswiber's full-sized avatar
🍄
lizard person

Kevin Swiber kevinswiber

🍄
lizard person
View GitHub Profile
@kevinswiber
kevinswiber / order.json
Last active July 12, 2018 11:16
Siren in Protobuffers v3.
{
"class": [ "order" ],
"properties": {
"orderNumber": 42,
"itemCount": 3,
"status": "pending"
},
"entities": [
{
"class": [ "items", "collection" ],
@kevinswiber
kevinswiber / order.thrift
Last active November 13, 2015 00:59
Thrift IDL for Siren Entity
struct Order {
1: optional set<string> class_
2: optional OrderProperties properties
3: optional OrderSubEntities entities
4: optional set<Action> actions
5: optional set<Link> links
}
struct OrderProperties {
1: required i32 orderNumber
@kevinswiber
kevinswiber / led.js
Last active September 9, 2015 04:59
Zetta LED state machine that changes at runtime.
var util = require('util');
var Device = require('zetta').Device;
var LED = module.exports = function() {
Device.call(this);
this.intensity = 0;
var self = this;
@kevinswiber
kevinswiber / ext.js
Created July 20, 2015 23:53
Embedding Node-RED inside Zetta.
var adapt = require('argo-connect');
var express = require("express");
var RED = require("node-red");
module.exports = function(server) {
var cloud = server.httpServer.cloud;
var httpServer = server.httpServer.server;
// Create an Express app
var app = express();
import Device from 'zetta-device';
export default class Heartbeat extends Device {
constructor() {
super();
this.pulse = null;
}
init(config) {
config
@kevinswiber
kevinswiber / heartbeat.js
Last active June 5, 2016 08:34
Zetta devices with documentation.
var util = require('util');
var Device = require('zetta').Device;
/// # heartbeat
///
/// A mock heartbeat sensor, often used as a driver example
/// for exposing streams.
///
/// This device has the following properties:
/// * `pulse`
@kevinswiber
kevinswiber / generate.js
Created June 10, 2015 18:10
Generating Zetta docs
var marked = require('marked');
var siren = require('siren');
marked.setOptions({
gfm: true
});
var root = 'http://localhost:1337/';
siren()
@kevinswiber
kevinswiber / client.sh
Created June 4, 2015 15:40
Siren Hypermedia on the Command Line
curl http://zetta-cloud-2.herokuapp.com | \
json links | \
json -ac 'this.rel.indexOf("http://rels.zettajs.io/server") > -1 && this.title == "Detroit"' | \
json href | \
xargs curl | \
json entities | \
json -ac 'this.rel.indexOf("http://rels.zettajs.io/device") > -1 && this.class.indexOf("light") > -1' | \
json links | \
json -ac 'this.rel.indexOf("self") > -1' | \
json href | \
@kevinswiber
kevinswiber / alps.json
Last active October 12, 2016 17:19
Zetta Metadata to ALPS Mapping
{
"alps": {
"version": "1.0",
"descriptor": [
{
"id": "led-type",
"name": "led",
"type": "semantic",
"descriptor": [
{
@kevinswiber
kevinswiber / server.js
Created May 18, 2015 19:57
Dynamic proxy targets with Argo
var argo = require('argo');
var router = require('argo-url-router');
argo()
.use(router)
.route('/molds/{splat: .*}', function (handle) {
handle('request', function (env, next) {
var targets = {
'google': 'http://google.com',
'yahoo': 'http://yahoo.com'