pull/2432/head
Rodrigo Nascimento 9 years ago
parent 4429712d63
commit f2c03ccbc2
  1. 3
      packages/rocketchat-integrations/package.js
  2. 42
      packages/rocketchat-integrations/server/api/api.coffee
  3. 6
      packages/rocketchat-integrations/server/logger.js
  4. 60
      packages/rocketchat-integrations/server/triggers.coffee

@ -16,6 +16,7 @@ Package.onUse(function(api) {
api.use('rocketchat:authorization');
api.use('rocketchat:api');
api.use('rocketchat:theme');
api.use('rocketchat:logger');
api.use('kadira:flow-router', 'client');
api.use('templating', 'client');
@ -39,6 +40,8 @@ Package.onUse(function(api) {
api.addAssets('client/stylesheets/integrations.less', 'server');
api.addFiles('client/stylesheets/load.coffee', 'server');
api.addFiles('server/logger.js', 'server');
api.addFiles('server/models/Integrations.coffee', 'server');
// publications

@ -17,9 +17,9 @@ Api = new Restivus
Api.addRoute ':integrationId/:userId/:token', authRequired: true,
post: ->
console.log 'Post integration'
console.log '@urlParams', @urlParams
console.log '@bodyParams', @bodyParams
logger.incoming.info 'Post integration'
logger.incoming.debug '@urlParams', @urlParams
logger.incoming.debug '@bodyParams', @bodyParams
integration = RocketChat.models.Integrations.findOne(@urlParams.integrationId)
user = RocketChat.models.Users.findOne(@userId)
@ -54,14 +54,14 @@ Api.addRoute ':integrationId/:userId/:token', authRequired: true,
try
script = "result = (function() {\n"+integration.processIncomingRequestScript+"\n}());"
vmScript = vm.createScript script, 'script.js'
console.log vmScript
console.log 'will execute script', script
console.log 'with context', sandbox
logger.incoming.info 'will execute script processIncomingRequestScript'
logger.incoming.debug script
logger.incoming.debug 'with context', sandbox
catch e
console.error "[Error evaluating Script:]"
console.error script.replace(/^/gm, ' ')
console.error "\n[Stack:]"
console.error e.stack.replace(/^/gm, ' ')
logger.incoming.error "[Error evaluating Script:]"
logger.incoming.error script.replace(/^/gm, ' ')
logger.incoming.error "\n[Stack:]"
logger.incoming.error e.stack.replace(/^/gm, ' ')
return RocketChat.API.v1.failure 'error-evaluating-script'
try
@ -70,12 +70,12 @@ Api.addRoute ':integrationId/:userId/:token', authRequired: true,
return RocketChat.API.v1.failure sandbox.result.error
@bodyParams = sandbox.result?.content
console.log 'result', @bodyParams
logger.incoming.debug 'result', @bodyParams
catch e
console.error "[Error running Script:]"
console.error script.replace(/^/gm, ' ')
console.error "\n[Stack:]"
console.error e.stack.replace(/^/gm, ' ')
logger.incoming.error "[Error running Script:]"
logger.incoming.error script.replace(/^/gm, ' ')
logger.incoming.error "\n[Stack:]"
logger.incoming.error e.stack.replace(/^/gm, ' ')
return RocketChat.API.v1.failure 'error-running-script'
if not @bodyParams?
@ -96,8 +96,8 @@ Api.addRoute ':integrationId/:userId/:token', authRequired: true,
createIntegration = (options, user) ->
console.log 'Add integration'
console.log options
logger.incoming.info 'Add integration'
logger.incoming.debug options
Meteor.runAsUser user._id, =>
switch options['event']
@ -129,8 +129,8 @@ createIntegration = (options, user) ->
removeIntegration = (options, user) ->
console.log 'Remove integration'
console.log options
logger.incoming.info 'Remove integration'
logger.incoming.debug options
integrationToRemove = RocketChat.models.Integrations.findOne urls: options.target_url
Meteor.runAsUser user._id, =>
@ -175,7 +175,7 @@ RocketChat.API.v1.addRoute 'integrations.remove', authRequired: true,
Api.addRoute 'sample/:integrationId/:userId/:token', authRequired: true,
get: ->
console.log 'Sample Integration'
logger.incoming.info 'Sample Integration'
return {} =
statusCode: 200
@ -211,7 +211,7 @@ Api.addRoute 'sample/:integrationId/:userId/:token', authRequired: true,
Api.addRoute 'info/:integrationId/:userId/:token', authRequired: true,
get: ->
console.log 'Info integration'
logger.incoming.info 'Info integration'
return {} =
statusCode: 200

@ -0,0 +1,6 @@
logger = new Logger('Integrations', {
sections: {
incoming: 'Incoming WebHook',
outgoing: 'Outgoing WebHook'
}
});

@ -82,27 +82,27 @@ ExecuteTriggerUrl = (url, trigger, message, room, tries=0) ->
try
script = "result = (function() {\n"+trigger.prepareOutgoingRequestScript+"\n}());"
vmScript = vm.createScript script, 'script.js'
console.log vmScript
console.log 'will execute script', script
console.log 'with context', sandbox
logger.outgoing.info 'will execute script prepareOutgoingRequestScript'
logger.outgoing.debug script
logger.outgoing.debug 'with context', sandbox
catch e
console.error "[Error evaluating Script:]"
console.error script.replace(/^/gm, ' ')
console.error "\n[Stack:]"
console.error e.stack.replace(/^/gm, ' ')
logger.outgoing.error "[Error evaluating Script:]"
logger.outgoing.error script.replace(/^/gm, ' ')
logger.outgoing.error "\n[Stack:]"
logger.outgoing.error e.stack.replace(/^/gm, ' ')
return
try
vmScript.runInNewContext sandbox
opts = sandbox.result
console.log 'result', opts
if opts.message?
logger.outgoing.debug 'result', opts
if opts?.message?
return sendMessage opts.message
catch e
console.error "[Error running Script:]"
console.error script.replace(/^/gm, ' ')
console.error "\n[Stack:]"
console.error e.stack.replace(/^/gm, ' ')
logger.outgoing.error "[Error running Script:]"
logger.outgoing.error script.replace(/^/gm, ' ')
logger.outgoing.error "\n[Stack:]"
logger.outgoing.error e.stack.replace(/^/gm, ' ')
return
if not opts?
@ -112,17 +112,17 @@ ExecuteTriggerUrl = (url, trigger, message, room, tries=0) ->
HTTP.call opts.method, opts.url, opts, (error, result) ->
if not result? or result.statusCode isnt 200
if error?
console.error error
logger.outgoing.error error
if result?
console.log result
logger.outgoing.error result
if result.statusCode is 410
RocketChat.models.Integrations.remove _id: trigger._id
return
if result.statusCode is 500
console.log 'Request Error [500]', url
console.log result.content
logger.outgoing.error 'Request Error [500]', url
logger.outgoing.error result.content
return
if tries <= 6
@ -147,14 +147,14 @@ ExecuteTriggerUrl = (url, trigger, message, room, tries=0) ->
try
script = "result = (function() {\n"+trigger.processOutgoingResponseScript+"\n}());"
vmScript = vm.createScript script, 'script.js'
console.log vmScript
console.log 'will execute script', script
console.log 'with context', sandbox
logger.outgoing.info 'will execute script processOutgoingResponseScript'
logger.outgoing.debug script
logger.outgoing.debug 'with context', sandbox
catch e
console.error "[Error evaluating Script:]"
console.error script.replace(/^/gm, ' ')
console.error "\n[Stack:]"
console.error e.stack.replace(/^/gm, ' ')
logger.outgoing.error "[Error evaluating Script:]"
logger.outgoing.error script.replace(/^/gm, ' ')
logger.outgoing.error "\n[Stack:]"
logger.outgoing.error e.stack.replace(/^/gm, ' ')
return
try
@ -162,13 +162,13 @@ ExecuteTriggerUrl = (url, trigger, message, room, tries=0) ->
result = sandbox.result.content
if result?
result = data: result
console.log 'result', result
logger.outgoing.debug 'result', result
catch e
console.error "[Error running Script:]"
console.error script.replace(/^/gm, ' ')
console.error "\n[Stack:]"
console.error e.stack.replace(/^/gm, ' ')
return RocketChat.API.v1.failure 'error-running-script'
logger.outgoing.error "[Error running Script:]"
logger.outgoing.error script.replace(/^/gm, ' ')
logger.outgoing.error "\n[Stack:]"
logger.outgoing.error e.stack.replace(/^/gm, ' ')
return
if result?.data?.text? or result?.data?.attachments?

Loading…
Cancel
Save