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 / client.js
Created March 8, 2016 19:21
Subscribing to every stream of every device of every peer via a Zetta client.
var zetta = require('zetta-client');
var server = zetta().connect('http://localhost:3003');
var allQuery = server
.from()
.where('where type is not missing');
server.observe(allQuery, function(device) {
var hubName = device._data.links
@kevinswiber
kevinswiber / server.js
Created March 7, 2016 18:52
Apply authorization policy to local Zetta client requests, not server-to-server requests.
var zetta = require('zetta');
var Photocell = require('zetta-photocell-mock-driver');
zetta()
.use(Photocell)
.use(function(runtime) {
// Create an array to store sockets associated
// with PeerClient instances.
var peerClientSockets = [];
@kevinswiber
kevinswiber / body.js
Created March 1, 2016 19:44
Altering Zetta server response.
var zetta = require('zetta');
var Photocell = require('zetta-photocell-mock-driver');
zetta()
.use(Photocell)
.link('http://localhost:3000')
.use(function(runtime) {
var argo = runtime.httpServer.cloud;
var serverName = runtime.httpServer.zetta.id;
@kevinswiber
kevinswiber / server.js
Created February 23, 2016 17:18
Adding auth to Zetta WebSocket requests
var zetta = require('zetta');
var Photocell = require('zetta-photocell-mock-driver');
zetta()
.use(Photocell)
.use(function(runtime) {
var httpServer = runtime.httpServer.server;
var listener = httpServer.listeners('upgrade')[0];
httpServer.removeListener('upgrade', listener);
@kevinswiber
kevinswiber / ensure_caql_filter.js
Last active January 22, 2016 23:31
Ensure a filter exists in a CaQL query.
var caql = require('caql');
var CaqlDecompiler = require('caql-decompiler');
function checkExpression(expr) {
if (expr.type === 'Conjunction' && !expr.isNegated) {
return checkExpression(expr.left) || checkExpression(expr.right);
}
return expr.type === 'ComparisonPredicate'
&& expr.field === 'type'
@kevinswiber
kevinswiber / data_watch_app.js
Last active January 22, 2016 04:37
Monitor data over Z2Z protocol.
module.exports = function(server) {
server.pubsub.subscribe('_peer/connect', function(ev, socket) {
if (!socket.peer.ws) {
return; // only use for initiating peer requests
}
var s = socket.peer.ws.socket;
var oldWrite = s.write;
s.write = function(data, encoding, callback) {
@kevinswiber
kevinswiber / main.go
Last active January 2, 2016 02:32
Running parallel sequential pipelines in Go
package main
import (
"fmt"
"golang.org/x/net/context"
)
// Example of processing multiple sequential pipelines in parallel
func main() {
done := make(chan struct{})
@kevinswiber
kevinswiber / test.js
Created November 25, 2015 23:10
Testing to see if function call works without a callback.
var assert = require('assert');
function maybeCallback(callback) {
setTimeout(function() {
callback();
}, 5000);
};
describe('maybeCallback', function() {
it('should execute without a callback function', function(done) {
@kevinswiber
kevinswiber / test_api.js
Created November 22, 2015 03:01
Testing Siren API Responses
var assert = require('assert');
var siren = require('siren');
var ROOT_URL = 'http://45.55.169.202:3000/';
describe('Zetta API', function() {
describe('root', function() {
it('contains a class named "root"', function(done) {
siren()
.load(ROOT_URL)
@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" ],