zenrequest
Version:
a lean and mean http router for node.js
63 lines (50 loc) • 2.08 kB
text/coffeescript
"use strict"
require "colors"
Hope = require "hope"
request = require "request"
qs = require "querystring"
module.exports = (method, url, parameters={}, headers={}, description="", expected_code=200, callback) ->
promise = new Hope.Promise()
ZENrequest.counters.current++
method = method.toUpperCase()
options =
method : method
uri : "http://#{ZENrequest.host}:#{ZENrequest.port}/#{url}"
headers : headers
timeout : 30000
if parameters? and (method is "GET" or method is "DELETE")
options.uri += "?#{qs.stringify(parameters)}"
else
options.form = parameters
request options, (error, response, body) ->
if response
result = JSON.parse body if body?
if response.statusCode is expected_code
ZENrequest.counters.success++
console.log " ✓ ".green, "#{__formatNumber(ZENrequest.counters.current)}".green, description.grey
if callback? then callback.call callback, result
promise.done null, result
else
console.log " ⚑ ".red, "#{__formatNumber(ZENrequest.counters.current)}".red, description.grey
method = __formatMethod(method)
console.log " #{method}:".grey, "http://#{ZENrequest.host}:#{ZENrequest.port}/#{url}"
__formatValues parameters
console.log " Response :".grey, "#{response.statusCode}".red
__formatValues result
error = code: response.statusCode, message: result.message
promise.done error, null
else
console.error "[HTTPRequestError]".red + " :: No response from server http://#{ZENrequest.host}:#{ZENrequest.port}/#{url}"
error = code: 404, message: "No response from server"
promise.done error, null
return promise
__formatNumber = (number) ->
number = number.toString()
number = "0" + number while number.length < 3
number
__formatMethod = (method) ->
method = "[#{method}]"
method += " " while method.length < 10
method
__formatValues = (obj) ->
console.log " #{value}".grey, "#{obj[value]}" for value of obj