Skip to content

Commit

Permalink
It works with Skypekit now!
Browse files Browse the repository at this point in the history
  • Loading branch information
Christopher Joel committed Aug 23, 2011
1 parent f81919a commit 0c05930
Show file tree
Hide file tree
Showing 6 changed files with 51 additions and 53 deletions.
39 changes: 20 additions & 19 deletions lib/adapter/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -5,24 +5,24 @@ var events = require('events'),

function watch(name, process) {

function log(data) {
function watchLog(data) {

console.log(data.toString().replace(/\n$/, ''));
console.log('[ ' + name.toUpperCase() + ' ] ' + data.toString().replace(/\n$/, ''));
}

process.stdout.on(
'data',
function(data) {

log(data);
watchLog(data);
}
);

process.stderr.on(
'data',
function(data) {

log(data);
watchLog(data);
}
);

Expand Down Expand Up @@ -100,25 +100,26 @@ exports.createAdapter = function(type, options) {
'data',
function() {

process.nextTick(
function() {
if(!adapter)
process.nextTick(
function() {

adapter = child.spawn(
'python',
[path.join(__dirname, './skypekit.py'), options.account, options.secret, options.port]
);
adapter = child.spawn(
'python',
[path.join(__dirname, './skypekit-bridge.py'), options.account, options.secret, options.port]
);

watch("Skypekit Bridge", adapter);
watch("Skypekit Bridge", adapter);

adapter.on(
'exit',
function() {
adapter.on(
'exit',
function() {

eventer.emit('dead');
}
);
}
);
eventer.emit('dead');
}
);
}
);
}
);

Expand Down
49 changes: 23 additions & 26 deletions lib/adapter/skypekit.py → lib/adapter/skypekit-bridge.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,32 +6,19 @@
import os

def log(message):
sys.stdout.write('[ SKYPEKIT ] ' + message + '\n');
sys.stdout.write(message + '\n');
sys.stdout.flush();

sys.path.append('/home/chris/repositories/damonbot/support/skypekit/sdk/ipc/python')
sys.path.append('/home/chris/repositories/damonbot/support/skypekit/sdk/interfaces/skype/python')

sys.path.append(os.path.abspath('./support/skypekit/sdk/ipc/python'))
sys.path.append(os.path.abspath('./support/skypekit/sdk/interfaces/skype/python'))

try:
import skypekit
except Exception as error:
log('Error importing the skypekit module: ' + error.__str__())
exit()

try:
import SkyLib
except Exception as error:
log('Error importing the SkyLib module: ' + error.__str__())
exit()


import skypekit
import SkyLib

account = sys.argv[1]
secret = sys.argv[2]
port = sys.argv[3]


class SkypekitBridge:

def __init__(self):
Expand All @@ -53,12 +40,18 @@ def connect(self):
def socketError(self, socket, error):
log(error)

def socketClose(self, socket):
log("Websocket connection closed!")

def socketOpen(self, socket):
log("Bridge connected!")

bridge = self

SkyLib.SkyLib.OnMessage = self.receiveSkypeMessage
try:
SkyLib.SkyLib.OnMessage = self.receiveSkypeMessage
except Exception as err:
log("Failed to access SkyLib: " + err.__str__())

try:
self.Skype = SkyLib.GetSkyLib(os.path.abspath('./support/skypekit/key.pem'))
Expand All @@ -83,24 +76,28 @@ def accountChange(self, propertyName):

def receiveSkypeMessage(self, message, changesInboxTimestamp, supersedesHistoryMessage, conversation):

if message.author != accountName:
if message.author != account:

userCount = len(conversation.GetParticipants())
self.sendBridgeMessage({ "body" : message.body_xml, "date" : message.timestamp, "chat" : { "id" : message.convo_id, "userCount" : userCount, "private" : userCount <= 1 }, "sender" : { "id" : message.author, "name" : message.author_displayname }})
self.sendBridgeMessage({ "body" : message.body_xml, "date" : message.timestamp, "chat" : { "id" : conversation.identity, "userCount" : userCount, "private" : userCount <= 1 }, "sender" : { "id" : message.author, "name" : message.author_displayname }})

def sendSkypeMessage(self, chatName, message):
log("Sending message via Skypekit bridge to chat with ID " + chatName)
SkyLib.GetConversationByIdentity(chatName).PostText(message)
SkyLib.SkyLib.GetConversationByIdentity(self.Skype, chatName).PostText(message)

def receiveBridgeMessage(self, socket, message):

log("Handling message received from bridge.")
log("Handling message received from bridge: " + message)

def handleData(message):
self.sendSkypeMessage(message['chat']['id'], message['text'])
try:
data = json.loads(message)
self.sendSkypeMessage(data['chat']['id'], data['body'])
except Exception as err:
log("Failed to parse data received from node: " + err.__str__())

json.loads(message, object_hook=handleData)

def sendBridgeMessage(self, message):

self.socket.send(json.dumps(message))

bridge = SkypekitBridge()
8 changes: 4 additions & 4 deletions lib/bot/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -17,16 +17,16 @@ function parseMessage(message) {

var concluded = false;

if(message.body.indexOf('joke') !== -1 || message.body.indexOf('funny') !== -1) {
if(message.data.body.indexOf('joke') !== -1 || message.data.body.indexOf('funny') !== -1) {
message.respond(funny[Math.floor(Math.random() * 4)]);
concluded = true;
}

if(!concluded) {
if(message.body.indexOf('?') !== -1)
message.respond("Sorry, " + message.sender.name + ", but I'm not smart enough to know how to help you yet. Help make me smarter by forking me at http://github.com/cdata/damonbot!");
if(message.data.body.indexOf('?') !== -1)
message.respond("Sorry, " + message.data.sender.name + ", but I'm not smart enough to know how to help you yet. Help make me smarter by forking me at http://github.com/cdata/damonbot!");
else
message.respond(general[Math.floor(Math.random() * 4)].replace('$1', message.sender.name));
message.respond(general[Math.floor(Math.random() * 4)].replace('$1', message.data.sender.name));
}
}

Expand Down
4 changes: 2 additions & 2 deletions lib/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -11,8 +11,8 @@ exports.run = function() {
'message',
function(message) {

log('Received message from ' + message.sender.name + ': "' + message.body + '"');
if(message.body.match(/^damonbot/i))
log('Received message from ' + message.data.sender.name + ': "' + message.data.body + '"');
if(message.data.body.match(/^damonbot/i))
damon.parse(message);
}
);
Expand Down
2 changes: 1 addition & 1 deletion lib/log.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
exports = module.exports = function(message) {

console.log("[ NODE ] " + message);
console.log("[ DAMONBOT ] " + message);
}
2 changes: 1 addition & 1 deletion lib/message.js
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ Message.prototype.respond = function(body) {

var response = {
chat: {
id: this.data.chat
id: this.data.chat.id
},
body: body,
date: Date.now()
Expand Down

0 comments on commit 0c05930

Please sign in to comment.