transistor 0.1.0 → 0.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/Gemfile +1 -9
- data/Gemfile.lock +6 -0
- data/Rakefile +30 -8
- data/build/min/transistor-control.js +1 -0
- data/{lib/vendor/faye-browser-min.js → build/min/transistor-radio.js} +1 -2
- data/build/min/transistor.js +1 -0
- data/{lib/vendor/jsonp.js → build/src/transistor-control.js} +63 -0
- data/build/src/transistor-radio.js +263 -0
- data/build/src/transistor.js +326 -0
- data/jake.yml +15 -6
- data/lib/assets/javascripts/transistor-control.js +146 -0
- data/lib/assets/javascripts/transistor-radio.js +263 -0
- data/lib/assets/javascripts/transistor.js +326 -0
- data/lib/transistor.rb +7 -0
- data/lib/transistor/rails.rb +4 -0
- metadata +12 -8
- data/faye-browser.js +0 -2194
- data/index.html +0 -40
- data/lib/transistor/binder.js +0 -109
- data/lib/transistor/control.js +0 -62
- data/lib/transistor/radio.js +0 -67
data/index.html
DELETED
@@ -1,40 +0,0 @@
|
|
1
|
-
<!DOCTYPE HTML>
|
2
|
-
<html>
|
3
|
-
<head>
|
4
|
-
<meta http-equiv="content-type" content="text/html; charset=utf-8">
|
5
|
-
<title>radiotower</title>
|
6
|
-
<script type="text/javascript" src="vendor/faye-browser-min.js"></script>
|
7
|
-
<script type="text/javascript" src="vendor/jsonp.js"></script>
|
8
|
-
<script type="text/javascript" src="lib/transistor/radio.js"></script>
|
9
|
-
<script type="text/javascript" src="lib/transistor/control.js"></script>
|
10
|
-
<script type="text/javascript" src="lib/transistor/binder.js"></script>
|
11
|
-
<script type="text/javascript">
|
12
|
-
|
13
|
-
var control = Transistor.Control(
|
14
|
-
'http://localhost:9700', // broadcaster
|
15
|
-
'6c6da56f84c148e4865fc7bc7a032ef2', // station uid
|
16
|
-
'36062ea123173651fb3b18de21f8c5cb' // push token
|
17
|
-
)
|
18
|
-
|
19
|
-
var radio = Transistor.Radio(
|
20
|
-
'http://localhost:9703', // station_finder
|
21
|
-
'6c6da56f84c148e4865fc7bc7a032ef2', // station uid
|
22
|
-
'30a8765fab4f56ff351576202ae67645' // test/live token
|
23
|
-
);
|
24
|
-
|
25
|
-
// explicit listener function
|
26
|
-
radio.tune("about", function(event, args) {
|
27
|
-
console.log('about', event, args);
|
28
|
-
});
|
29
|
-
|
30
|
-
// bind channel to a local array
|
31
|
-
var news = [];
|
32
|
-
radio.tune("news", Transistor.Binder(news));
|
33
|
-
|
34
|
-
radio.turnOn();
|
35
|
-
</script>
|
36
|
-
</head>
|
37
|
-
<body>
|
38
|
-
|
39
|
-
</body>
|
40
|
-
</html>
|
data/lib/transistor/binder.js
DELETED
@@ -1,109 +0,0 @@
|
|
1
|
-
if (window.Transistor === undefined) {
|
2
|
-
window.Transistor = {};
|
3
|
-
}
|
4
|
-
|
5
|
-
(function (transistor) {
|
6
|
-
var Binder = (function () {
|
7
|
-
return function (array) {
|
8
|
-
var H, set, insert, update, remove;
|
9
|
-
|
10
|
-
H = (function () {
|
11
|
-
return {
|
12
|
-
clear: function () {
|
13
|
-
for (;array.length !== 0;) {
|
14
|
-
array.pop();
|
15
|
-
}
|
16
|
-
},
|
17
|
-
|
18
|
-
indexOfId: function (id) {
|
19
|
-
for (var i = 0; i < array.length; i += 1) {
|
20
|
-
if (array[i].id === id) {
|
21
|
-
return i;
|
22
|
-
}
|
23
|
-
}
|
24
|
-
|
25
|
-
throw new Error("unknown id: " + id);
|
26
|
-
},
|
27
|
-
|
28
|
-
expectCollection: function (args) {
|
29
|
-
if (args.collection === undefined) {
|
30
|
-
throw new Error("undefined collection");
|
31
|
-
}
|
32
|
-
},
|
33
|
-
|
34
|
-
expectEntry: function (args) {
|
35
|
-
if (args.entry === undefined) {
|
36
|
-
throw new Error("undefined entry");
|
37
|
-
}
|
38
|
-
},
|
39
|
-
|
40
|
-
expectId: function (args) {
|
41
|
-
if (args.id === undefined) {
|
42
|
-
throw new Error("undefined id");
|
43
|
-
}
|
44
|
-
}
|
45
|
-
};
|
46
|
-
}());
|
47
|
-
|
48
|
-
set = function (collection) {
|
49
|
-
H.clear();
|
50
|
-
|
51
|
-
if (collection !== undefined) {
|
52
|
-
for (var i = 0 ; i < collection.length; i += 1) {
|
53
|
-
array[i] = collection[i];
|
54
|
-
}
|
55
|
-
}
|
56
|
-
};
|
57
|
-
|
58
|
-
insert = function (entry) {
|
59
|
-
if (entry !== undefined) {
|
60
|
-
array.push(entry);
|
61
|
-
}
|
62
|
-
};
|
63
|
-
|
64
|
-
update = function (id, entry) {
|
65
|
-
if (id === undefined) {
|
66
|
-
throw new Error("undefined id");
|
67
|
-
}
|
68
|
-
|
69
|
-
array[H.indexOfId(id)] = entry;
|
70
|
-
};
|
71
|
-
|
72
|
-
remove = function (id) {
|
73
|
-
array.splice(H.indexOfId(id), 1);
|
74
|
-
};
|
75
|
-
|
76
|
-
return function (event, args) {
|
77
|
-
if (args === undefined) {
|
78
|
-
throw new Error("undefined arguments");
|
79
|
-
}
|
80
|
-
|
81
|
-
switch (event) {
|
82
|
-
case 'init':
|
83
|
-
set(args);
|
84
|
-
break;
|
85
|
-
case 'set':
|
86
|
-
H.expectCollection(args);
|
87
|
-
set(args.collection);
|
88
|
-
break;
|
89
|
-
case 'insert':
|
90
|
-
H.expectEntry(args);
|
91
|
-
insert(args.entry);
|
92
|
-
break;
|
93
|
-
case 'update':
|
94
|
-
H.expectId(args);
|
95
|
-
H.expectEntry(args);
|
96
|
-
update(args.id, args.entry);
|
97
|
-
break;
|
98
|
-
case 'remove':
|
99
|
-
H.expectId(args);
|
100
|
-
remove(args.id);
|
101
|
-
break;
|
102
|
-
}
|
103
|
-
};
|
104
|
-
};
|
105
|
-
}());
|
106
|
-
|
107
|
-
transistor.Binder = Binder;
|
108
|
-
|
109
|
-
}(window.Transistor));
|
data/lib/transistor/control.js
DELETED
@@ -1,62 +0,0 @@
|
|
1
|
-
/*global JSONP */
|
2
|
-
if (window.Transistor === undefined) {
|
3
|
-
window.Transistor = {};
|
4
|
-
}
|
5
|
-
|
6
|
-
(function (transistor) {
|
7
|
-
|
8
|
-
var Control = (function () {
|
9
|
-
|
10
|
-
return function (broadcaster, station_uid, token) {
|
11
|
-
var set, insert, update, remove, command_url, send;
|
12
|
-
|
13
|
-
set = function (channel, collection, cb) {
|
14
|
-
send(command_url('set', channel), {collection: collection}, cb);
|
15
|
-
};
|
16
|
-
|
17
|
-
insert = function (channel, entry, cb) {
|
18
|
-
send(command_url('insert', channel), {entry: entry}, cb);
|
19
|
-
};
|
20
|
-
|
21
|
-
update = function (channel, id, entry, cb) {
|
22
|
-
send(command_url('update', channel), {id: id, entry: entry}, cb);
|
23
|
-
};
|
24
|
-
|
25
|
-
remove = function (channel, id, cb) {
|
26
|
-
send(command_url('remove', channel), {id: id}, cb);
|
27
|
-
};
|
28
|
-
|
29
|
-
command_url = function (cmd, channel) {
|
30
|
-
var base = broadcaster + '/command/' + cmd + '/' + station_uid + '/' + token;
|
31
|
-
|
32
|
-
if (channel === undefined) {
|
33
|
-
return base;
|
34
|
-
} else {
|
35
|
-
return base + '/' + channel;
|
36
|
-
}
|
37
|
-
};
|
38
|
-
|
39
|
-
send = function (command_url, data, cb) {
|
40
|
-
if (cb === undefined) {
|
41
|
-
cb = function (result) {};
|
42
|
-
}
|
43
|
-
|
44
|
-
if (data === undefined) {
|
45
|
-
JSONP.get(command_url, {}, cb);
|
46
|
-
} else {
|
47
|
-
JSONP.get(command_url, {data: JSON.stringify(data)}, cb);
|
48
|
-
}
|
49
|
-
};
|
50
|
-
|
51
|
-
return {
|
52
|
-
set: set,
|
53
|
-
insert: insert,
|
54
|
-
update: update,
|
55
|
-
remove: remove
|
56
|
-
};
|
57
|
-
};
|
58
|
-
}());
|
59
|
-
|
60
|
-
transistor.Control = Control;
|
61
|
-
|
62
|
-
}(window.Transistor));
|
data/lib/transistor/radio.js
DELETED
@@ -1,67 +0,0 @@
|
|
1
|
-
/*global JSONP, Faye */
|
2
|
-
if (window.Transistor === undefined) {
|
3
|
-
window.Transistor = {};
|
4
|
-
}
|
5
|
-
|
6
|
-
(function (transistor) {
|
7
|
-
|
8
|
-
var Radio = (function () {
|
9
|
-
|
10
|
-
return function (station_finder, station_uid, token, cache) {
|
11
|
-
var init_url, bayeux, listeners, turnOn, error, tune, build_channel_path;
|
12
|
-
|
13
|
-
init_url = station_finder + '/init/' + station_uid + '/' + token;
|
14
|
-
listeners = [];
|
15
|
-
|
16
|
-
turnOn = function () {
|
17
|
-
var initial_value;
|
18
|
-
|
19
|
-
JSONP.get(init_url, {}, function (init) {
|
20
|
-
if (init.error !== undefined) {
|
21
|
-
error(init);
|
22
|
-
}
|
23
|
-
|
24
|
-
bayeux = new Faye.Client(init.aerial_url, { retry: 3 });
|
25
|
-
|
26
|
-
for (var i = 0; i < listeners.length; i += 1) {
|
27
|
-
initial_value = init.channels[listeners[i].channel_path];
|
28
|
-
|
29
|
-
if (initial_value !== undefined) {
|
30
|
-
listeners[i].callback({
|
31
|
-
event: 'init',
|
32
|
-
args: initial_value
|
33
|
-
});
|
34
|
-
}
|
35
|
-
|
36
|
-
bayeux.subscribe(build_channel_path(listeners[i].channel_path), listeners[i].callback);
|
37
|
-
}
|
38
|
-
});
|
39
|
-
};
|
40
|
-
|
41
|
-
error = function (args) {
|
42
|
-
throw "Init error: \"" + args.error + "\"";
|
43
|
-
};
|
44
|
-
|
45
|
-
tune = function (channel_path, callback) {
|
46
|
-
listeners.push({
|
47
|
-
channel_path: channel_path,
|
48
|
-
callback: function (event) {
|
49
|
-
callback(event.event, event.args);
|
50
|
-
}
|
51
|
-
});
|
52
|
-
};
|
53
|
-
|
54
|
-
build_channel_path = function (channel_path) {
|
55
|
-
return '/' + station_uid + '/' + token + '/' + channel_path;
|
56
|
-
};
|
57
|
-
|
58
|
-
return {
|
59
|
-
tune: tune,
|
60
|
-
turnOn: turnOn
|
61
|
-
};
|
62
|
-
};
|
63
|
-
}());
|
64
|
-
|
65
|
-
transistor.Radio = Radio;
|
66
|
-
|
67
|
-
}(window.Transistor));
|