sockethub 5.0.0-alpha.2 → 5.0.0-alpha.4
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.
- package/bin/sockethub +2 -29
- package/build.js +21 -0
- package/package.json +15 -65
- package/{dist/defaults.json → sockethub.config.json} +8 -7
- package/tsconfig.json +6 -68
- package/README.md +0 -98
- package/config.json.example +0 -32
- package/dist/bootstrap/init.js +0 -74
- package/dist/bootstrap/init.js.map +0 -1
- package/dist/bootstrap/platforms.js +0 -103
- package/dist/common.js +0 -20
- package/dist/common.js.map +0 -1
- package/dist/config.js +0 -60
- package/dist/config.js.map +0 -1
- package/dist/crypto.js +0 -38
- package/dist/crypto.js.map +0 -1
- package/dist/janitor.js +0 -98
- package/dist/janitor.js.map +0 -1
- package/dist/middleware/create-activity-object.js +0 -19
- package/dist/middleware/create-activity-object.js.map +0 -1
- package/dist/middleware/expand-activity-stream.js +0 -33
- package/dist/middleware/expand-activity-stream.js.map +0 -1
- package/dist/middleware/expand-activity-stream.test.data.js +0 -360
- package/dist/middleware/expand-activity-stream.test.data.js.map +0 -1
- package/dist/middleware/store-credentials.js +0 -19
- package/dist/middleware/store-credentials.js.map +0 -1
- package/dist/middleware/validate.js +0 -77
- package/dist/middleware/validate.js.map +0 -1
- package/dist/middleware/validate.test.data.js +0 -321
- package/dist/middleware/validate.test.data.js.map +0 -1
- package/dist/middleware.js +0 -54
- package/dist/middleware.js.map +0 -1
- package/dist/platform-instance.js +0 -226
- package/dist/platform-instance.js.map +0 -1
- package/dist/platform.js +0 -186
- package/dist/platform.js.map +0 -1
- package/dist/process-manager.js +0 -78
- package/dist/process-manager.js.map +0 -1
- package/dist/routes.js +0 -84
- package/dist/routes.js.map +0 -1
- package/dist/serve.js +0 -102
- package/dist/serve.js.map +0 -1
- package/dist/sockethub-client.js +0 -2604
- package/dist/sockethub-client.js.map +0 -1
- package/dist/sockethub-client.min.js +0 -2
- package/dist/sockethub-client.min.js.LICENSE.txt +0 -24
- package/dist/sockethub.js +0 -130
- package/dist/sockethub.js.map +0 -1
- package/dist/store.js +0 -17
- package/dist/store.js.map +0 -1
- package/src/bootstrap/init.d.ts +0 -8
- package/src/bootstrap/init.ts +0 -91
- package/src/bootstrap/platforms.js +0 -103
- package/src/common.test.ts +0 -54
- package/src/common.ts +0 -14
- package/src/config.d.ts +0 -2
- package/src/config.test.ts +0 -28
- package/src/config.ts +0 -72
- package/src/crypto.d.ts +0 -5
- package/src/crypto.test.ts +0 -41
- package/src/crypto.ts +0 -41
- package/src/defaults.json +0 -32
- package/src/janitor.d.ts +0 -8
- package/src/janitor.ts +0 -89
- package/src/middleware/create-activity-object.test.ts +0 -10
- package/src/middleware/create-activity-object.ts +0 -13
- package/src/middleware/expand-activity-stream.test.data.ts +0 -365
- package/src/middleware/expand-activity-stream.test.ts +0 -78
- package/src/middleware/expand-activity-stream.ts +0 -27
- package/src/middleware/store-credentials.test.ts +0 -72
- package/src/middleware/store-credentials.ts +0 -16
- package/src/middleware/validate.d.ts +0 -1
- package/src/middleware/validate.test.data.ts +0 -320
- package/src/middleware/validate.test.ts +0 -47
- package/src/middleware/validate.ts +0 -49
- package/src/middleware.d.ts +0 -21
- package/src/middleware.test.ts +0 -148
- package/src/middleware.ts +0 -52
- package/src/platform-instance.test.ts +0 -237
- package/src/platform-instance.ts +0 -236
- package/src/platform.ts +0 -189
- package/src/process-manager.ts +0 -64
- package/src/routes.test.ts +0 -100
- package/src/routes.ts +0 -93
- package/src/serve.ts +0 -79
- package/src/sockethub-client.test.ts +0 -235
- package/src/sockethub-client.ts +0 -164
- package/src/sockethub.d.ts +0 -1
- package/src/sockethub.ts +0 -184
- package/src/store.test.ts +0 -26
- package/src/store.ts +0 -17
- package/test/init-suite.js +0 -41
- package/test/sockethub-suite.js +0 -25
- package/views/examples/dummy.ejs +0 -93
- package/views/examples/feeds.ejs +0 -90
- package/views/examples/irc.ejs +0 -239
- package/views/examples/shared.js +0 -72
- package/views/examples/xmpp.ejs +0 -191
- package/views/index.ejs +0 -17
- package/webpack.minified.config.js +0 -14
- package/webpack.normal.config.js +0 -14
package/views/examples/dummy.ejs
DELETED
|
@@ -1,93 +0,0 @@
|
|
|
1
|
-
<!doctype html>
|
|
2
|
-
<html>
|
|
3
|
-
<head>
|
|
4
|
-
<title>Sockethub Example Dummy</title>
|
|
5
|
-
<style>
|
|
6
|
-
* { margin: 0; padding: 0; box-sizing: border-box; }
|
|
7
|
-
body { font: 13px Helvetica, Arial; }
|
|
8
|
-
form { background: #000; padding: 3px; position: fixed; bottom: 0; width: 100%; }
|
|
9
|
-
form input { border: 0; padding: 10px; width: 90%; margin-right: .5%; }
|
|
10
|
-
form button { width: 9%; background: rgb(130, 224, 255); border: none; padding: 10px; }
|
|
11
|
-
#messages { list-style-type: none; margin: 0; padding: 0; }
|
|
12
|
-
#messages li { padding: 5px 10px; }
|
|
13
|
-
#messages li:nth-child(odd) { background: #eee; }
|
|
14
|
-
</style>
|
|
15
|
-
</head>
|
|
16
|
-
<body>
|
|
17
|
-
<ul id="messages"></ul>
|
|
18
|
-
<form action="">
|
|
19
|
-
<input id="m" autocomplete="off" /><button>Send</button>
|
|
20
|
-
</form>
|
|
21
|
-
|
|
22
|
-
<script src="<%= address %>jquery.js"></script>
|
|
23
|
-
<script src="<%= address %>socket.io.js"></script>
|
|
24
|
-
<script src="<%= address %>activity-streams.min.js"></script>
|
|
25
|
-
<script src="<%= address %>sockethub-client.js"></script>
|
|
26
|
-
<script>
|
|
27
|
-
bdebug = function (msg, obj) { console.log(msg, obj); };
|
|
28
|
-
localStorage.debug = '<%= debug_scope %>';
|
|
29
|
-
var sc = new SockethubClient(io('<%= address %>', { path: '/sockethub' }));
|
|
30
|
-
|
|
31
|
-
// our user info
|
|
32
|
-
sc.ActivityStreams.Object.create({
|
|
33
|
-
'id': 'https://sockethub.org/examples/dummyUser',
|
|
34
|
-
'type': "person",
|
|
35
|
-
name: "Sockethub Examples - Dummy User"
|
|
36
|
-
});
|
|
37
|
-
|
|
38
|
-
// errors
|
|
39
|
-
sc.socket.on('failure', function (msg) {
|
|
40
|
-
bdebug('received failure: ', msg);
|
|
41
|
-
});
|
|
42
|
-
|
|
43
|
-
function displayMessage(msg) {
|
|
44
|
-
msg.actor = sc.ActivityStreams.Object.get(msg.actor);
|
|
45
|
-
bdebug('displaying message: ', msg);
|
|
46
|
-
$('#messages').append($('<li>').text(msg.actor.name + ': ' + msg.object.title));
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
sc.socket.on('completed', function (msg) {
|
|
50
|
-
bdebug('received completed event for: ', msg);
|
|
51
|
-
});
|
|
52
|
-
|
|
53
|
-
// handle incoming messages from the sockethub server
|
|
54
|
-
sc.socket.on('message', function (msg) {
|
|
55
|
-
bdebug('received message: ', msg);
|
|
56
|
-
if (Array.isArray(msg)) {
|
|
57
|
-
bdebug('is array len:' + msg.length);
|
|
58
|
-
for (var i = 0, len = msg.length; i < len; i++) {
|
|
59
|
-
bdebug('looping '+i+' ', msg[i]);
|
|
60
|
-
displayMessage(msg[i]);
|
|
61
|
-
}
|
|
62
|
-
} else {
|
|
63
|
-
displayMessage(msg);
|
|
64
|
-
}
|
|
65
|
-
});
|
|
66
|
-
|
|
67
|
-
// handler for user input, emit messages to sockethub server
|
|
68
|
-
$('form').submit(function () {
|
|
69
|
-
let text = $('#m').val();
|
|
70
|
-
const parts = text.split('fail:');
|
|
71
|
-
let type = 'echo';
|
|
72
|
-
text = parts[parts.length-1];
|
|
73
|
-
if (parts.length > 1) {
|
|
74
|
-
type = 'fail';
|
|
75
|
-
}
|
|
76
|
-
const msg = {
|
|
77
|
-
context: 'dummy',
|
|
78
|
-
'type': type,
|
|
79
|
-
actor: 'https://sockethub.org/examples/dummyUser',
|
|
80
|
-
object: {
|
|
81
|
-
'type': 'message',
|
|
82
|
-
content: text
|
|
83
|
-
}
|
|
84
|
-
};
|
|
85
|
-
bdebug('sending message: ', msg);
|
|
86
|
-
sc.socket.emit('message', msg);
|
|
87
|
-
|
|
88
|
-
$('#m').val('');
|
|
89
|
-
return false;
|
|
90
|
-
});
|
|
91
|
-
</script>
|
|
92
|
-
</body>
|
|
93
|
-
</html>
|
package/views/examples/feeds.ejs
DELETED
|
@@ -1,90 +0,0 @@
|
|
|
1
|
-
<!doctype html>
|
|
2
|
-
<html>
|
|
3
|
-
<head>
|
|
4
|
-
<title>Sockethub Example Feed Reader</title>
|
|
5
|
-
<style>
|
|
6
|
-
* { margin: 0; padding: 0; box-sizing: border-box; }
|
|
7
|
-
body { font: 13px Helvetica, Arial; }
|
|
8
|
-
form { background: #000; padding: 3px; position: fixed; bottom: 0; width: 100%; }
|
|
9
|
-
form input { border: 0; padding: 10px; width: 90%; margin-right: .5%; }
|
|
10
|
-
form button { width: 9%; background: rgb(130, 224, 255); border: none; padding: 10px; }
|
|
11
|
-
#messages { list-style-type: none; margin: 0; padding: 0; }
|
|
12
|
-
#messages li { padding: 5px 10px; }
|
|
13
|
-
#messages li:nth-child(odd) { background: #eee; }
|
|
14
|
-
</style>
|
|
15
|
-
</head>
|
|
16
|
-
<body>
|
|
17
|
-
<ul id="messages"></ul>
|
|
18
|
-
<form action="">
|
|
19
|
-
<input id="m" autocomplete="off" /><button>Send</button>
|
|
20
|
-
</form>
|
|
21
|
-
|
|
22
|
-
<script src="<%= address %>jquery.js"></script>
|
|
23
|
-
<script src="<%= address %>socket.io.js"></script>
|
|
24
|
-
<script src="<%= address %>activity-streams.min.js"></script>
|
|
25
|
-
<script src="<%= address %>sockethub-client.js"></script>
|
|
26
|
-
<script>
|
|
27
|
-
localStorage.debug = '<%= debug_scope %>';
|
|
28
|
-
const sc = new SockethubClient(io('<%= address %>', { path: '/sockethub' }));
|
|
29
|
-
|
|
30
|
-
// errors
|
|
31
|
-
sc.socket.on('failure', function (msg) {
|
|
32
|
-
console.log('received failure: ', msg);
|
|
33
|
-
});
|
|
34
|
-
|
|
35
|
-
sc.socket.on('completed', function (msg) {
|
|
36
|
-
console.log('received completed event for: ', msg);
|
|
37
|
-
displayMessages(msg.object.content || []);
|
|
38
|
-
});
|
|
39
|
-
|
|
40
|
-
// handle incoming messages from the sockethub server
|
|
41
|
-
sc.socket.on('message', function (msg) {
|
|
42
|
-
console.log('received message: ', msg);
|
|
43
|
-
displayMessages(msg);
|
|
44
|
-
});
|
|
45
|
-
|
|
46
|
-
function displayMessages(msgs) {
|
|
47
|
-
if (Array.isArray(msgs)) {
|
|
48
|
-
for (let i = 0, len = msgs.length; i < len; i++) {
|
|
49
|
-
displayMessage(msgs[i]);
|
|
50
|
-
}
|
|
51
|
-
} else {
|
|
52
|
-
displayMessage(msgs);
|
|
53
|
-
}
|
|
54
|
-
}
|
|
55
|
-
|
|
56
|
-
function displayMessage(msg) {
|
|
57
|
-
console.log('displaying message: ', msg);
|
|
58
|
-
$('#messages').append($('<li>').html(`<b>${msg.object.name}</b>: ${msg.object.html}`));
|
|
59
|
-
}
|
|
60
|
-
|
|
61
|
-
// handler for user input, emit messages to sockethub server
|
|
62
|
-
$('form').submit(function () {
|
|
63
|
-
const msg = {
|
|
64
|
-
context: 'feeds',
|
|
65
|
-
'type': 'fetch',
|
|
66
|
-
actor: 'https://sockethub.org/examples/feeds',
|
|
67
|
-
object: {
|
|
68
|
-
'type': 'parameters'
|
|
69
|
-
},
|
|
70
|
-
target: {
|
|
71
|
-
'type': 'feed',
|
|
72
|
-
'id': $('#m').val()
|
|
73
|
-
}
|
|
74
|
-
};
|
|
75
|
-
|
|
76
|
-
console.log('sending message: ', msg);
|
|
77
|
-
sc.socket.emit('message', msg, (data) => { console.log('CALLBACK', data); });
|
|
78
|
-
$('#m').val('');
|
|
79
|
-
return false;
|
|
80
|
-
});
|
|
81
|
-
|
|
82
|
-
// our feed actor info
|
|
83
|
-
sc.ActivityStreams.Object.create({
|
|
84
|
-
'id': 'https://sockethub.org/examples/feeds',
|
|
85
|
-
'type': "website",
|
|
86
|
-
name: "Sockethub Examples - Feeds"
|
|
87
|
-
});
|
|
88
|
-
</script>
|
|
89
|
-
</body>
|
|
90
|
-
</html>
|
package/views/examples/irc.ejs
DELETED
|
@@ -1,239 +0,0 @@
|
|
|
1
|
-
<!doctype html>
|
|
2
|
-
<html>
|
|
3
|
-
<head>
|
|
4
|
-
<title>Sockethub Example IRC Chat</title>
|
|
5
|
-
<style>
|
|
6
|
-
* { margin: 0; padding: 0; box-sizing: border-box; }
|
|
7
|
-
body { font: 0.8em Helvetica, Arial; }
|
|
8
|
-
h3 { color: #6B6767; font-size: 0.8em; margin-bottom: 1em; }
|
|
9
|
-
form#chat { background: #000; padding: 0.3em; position: fixed; bottom: 0; width: 100%; }
|
|
10
|
-
input { border: 0; padding: 5%; }
|
|
11
|
-
button { width: 20%; background: rgb(130, 224, 255); border: none; padding: 5%; }
|
|
12
|
-
button.invis { background-color: rgba(0, 0, 0, 0); color: rgba(0, 0, 0, 0);}
|
|
13
|
-
button:hover { cursor: pointer; }
|
|
14
|
-
.messageInput { width: 80%; }
|
|
15
|
-
#messages { list-style-type: none; margin: 0; padding: 0; }
|
|
16
|
-
#messages li { padding: 0.1em 1%; }
|
|
17
|
-
#messages li:nth-child(odd) { background: #eee; }
|
|
18
|
-
.modal { position: fixed; top: 15%; left: 5%; width: 90%;
|
|
19
|
-
line-height: 1em; padding: 3% 0 3%;
|
|
20
|
-
background-color: #f1c40f; text-align: center;
|
|
21
|
-
z-index: 10; outline: 9999px solid rgba(0,0,0,0.5); }
|
|
22
|
-
@media only screen and (max-width: 1050px) {
|
|
23
|
-
body { font: 1em Helvetica, Arial; }
|
|
24
|
-
h3 { color: #6B6767; font-size: 1em; margin-bottom: 1.5em; }
|
|
25
|
-
input { border: 0; padding: 3%; width: 70%; font-size: 1em; }
|
|
26
|
-
button { width: 20%; border: none; padding: 3%; font-size: 1em; }
|
|
27
|
-
}
|
|
28
|
-
@media only screen and (max-width: 5000px) {
|
|
29
|
-
body { font: 0.9em Helvetica, Arial; }
|
|
30
|
-
h3 { color: #6B6767; font-size: 1.2em; margin-bottom: 1.5em; }
|
|
31
|
-
.modal input { border: 0; padding: 2%; width: 80%; font-size: 0.8em; }
|
|
32
|
-
.modal button { width: 10%; border: none; padding: 2%; font-size: 0.8em; }
|
|
33
|
-
input { padding: 1%; }
|
|
34
|
-
button { padding: 1%; width: 10%; }
|
|
35
|
-
.messageInput { width: 90%; }
|
|
36
|
-
}
|
|
37
|
-
</style>
|
|
38
|
-
</head>
|
|
39
|
-
<body>
|
|
40
|
-
<div class="modal">
|
|
41
|
-
<h3>Click `Join` to connect and join the IRC channel.</h3>
|
|
42
|
-
<form id="intro" action="">
|
|
43
|
-
<!-- <input id="n" autocomplete="off" value="sh-"><button class="invis" disabled>nick</button>-->
|
|
44
|
-
<input id="j" autocomplete="off" value=""><button id="join">Join</button>
|
|
45
|
-
</form>
|
|
46
|
-
</div>
|
|
47
|
-
<ul id="messages"></ul>
|
|
48
|
-
<form id="chat" action="">
|
|
49
|
-
<input id="m" autocomplete="off" class="messageInput" disabled><button id="send" disabled>Send</button>
|
|
50
|
-
</form>
|
|
51
|
-
|
|
52
|
-
<script src="<%= address %>jquery.js"></script>
|
|
53
|
-
<script src="<%= address %>socket.io.js"></script>
|
|
54
|
-
<script src="<%= address %>sockethub-client.js"></script>
|
|
55
|
-
<script src="<%= address %>examples/shared.js"></script>
|
|
56
|
-
<script>
|
|
57
|
-
debug = function (msg, obj) { console.log(msg, obj); };
|
|
58
|
-
const examplesShared = new ExamplesShared();
|
|
59
|
-
const ircServer = 'irc.libera.chat';
|
|
60
|
-
localStorage.debug = 'sockethub:*';
|
|
61
|
-
const sc = new SockethubClient(io('<%= address %>', { path: '/sockethub' }));
|
|
62
|
-
let channel = 'sockethub-test';
|
|
63
|
-
let nick = `sh-${Math.random().toString(36).substr(2)}`;
|
|
64
|
-
console.log('nick: ' + nick);
|
|
65
|
-
|
|
66
|
-
$('#j').val('#' + channel);
|
|
67
|
-
|
|
68
|
-
function __normalizeMessage(msg) {
|
|
69
|
-
function __normalizeTargetFromContent(string) {
|
|
70
|
-
const postCMD = msg.object.content.substr(string.length + 1) + ' ';
|
|
71
|
-
const target = postCMD.substr(0, postCMD.indexOf(' '));
|
|
72
|
-
if (target.indexOf('#') === 0) {
|
|
73
|
-
msg.target = ircServer + '/' + target;
|
|
74
|
-
sc.ActivityStreams.Object.create({
|
|
75
|
-
'id': ircServer + '/' + target,
|
|
76
|
-
'type': "room",
|
|
77
|
-
name: target
|
|
78
|
-
});
|
|
79
|
-
} else {
|
|
80
|
-
msg.target = target + '@' + ircServer;
|
|
81
|
-
sc.ActivityStreams.Object.create({
|
|
82
|
-
'id': target + '@' + ircServer,
|
|
83
|
-
'type': "person",
|
|
84
|
-
name: target
|
|
85
|
-
});
|
|
86
|
-
}
|
|
87
|
-
}
|
|
88
|
-
|
|
89
|
-
if ((typeof msg.object === 'object') &&
|
|
90
|
-
(typeof msg.object.content === 'string')) {
|
|
91
|
-
|
|
92
|
-
if (msg.object.content.indexOf('/me') === 0) {
|
|
93
|
-
// show completed emotes from us
|
|
94
|
-
// rewrite as object to what the incoming objects should look like
|
|
95
|
-
msg.object['type'] = 'me';
|
|
96
|
-
msg.object.content = msg.object.content.substr(4);
|
|
97
|
-
} else if (msg.object.content.indexOf('/nick') === 0) {
|
|
98
|
-
msg.object['type'] = 'address';
|
|
99
|
-
msg['type'] = 'update';
|
|
100
|
-
__normalizeTargetFromContent('/nick');
|
|
101
|
-
delete msg.object.content;
|
|
102
|
-
} else if (msg.object.content.indexOf('/notice') === 0) {
|
|
103
|
-
// show completed emotes from us
|
|
104
|
-
// rewrite as object to what the incoming objects should look like
|
|
105
|
-
msg.object['type'] = 'notice';
|
|
106
|
-
__normalizeTargetFromContent('/notice');
|
|
107
|
-
msg.object.content = msg.object.content.substr(8 + object.target.name.length + 1);
|
|
108
|
-
}
|
|
109
|
-
}
|
|
110
|
-
return msg;
|
|
111
|
-
}
|
|
112
|
-
|
|
113
|
-
// creates an ActivityStreams object for our actor (us)
|
|
114
|
-
function __updateActor(_nick) {
|
|
115
|
-
debug(`update nick ${nick} to ${_nick}`);
|
|
116
|
-
// our irc user info
|
|
117
|
-
nick = _nick; // set global nick
|
|
118
|
-
sc.ActivityStreams.Object.create({
|
|
119
|
-
id: nick,
|
|
120
|
-
type: "person",
|
|
121
|
-
name: nick,
|
|
122
|
-
url: "http://sockethub.org",
|
|
123
|
-
image: {
|
|
124
|
-
url: "http://example.org/image.jpg",
|
|
125
|
-
mediaType: "image/jpeg",
|
|
126
|
-
width: 250,
|
|
127
|
-
height: 250
|
|
128
|
-
}
|
|
129
|
-
});
|
|
130
|
-
__updateCredentials();
|
|
131
|
-
}
|
|
132
|
-
|
|
133
|
-
function __updateCredentials() {
|
|
134
|
-
// sending irc credentials to sockethub server
|
|
135
|
-
const credentials = {
|
|
136
|
-
actor: nick,
|
|
137
|
-
context: 'irc',
|
|
138
|
-
type: 'credentials',
|
|
139
|
-
object: {
|
|
140
|
-
type: 'credentials',
|
|
141
|
-
nick: nick,
|
|
142
|
-
server: ircServer,
|
|
143
|
-
secure: true
|
|
144
|
-
}
|
|
145
|
-
};
|
|
146
|
-
debug('sending credentials: ', credentials);
|
|
147
|
-
sc.socket.emit('credentials', credentials, (err) => {
|
|
148
|
-
if (err) { console.log('failed to set credentials ', err); }
|
|
149
|
-
else { console.log('credentials set'); }
|
|
150
|
-
});
|
|
151
|
-
}
|
|
152
|
-
|
|
153
|
-
function handleMessage(msg) {
|
|
154
|
-
msg = sc.ActivityStreams.Stream(msg);
|
|
155
|
-
msg = __normalizeMessage(msg);
|
|
156
|
-
if (msg.error) {
|
|
157
|
-
debug('error', msg);
|
|
158
|
-
$('#messages').append($('<li>').text(msg.error));
|
|
159
|
-
// } else if (msg.type === 'connect') {
|
|
160
|
-
// __updateActor(nick);
|
|
161
|
-
} else if ((typeof msg.object === 'object') &&
|
|
162
|
-
(typeof msg.object.content === 'string')) {
|
|
163
|
-
examplesShared.processIncomingMessage(msg);
|
|
164
|
-
} else if ((msg.type === 'update') &&
|
|
165
|
-
(msg.object.type === 'address') &&
|
|
166
|
-
(msg.actor.name === nick)) {
|
|
167
|
-
// our nick has been updated
|
|
168
|
-
__updateActor(msg.target.name);
|
|
169
|
-
examplesShared.processIncomingMessage(msg);
|
|
170
|
-
} else if (msg.type === 'join') {
|
|
171
|
-
$('.modal').css('display', 'none');
|
|
172
|
-
$('input#m').prop('disabled', false);
|
|
173
|
-
$('button#send').prop('disabled', false);
|
|
174
|
-
} else {
|
|
175
|
-
debug('nothing to do for message ', msg);
|
|
176
|
-
examplesShared.processIncomingMessage(msg);
|
|
177
|
-
}
|
|
178
|
-
}
|
|
179
|
-
|
|
180
|
-
// handle incoming messages from the sockethub server
|
|
181
|
-
sc.socket.on('message', handleMessage);
|
|
182
|
-
|
|
183
|
-
// handler for user input, emit messages to sockethub server
|
|
184
|
-
$('#chat').submit(function () {
|
|
185
|
-
let msg = {
|
|
186
|
-
type: 'send',
|
|
187
|
-
context: 'irc',
|
|
188
|
-
actor: nick,
|
|
189
|
-
object: {
|
|
190
|
-
type: 'message',
|
|
191
|
-
content: $('#m').val()
|
|
192
|
-
},
|
|
193
|
-
target: channel
|
|
194
|
-
};
|
|
195
|
-
|
|
196
|
-
msg = __normalizeMessage(msg);
|
|
197
|
-
debug('sending message: ', msg);
|
|
198
|
-
sc.socket.emit('message', msg, handleMessage);
|
|
199
|
-
$('#m').val('');
|
|
200
|
-
return false;
|
|
201
|
-
});
|
|
202
|
-
|
|
203
|
-
// handler for user input, emit messages to sockethub server
|
|
204
|
-
$('#join').click(function () {
|
|
205
|
-
channel = $('#j').val();
|
|
206
|
-
|
|
207
|
-
__updateActor(nick);
|
|
208
|
-
// the irc chatroom we're connecting to
|
|
209
|
-
sc.ActivityStreams.Object.create({
|
|
210
|
-
id: channel,
|
|
211
|
-
type: "room",
|
|
212
|
-
name: channel
|
|
213
|
-
});
|
|
214
|
-
debug('socket id: ', sc.socket.id);
|
|
215
|
-
|
|
216
|
-
const connect = {
|
|
217
|
-
type: 'connect',
|
|
218
|
-
context: 'irc',
|
|
219
|
-
actor: nick,
|
|
220
|
-
}
|
|
221
|
-
|
|
222
|
-
const join = {
|
|
223
|
-
type: 'join',
|
|
224
|
-
context: 'irc',
|
|
225
|
-
actor: nick,
|
|
226
|
-
target: channel
|
|
227
|
-
};
|
|
228
|
-
|
|
229
|
-
debug('sending connect: ', connect);
|
|
230
|
-
sc.socket.emit('message', connect, (msg) => {
|
|
231
|
-
handleMessage(msg);
|
|
232
|
-
debug('sending join: ', join);
|
|
233
|
-
sc.socket.emit('message', join, handleMessage);
|
|
234
|
-
});
|
|
235
|
-
return false;
|
|
236
|
-
});
|
|
237
|
-
</script>
|
|
238
|
-
</body>
|
|
239
|
-
</html>
|
package/views/examples/shared.js
DELETED
|
@@ -1,72 +0,0 @@
|
|
|
1
|
-
|
|
2
|
-
function ExamplesShared() {}
|
|
3
|
-
|
|
4
|
-
ExamplesShared.prototype.__displayPresenceUpdate = function (msg) {
|
|
5
|
-
const status = (msg.object.status) ? ': ' + msg.object.status : '';
|
|
6
|
-
let actor = msg.actor.id;
|
|
7
|
-
if (msg.object.presence !== 'offline') {
|
|
8
|
-
actor = document.createElement('a');
|
|
9
|
-
actor.appendChild(document.createTextNode(msg.actor.id));
|
|
10
|
-
actor.title = msg.actor.id;
|
|
11
|
-
actor.href = msg.actor.id;
|
|
12
|
-
$('#messages').append(actor);
|
|
13
|
-
// actor = '<a class="actor" href="' + msg.actor.id + '>' + msg.actor.id + '</a>';
|
|
14
|
-
}
|
|
15
|
-
$('#messages')
|
|
16
|
-
.append($('<li>').text(
|
|
17
|
-
'[ ' + msg.actor.id + ' is ' + msg.object.presence + ']' + status));
|
|
18
|
-
};
|
|
19
|
-
|
|
20
|
-
ExamplesShared.prototype.__displayMessageContent = function (msg) {
|
|
21
|
-
const name = (typeof msg.actor === 'object') ?
|
|
22
|
-
msg.actor.name || msg.actor.id : msg.type;
|
|
23
|
-
$('#messages').append($('<li>').text(name + ': ' + msg.object.content));
|
|
24
|
-
};
|
|
25
|
-
|
|
26
|
-
ExamplesShared.prototype.__displayUnknownContent = function (msg) {
|
|
27
|
-
debug('unknown message, applying default display rule ', msg);
|
|
28
|
-
$('#messages').append($('<li>').text(': ' + JSON.stringify(msg)));
|
|
29
|
-
};
|
|
30
|
-
|
|
31
|
-
ExamplesShared.prototype.processIncomingMessage = function (msg) {
|
|
32
|
-
console.log('incoming message: ', msg);
|
|
33
|
-
if (msg.type === 'query') {
|
|
34
|
-
if (msg.object.members) {
|
|
35
|
-
$('#messages').append($('<li>').text(` users in ${msg.actor.name}`))
|
|
36
|
-
.append($('<li>').text(` [ ${msg.object.members.join(', ')} ]`));
|
|
37
|
-
}
|
|
38
|
-
} else if ((msg.type === 'pong') || (msg.type === 'ping')) {
|
|
39
|
-
$('#messages').append($('<li>').text(
|
|
40
|
-
`${msg.type} received from ${msg.actor.id} at ${msg.published}`));
|
|
41
|
-
} else if ((msg.type === 'update') && (msg.object.type === 'address')) {
|
|
42
|
-
$('#messages').append($('<li>').text(
|
|
43
|
-
`${msg.actor.name} is now known as ${msg.target.name}`));
|
|
44
|
-
} else if ((msg.type === 'update') && (msg.object.type === 'presence')) {
|
|
45
|
-
this.__displayPresenceUpdate(msg);
|
|
46
|
-
} else if ((msg.type === 'add' || msg.type === 'remove') &&
|
|
47
|
-
(msg.object.type === 'relationship')) {
|
|
48
|
-
const action = msg.type === 'add' ? 'set' : 'removed';
|
|
49
|
-
$('#messages').append($('<li>').text(
|
|
50
|
-
`${msg.actor.name} ${action} ${msg.object.relationship} of
|
|
51
|
-
${msg.object.subject.role}`));
|
|
52
|
-
} else if (msg.type === 'join') {
|
|
53
|
-
$('#messages').append($('<li>').text(
|
|
54
|
-
`${msg.actor.name} has joined ${msg.target.name}`));
|
|
55
|
-
} else if ((msg.type === 'announce') && (msg.actor.type === 'service')) {
|
|
56
|
-
$('#messages').append($('<li>').text(`connected to ${msg.actor.id}`));
|
|
57
|
-
} else if (msg.type === 'error') {
|
|
58
|
-
console.log('error received: ', msg);
|
|
59
|
-
} else if (msg.type === 'close') {
|
|
60
|
-
console.log('close event received... offline.');
|
|
61
|
-
} else if (msg.object && msg.object.type === 'me') {
|
|
62
|
-
$('#messages').append($('<li>').text(
|
|
63
|
-
`* ${msg.actor.name} ${msg.object.content}`));
|
|
64
|
-
} else if (msg.object && msg.object.type === 'notice') {
|
|
65
|
-
$('#messages').append($(
|
|
66
|
-
'<li>').text(`NOTICE from ${msg.actor.name}: ${msg.object.content}`));
|
|
67
|
-
} else if (msg.object && msg.object.content) {
|
|
68
|
-
this.__displayMessageContent(msg);
|
|
69
|
-
} else {
|
|
70
|
-
this.__displayUnknownContent(msg);
|
|
71
|
-
}
|
|
72
|
-
};
|
package/views/examples/xmpp.ejs
DELETED
|
@@ -1,191 +0,0 @@
|
|
|
1
|
-
<!doctype html>
|
|
2
|
-
<html>
|
|
3
|
-
<head>
|
|
4
|
-
<title>Sockethub Example XMPP Chat</title>
|
|
5
|
-
<style>
|
|
6
|
-
* { margin: 0; padding: 0; box-sizing: border-box; }
|
|
7
|
-
body { font: 0.8em Helvetica, Arial; }
|
|
8
|
-
h3 { color: #6B6767; font-size: 0.8em; margin-bottom: 1em; }
|
|
9
|
-
form#chat { background: #000; padding: 0.3em; position: fixed; bottom: 0; width: 100%; }
|
|
10
|
-
input { border: 0; padding: 5%; }
|
|
11
|
-
button { width: 20%; background: rgb(130, 224, 255); border: none; padding: 5%; }
|
|
12
|
-
button.invis { background-color: rgba(0, 0, 0, 0); color: rgba(0, 0, 0, 0);}
|
|
13
|
-
button:hover { cursor: pointer; }
|
|
14
|
-
.messageInput { width: 80%; }
|
|
15
|
-
#messages { list-style-type: none; margin: 0; padding: 0; }
|
|
16
|
-
#messages li { padding: 0.1em 1%; }
|
|
17
|
-
#messages li:nth-child(odd) { background: #eee; }
|
|
18
|
-
.modal { position: fixed; top: 15%; left: 5%; width: 90%;
|
|
19
|
-
line-height: 1em; padding: 3% 0 3%;
|
|
20
|
-
background-color: #f1c40f; text-align: center;
|
|
21
|
-
z-index: 10; outline: 9999px solid rgba(0,0,0,0.5); }
|
|
22
|
-
@media only screen and (max-width: 1050px) {
|
|
23
|
-
body { font: 1em Helvetica, Arial; }
|
|
24
|
-
h3 { color: #6B6767; font-size: 1em; margin-bottom: 1.5em; }
|
|
25
|
-
input { border: 0; padding: 3%; width: 70%; font-size: 1em; }
|
|
26
|
-
button { width: 20%; border: none; padding: 3%; font-size: 1em; }
|
|
27
|
-
}
|
|
28
|
-
@media only screen and (max-width: 5000px) {
|
|
29
|
-
body { font: 0.9em Helvetica, Arial; }
|
|
30
|
-
h3 { color: #6B6767; font-size: 1.2em; margin-bottom: 1.5em; }
|
|
31
|
-
.modal input { border: 0; padding: 2%; width: 80%; font-size: 0.8em; }
|
|
32
|
-
.modal button { width: 10%; border: none; padding: 2%; font-size: 0.8em; }
|
|
33
|
-
input { padding: 1%; }
|
|
34
|
-
button { padding: 1%; width: 10%; }
|
|
35
|
-
.messageInput { width: 90%; }
|
|
36
|
-
}
|
|
37
|
-
</style>
|
|
38
|
-
</head>
|
|
39
|
-
<body>
|
|
40
|
-
<div class="modal">
|
|
41
|
-
<h3>Click `Join` to connect to the XMPP server.</h3>
|
|
42
|
-
<form id="intro" action="">
|
|
43
|
-
<input id="userAddress" autocomplete="off" value="username@jabber.org"><button class="invis" disabled> </button>
|
|
44
|
-
<input id="password" type="password" autocomplete="off" value="password"><button class="invis" disabled> </button>
|
|
45
|
-
<input id="resource" autocomplete="off" value="SockethubExample" disabled><button id="join">Join</button>
|
|
46
|
-
</form>
|
|
47
|
-
</div>
|
|
48
|
-
|
|
49
|
-
<ul id="messages"></ul>
|
|
50
|
-
<form id="chat" action="">
|
|
51
|
-
<input id="m" autocomplete="off" class="messageInput" disabled><button id="send" disabled>Send</button>
|
|
52
|
-
</form>
|
|
53
|
-
|
|
54
|
-
<script src="<%= address %>jquery.js"></script>
|
|
55
|
-
<script src="<%= address %>socket.io.js"></script>
|
|
56
|
-
<script src="<%= address %>sockethub-client.js"></script>
|
|
57
|
-
<script src="<%= address %>examples/shared.js"></script>
|
|
58
|
-
|
|
59
|
-
<script>
|
|
60
|
-
debug = function (msg, obj) { console.log(msg, obj); };
|
|
61
|
-
const examplesShared = new ExamplesShared();
|
|
62
|
-
localStorage.debug = 'sockethub:*';
|
|
63
|
-
let config = {
|
|
64
|
-
type: 'credentials',
|
|
65
|
-
userAddress: 'username@jabber.org',
|
|
66
|
-
password: '123456',
|
|
67
|
-
resource: 'Home'
|
|
68
|
-
};
|
|
69
|
-
let actorString = '';
|
|
70
|
-
|
|
71
|
-
const sc = new SockethubClient(io('<%= address %>', { path: '/sockethub' }));
|
|
72
|
-
|
|
73
|
-
// creates an ActivityStreams object for our actor (us)
|
|
74
|
-
function __updateActor(username) {
|
|
75
|
-
console.log('updating actor object for: ' + username);
|
|
76
|
-
// our xmpp user info
|
|
77
|
-
config.userAddress = username; // set global userAddress
|
|
78
|
-
actorString = config.userAddress + '/' + config.resource;
|
|
79
|
-
const asObject = {
|
|
80
|
-
id: actorString,
|
|
81
|
-
type: "person",
|
|
82
|
-
name: new URL('http://' + username).username,
|
|
83
|
-
url: "http://sockethub.org",
|
|
84
|
-
image: {
|
|
85
|
-
url: "http://example.org/image.jpg",
|
|
86
|
-
mediaType: "image/jpeg",
|
|
87
|
-
width: 250,
|
|
88
|
-
height: 250
|
|
89
|
-
}
|
|
90
|
-
};
|
|
91
|
-
console.log('creating activity stream object ', asObject);
|
|
92
|
-
sc.ActivityStreams.Object.create(asObject);
|
|
93
|
-
}
|
|
94
|
-
|
|
95
|
-
function handleMessage(msg) {
|
|
96
|
-
if (msg.error) {
|
|
97
|
-
debug('received error: ', msg);
|
|
98
|
-
console.error(msg.error);
|
|
99
|
-
} else if (msg['type'] === 'connect') {
|
|
100
|
-
$('.modal').css('display', 'none');
|
|
101
|
-
} else if (msg['type'] === 'join') {
|
|
102
|
-
$('input#m').prop('disabled', false);
|
|
103
|
-
$('button#send').prop('disabled', false);
|
|
104
|
-
} else {
|
|
105
|
-
examplesShared.processIncomingMessage(msg);
|
|
106
|
-
}
|
|
107
|
-
}
|
|
108
|
-
// handle incoming messages from the sockethub server
|
|
109
|
-
sc.socket.on('message', handleMessage);
|
|
110
|
-
|
|
111
|
-
$('.actor').click(function (e) {
|
|
112
|
-
e.preventDefault();
|
|
113
|
-
console.log('e: ', e);
|
|
114
|
-
});
|
|
115
|
-
|
|
116
|
-
// handler for user input, emit messages to sockethub server
|
|
117
|
-
$('#chat').submit(function (e) {
|
|
118
|
-
e.preventDefault();
|
|
119
|
-
const input = $('#m').val();
|
|
120
|
-
const [target, text_message] = input.split(':');
|
|
121
|
-
|
|
122
|
-
if ((!target || !text_message)) {
|
|
123
|
-
console.log(
|
|
124
|
-
'unable to send message without target specified ' +
|
|
125
|
-
'[room@server.org: hello world]: ',
|
|
126
|
-
target, text_message, input);
|
|
127
|
-
return false;
|
|
128
|
-
}
|
|
129
|
-
const msg = {
|
|
130
|
-
type: 'send',
|
|
131
|
-
context: 'xmpp',
|
|
132
|
-
actor: actorString,
|
|
133
|
-
object: {
|
|
134
|
-
type: 'message',
|
|
135
|
-
content: text_message
|
|
136
|
-
},
|
|
137
|
-
target: target
|
|
138
|
-
};
|
|
139
|
-
|
|
140
|
-
console.log('[normalize?] sending ', msg);
|
|
141
|
-
debug('sending message: ', msg);
|
|
142
|
-
sc.socket.emit('message', msg, handleMessage);
|
|
143
|
-
$('#m').val('');
|
|
144
|
-
return false;
|
|
145
|
-
});
|
|
146
|
-
|
|
147
|
-
// handler for user input, emit messages to sockethub server
|
|
148
|
-
$('#join').click(function (e) {
|
|
149
|
-
e.preventDefault();
|
|
150
|
-
config.userAddress = $('#userAddress').val();
|
|
151
|
-
config.password = $('#password').val();
|
|
152
|
-
config.resource = $('#resource').val();
|
|
153
|
-
|
|
154
|
-
__updateActor(config.userAddress);
|
|
155
|
-
|
|
156
|
-
setTimeout(function () {
|
|
157
|
-
// sending irc credentials to sockethub server
|
|
158
|
-
const credentials = {
|
|
159
|
-
actor: actorString,
|
|
160
|
-
type: 'credentials',
|
|
161
|
-
context: 'xmpp',
|
|
162
|
-
object: config
|
|
163
|
-
};
|
|
164
|
-
debug('sending credentials: ', credentials);
|
|
165
|
-
sc.socket.emit('credentials', credentials, (err) => {
|
|
166
|
-
if (err) {
|
|
167
|
-
console.error('failed to create credentials: ', err);
|
|
168
|
-
}
|
|
169
|
-
});
|
|
170
|
-
|
|
171
|
-
const msg = {
|
|
172
|
-
type: 'connect',
|
|
173
|
-
context: 'xmpp',
|
|
174
|
-
actor: actorString
|
|
175
|
-
};
|
|
176
|
-
|
|
177
|
-
debug('sending message: ', msg);
|
|
178
|
-
sc.socket.emit('message', msg, handleMessage);
|
|
179
|
-
msg.type = 'join';
|
|
180
|
-
msg.target = {
|
|
181
|
-
type: 'room',
|
|
182
|
-
id: 'kosmos-random@kosmos.chat'
|
|
183
|
-
};
|
|
184
|
-
debug('sending message: ', msg);
|
|
185
|
-
sc.socket.emit('message', msg, handleMessage);
|
|
186
|
-
}, 100);
|
|
187
|
-
return false;
|
|
188
|
-
});
|
|
189
|
-
</script>
|
|
190
|
-
</body>
|
|
191
|
-
</html>
|