Example #1
0
 res.on('end', function() {
   try {
     data = JSON.parse(data);
   } catch(e) {
      console.error('Failed to parse data from Github: ' + e);
      debug.log('data was: ', data);
      return;
   }
   if( is.array(data) && (data.length === 0) ) {
     return;
   }
   debug.log('data = ', data);
   if(is.obj(data) && is.string(data.message) ) {
     debug.error('[' + repo + '] Message from server: ', data.message);
     return;
   }
   for (var i = 0; i < data.length; i+=1) {
     issue = data[i];
     if (!(issue.number in obj.reported) ||
         obj.reported[issue.number].updated_at !== issue.updated_at) {
       debug.log('Reporting issue ' + issue.number.toString());
       obj.reported[issue.number] = issue;
       cb(util.format(obj.format,
                      repo,
                      issue.user.login,
                      issue.title,
                      issue.html_url
                     ));
     }
     else {
       console.warn('Issue ' + issue.number.toString() + ' already reported.');
     }
   }
 });
Example #2
0
		}).fail(function route_builder_req_handler_fail(err) {
			//debug.log('step');

			if(err instanceof HTTPError) {
				res.status(err.code);
				res.json({
					'$type': 'error',
					'$status': err.code,
					'title': ''+err.message,
					'content': {
						'name': 'HTTPError',
						'message': ''+err.message,
						'code': err.code,
						'stack': (is_production_mode ? undefined : parseStack(err))
					}
				});
				return;
			}

			if(is_production_mode) {
				res.status(500); // Internal Server Error
				res.json({
					'$type': 'error',
					'$status': 500,
					'title': 'Internal Server Error',
					'content': {
						'name': 'APIError',
						'message': 'There was an API error.'
					}
				});
			} else {
				var tmp = JSON.parse(JSON.stringify(err));
				tmp.$type = 'error';
				tmp.$status = 500;
				tmp.title = ''+err;
				tmp.content = {};
				tmp.content.message = ''+err.message;
				if(err.name) {
					tmp.content.name = ''+err.name;
				}
				if(err.fileName) {
					tmp.content.fileName = ''+err.fileName;
				}
				if(err.lineNumber) {
					tmp.content.lineNumber = ''+err.lineNumber;
				}
				if(err.stack) {
					try {
						tmp.content.stack = parseStack(err);
					} catch(error) {
						tmp.content.stack = ''+err.stack;
					}
				}
				res.status(500); // Internal Server Error
				res.json(tmp);
			}
			debug.error(err);
		}).done();
Example #3
0
	return function error_handler_debuglog_(err, req, res, next) {
		var prefix = '';
		if(req.id) {
			prefix += '[' + req.id + '] ';
		}
		debug.error( ('-- Exception --\n' + (err.stack || (is.obj(err) ? JSON.stringify(err, null, 2) : err)) + '\n----').split('\n').join('\n' + prefix) + '\n' );
		if(go_next) {
			debug.assert(next).is('function');
			next(err);
		}
	};
Example #4
0
}).fail(function(err) {
	debug.error(err);
}).done();
Example #5
0
}).fail(function(err) {
	debug.error(err);
	process.exit(1);
}).done();
Example #6
0
function merge_settled_results(results) {
	//debug.log('step');
	var no_reply = false;
	var body = {};
	ARRAY(results).forEach(function merge_settled_results_foreach(result) {
		//debug.log('step');
		//debug.log('result = ', result);
		debug.assert(result).is('object');
		if(result.state === "fulfilled") {

			// Ignore undefined
			if(result.value === undefined) {
				no_reply = true;
				return;
			}

			debug.assert(result.value).is('object');
			//debug.log('result.value = ', result.value);
			ARRAY(Object.keys(result.value)).forEach(function merge_settled_results_foreach_2(key) {
				//debug.log('step');

				// Target does not have property yet
				if(!body.hasOwnProperty(key)) {
					//debug.log('result.value['+key+'] = ', result.value[key], ' as ', typeof result.value[key]);
					body[key] = result.value[key];
					//debug.log('merged body['+key+'] = ', body[key], ' as ', typeof body[key]);
					return;
				}

				// Target property is an array
				if(is.array(result.value[key])) {
					if(is.array(body[key])) {
						body[key] = body[key].concat(result.value[key]);
					} else {
						body[key] = result.value[key];
					}
					//debug.log('merged body['+key+'] = ', body[key], ' as ', typeof body[key]);
					return;
				}

				// Target property is an object
				if(is.object(result.value[key])) {
					//debug.log('body['+key+'] = ', body[key]);
					//debug.log('result.value['+key+'] = ', result.value[key]);
					body[key] = merge(body[key], result.value[key]);
					//debug.log('merged body['+key+'] = ', body[key], ' as ', typeof body[key]);
					return;
				}

				// Target property is string, number, boolean, etc
				body[key] = result.value[key];
				//debug.log('merged body['+key+'] = ', body[key], ' as ', typeof body[key]);

			});
		} else {
			if(!body.errors) {
				body.errors = [];
			}
			body.errors.push(result.reason);
		}
	});
	if(body.errors) {
		if(is_production_mode) {
			debug.error("There was internal error(s): ", body.errors);
			throw new TypeError("Internal API Route Error");
		} else {
			if(body.errors.length === 1) {
				debug.error("There was internal error: ", body.errors);
				throw body.errors[0];
			} else {
				debug.error("There was internal errors: ", body.errors);
				throw body;
			}
		}
	}
	if(no_reply) {
		return;
	}
	return body;
}