UNPKG

crowdstart.js

Version:

Ecommerce SDK for JavaScript and client for Crowdstart.

76 lines (59 loc) 1.93 kB
Promise = require 'broken' fs = require 'fs' request = require 'request' XhrClient = require './xhr' {newError} = require '../utils' module.exports = class NodeClient extends XhrClient constructor: (opts = {}) -> return new NodeClient opts unless @ instanceof NodeClient @endpoint = 'https://api.crowdstart.com' {@key, @debug} = opts if NodeClient.ENDPOINT @setEndpoint NodeClient.ENDPOINT if NodeClient.DEBUG @debug = true if opts.endpoint @setEndpoint opts.endpoint request: (blueprint, data, key = @getKey()) -> opts = url: @getUrl blueprint.url, data, key method: blueprint.method headers: blueprint.headers ? {} followAllRedirects: true if (opts.method is 'POST') or (opts.method is 'PATCH') opts.json = data else opts.json = true if @debug console.log '--REQUEST--' console.log opts new Promise (resolve, reject) => req = request opts, (err, res) => if res? if @debug console.log '--RESPONSE--' console.log status: res.statusCode body: res.body res.status = res.statusCode res.data = res.body if err? or (res.status > 308) or res.data?.error? err = newError opts, res if @debug console.log 'ERROR:' console.log message: err.message status: err.status type: err.type return reject err resolve url: opts.url req: opts res: res data: res.data responseText: res.data status: res.status statusText: res.statusText headers: res.headers if blueprint.upload? (blueprint.upload.call @, data).pipe req