mojio-js-sdk
Version:
Mojio javascript REST client.
69 lines (58 loc) • 2.64 kB
text/coffeescript
Http = require 'http'
Https = require 'https'
FormUrlencoded = require 'form-urlencoded'
#url = require("url");
constants = require 'constants'
HttpWrapperHelper = require '../helpers/HttpWrapperHelper'
iHttpWrapper = require '../interfaces/iHttpWrapper'
#
module.exports = class HttpNodeWrapper extends iHttpWrapper
constructor: (, ='https://api.moj.io/v1', = false, =null) ->
super()
_request = (params, requester, callback) ->
if (requester?)
action = requester
else if (params.href.slice(0,"https".length) == "https")
action = Https.request params
else
action = Http.request params
action.on('response', (response) ->
response.setEncoding 'utf8' if !window?
data = ""
response.on 'data', (chunk) -> data += chunk if chunk
response.on 'end', () ->
if response.statusCode > 299
response.content = data
callback(response, null)
else if data.length > 0
callback(null, JSON.parse data)
else
callback null, { result: "ok" }
)
if params?.timeout? then action.on 'socket', (socket) ->
socket.setTimeout params.timeout
socket.on 'timeout', () ->
callback socket, null
action.on 'error', (error) ->
callback(error,null)
action.write(params.body) if (params.body?)
action.end()
_parts = (request, token, uri, encoding) ->
request.pid = request.id if request.id
request.sid = request.key if request.key
uri += HttpWrapperHelper._getPath(request.resource, request.pid,
request.action, request.sid, request.object, request.tid)
parts = HttpWrapperHelper._parse(uri, request, encoding, token)
return parts
url: (request) ->
parts = _parts(request, , , )
return parts.protocol + '//' + parts.hostname + parts.pathname + parts.params
request: (request, callback) ->
parts = _parts(request, , , )
console.log("REQUEST:"+)
_request(parts, , callback)
redirect: (request, redirectClass=null) => # is appname
if (redirectClass?)
redirectClass.redirect()
else
throw new Error("Please pass in the redirecting function of the framework used in nodejs")