channelape-sdk
Version:
A client for interacting with ChannelApe's API
136 lines • 5.55 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const Resource_1 = require("../../model/Resource");
const Version_1 = require("../../model/Version");
const GenerateApiError_1 = require("../../utils/GenerateApiError");
const Q = require("q");
const EXPECTED_GET_STATUS = 200;
const EXPECTED_CREATE_STATUS = 201;
class BusinessesCrudService {
constructor(client) {
this.client = client;
}
get(request) {
const deferred = Q.defer();
let requestUrl = `/${Version_1.default.V1}${Resource_1.default.BUSINESSES}`;
let requestOptions = {};
if (request.userId) {
requestOptions = { params: request };
}
else {
requestUrl += `/${request.businessId}`;
}
this.client.get(requestUrl, requestOptions, (error, response, body) => {
this.mapBusinessesPromise(requestUrl, deferred, error, response, body, EXPECTED_GET_STATUS);
});
return deferred.promise;
}
getBusinessMember(request) {
const deferred = Q.defer();
const requestUrl = `/${Version_1.default.V1}${Resource_1.default.BUSINESSES}`;
const requestOptions = {
params: {
businessId: request.businessId,
userId: request.userId
}
};
this.client.get(requestUrl, requestOptions, (error, response, body) => {
this.mapResponse(requestUrl, deferred, error, response, body, EXPECTED_GET_STATUS);
});
return deferred.promise;
}
getBusinessUsers(businessId) {
const deferred = Q.defer();
const requestUrl = `/${Version_1.default.V1}${Resource_1.default.BUSINESSES}/?businessId=${businessId}`;
this.client.get(requestUrl, {}, (error, response, body) => {
this.mapResponse(requestUrl, deferred, error, response, body, EXPECTED_GET_STATUS);
});
return deferred.promise;
}
verifyBusinessMember(verificationCode) {
const deferred = Q.defer();
const requestUrl = `/${Version_1.default.V1}${Resource_1.default.BUSINESS_MEMBER_VERIFICATIONS}/${verificationCode}`;
const requestOptions = {};
this.client.get(requestUrl, requestOptions, (error, response, body) => {
this.mapResponse(requestUrl, deferred, error, response, body, EXPECTED_GET_STATUS);
});
return deferred.promise;
}
create(business) {
const deferred = Q.defer();
const requestUrl = `${Version_1.default.V1}${Resource_1.default.BUSINESSES}`;
const options = {
data: business
};
this.client.post(requestUrl, options, (error, response, body) => {
this.mapResponse(requestUrl, deferred, error, response, body, EXPECTED_CREATE_STATUS);
});
return deferred.promise;
}
inviteMember(email, businessId) {
const deferred = Q.defer();
const requestUrl = `/${Version_1.default.V1}${Resource_1.default.BUSINESSES}/${businessId}/members`;
const options = {
data: {
username: email
}
};
this.client.post(requestUrl, options, (error, response, body) => {
this.mapResponse(requestUrl, deferred, error, response, body, EXPECTED_CREATE_STATUS);
});
return deferred.promise;
}
removeMember(businessId, userId) {
const deferred = Q.defer();
const requestUrl = `/${Version_1.default.V1}${Resource_1.default.BUSINESSES}/${businessId}/members/${userId}`;
this.client.delete(requestUrl, {}, (error, response, body) => {
this.mapResponse(requestUrl, deferred, error, response, body, EXPECTED_GET_STATUS);
});
return deferred.promise;
}
update(business) {
const deferred = Q.defer();
const requestUrl = `${Version_1.default.V1}${Resource_1.default.BUSINESSES}/${business.id}`;
const options = {
data: business
};
this.client.put(requestUrl, options, (error, response, body) => {
this.mapResponse(requestUrl, deferred, error, response, body, EXPECTED_GET_STATUS);
});
return deferred.promise;
}
mapBusinessesPromise(requestUrl, deferred, error, response, body, expectedStatusCode) {
if (error) {
deferred.reject(error);
}
else if (response.status === expectedStatusCode) {
if (body.businesses) {
const businesses = body.businesses;
deferred.resolve(businesses);
}
else {
const business = body;
deferred.resolve(business);
}
}
else {
const channelApeErrorResponse = (0, GenerateApiError_1.default)(requestUrl, response, body, expectedStatusCode);
deferred.reject(channelApeErrorResponse);
}
}
mapResponse(requestUrl, deferred, error, response, body, expectedStatusCode) {
const data = body && body.users ? body.users : body;
if (error) {
deferred.reject(error);
}
else if (response.status === expectedStatusCode) {
deferred.resolve(data);
}
else {
const channelApeErrorResponse = (0, GenerateApiError_1.default)(requestUrl, response, data, expectedStatusCode);
deferred.reject(channelApeErrorResponse);
}
}
}
exports.default = BusinessesCrudService;
//# sourceMappingURL=BusinessesCrudService.js.map