UNPKG

braintree

Version:

A library for integrating with Braintree.

110 lines (96 loc) 3.52 kB
//@ sourceMappingURL=gateway.map // Generated by CoffeeScript 1.6.1 var ErrorResponse, Gateway, SearchResponse, exceptions, _; ErrorResponse = require('./error_response').ErrorResponse; SearchResponse = require('./search_response').SearchResponse; exceptions = require('./exceptions'); _ = require('underscore'); Gateway = (function() { function Gateway() {} Gateway.prototype.createResponseHandler = function(attributeName, klass, callback) { return function(err, response) { if (err) { return callback(err, response); } if (response[attributeName]) { response.success = true; if (klass != null) { response[attributeName] = new klass(response[attributeName]); } return callback(null, response); } else if (response.apiErrorResponse) { return callback(null, new ErrorResponse(response.apiErrorResponse)); } }; }; Gateway.prototype.createSearchResponse = function(url, search, pagingFunction, callback) { var searchResponse; if (callback != null) { return this.gateway.http.post(url, { search: search.toHash() }, this.searchResponseHandler(pagingFunction, callback)); } else { searchResponse = new SearchResponse; this.gateway.http.post(url, { search: search.toHash() }, function(err, response) { if (err != null) { searchResponse.setFatalError(err); } else if (response["searchResults"]) { searchResponse.setResponse(response); searchResponse.setPagingFunction(pagingFunction); } else if (response.apiErrorResponse) { searchResponse.setFatalError(new ErrorResponse(response.apiErrorResponse)); } else { searchResponse.setFatalError(exceptions.DownForMaintenanceError("Down for Maintenance")); } return searchResponse.ready(); }); return searchResponse.stream; } }; Gateway.prototype.searchResponseHandler = function(pagingFunction, callback) { return function(err, response) { var container; if (err) { return callback(err, response); } if (response["searchResults"]) { container = new SearchResponse(pagingFunction, response); return callback(null, container); } else if (response.apiErrorResponse) { return callback(null, new ErrorResponse(response.apiErrorResponse)); } else { return callback(exceptions.DownForMaintenanceError("Down for Maintenance"), null); } }; }; Gateway.prototype.pagingFunctionGenerator = function(search, url, subjectType, getSubject) { var _this = this; return function(ids, callback) { search.ids()["in"](ids); return _this.gateway.http.post("/" + url + "/advanced_search", { search: search.toHash() }, function(err, response) { var subject, _i, _len, _ref, _results; if (err) { return callback(err, null); } else { if (_.isArray(getSubject(response))) { _ref = getSubject(response); _results = []; for (_i = 0, _len = _ref.length; _i < _len; _i++) { subject = _ref[_i]; _results.push(callback(null, new subjectType(subject))); } return _results; } else { return callback(null, new subjectType(getSubject(response))); } } }); }; }; return Gateway; })(); exports.Gateway = Gateway;