route4me-nodejs-sdk
Version:
Access Route4Me's logistics-as-a-service API using our Node.js SDK
159 lines (145 loc) • 4.07 kB
JavaScript
const utils = require("./../utils")
/**
* Territories facility
*
* @category Territories
*/
class Territories {
/**
* Constructor
*
* @see {@link https://route4me.io/docs/#territories}
* @since 0.1.8
* @private
*
* @param {RequestManager} requestManager - Request Manager
* @return {Territories} - Territories facility
*/
constructor(requestManager) {
this.r = requestManager
}
/**
* Create a new Territory.
*
* @see {@link https://route4me.io/docs/#create-a-territory}
* @since 0.1.8
*
* @param {jsonschema:Territories.Territory} data - Valid Territory data.
* @param {module:route4me-node~RequestCallback<jsonschema:Territories.Territory>} [callback]
*/
create(data, callback) {
return this.r._makeRequest({
method: "POST",
path: "/api.v4/territory.php",
body: data,
validationContext: "Territories.Territory",
}, callback)
}
/**
* Get a specified Territory by ID.
*
* @see {@link https://route4me.io/docs/#get-a-territory}
* @since 0.1.8
*
* @param {string} id - Territory ID
* @param {Object} [options] - Additional options for `get`
* @param {boolean} [options.includeAddresses=false] - If true, enclosed
* addresses will be included in a response
* @param {boolean} [options.includeOrders=false] - If true, enclosed
* orders will be included in a response
* @param {module:route4me-node~RequestCallback<jsonschema:Territories.Territory>} [callback]
*/
get(id, options, callback) {
let cb = callback
let opt = options
if ("undefined" === typeof cb && "function" === typeof opt) {
cb = opt
opt = {}
}
if ("undefined" === typeof cb && "undefined" === typeof opt && "function" === typeof id) {
return this.r._makeRequest({
method: "GET",
path: "/api.v4/territory.php",
validationContext: "Territories.Territory"
}, id)
}
opt = opt || {}
let includeAddresses = false
if (undefined !== opt.includeAddresses) {
includeAddresses = !!opt.includeAddresses
}
let includeOrders = false
if (undefined !== opt.includeOrders) {
includeOrders = !!opt.includeOrders
}
return this.r._makeRequest({
method: "GET",
path: "/api.v4/territory.php",
qs: {
"territory_id": id,
"addresses": includeAddresses ? "1" : "0",
"orders": includeOrders ? "1" : "0"
},
validationContext: "Territories.Territory",
}, cb)
}
/**
* GET all of the Territories defined by a user.
*
* @see {@link https://route4me.io/docs/#get-multiple-territories}
* @since 0.1.8
*
* @todo TODO: There is no schema for the response, but it is just an array of known schema
*
* @param {module:route4me-node~RequestCallback<jsonschema:Territories.Territories>} [callback]
*/
list(callback) {
return this.r._makeRequest({
method: "GET",
path: "/api.v4/territory.php",
validationContext: "Territories.Territories",
}, callback)
}
/**
* UPDATE a specified Territory.
*
* @see {@link https://route4me.io/docs/#update-a-territory}
* @since 0.1.8
*
* @param {string} id - Territory ID
* @param {jsonschema:Territories.Territory} data - Valid Territory data.
* @param {module:route4me-node~RequestCallback<jsonschema:Territories.Territory>} [callback]
*/
update(id, data, callback) {
return this.r._makeRequest({
method: "PUT",
path: "/api.v4/territory.php",
qs: {
"territory_id": id,
},
body: data,
validationContext: "Territories.Territory",
}, callback)
}
/**
* DELETE a specified Territory.
*
* @see {@link https://route4me.io/docs/#remove-a-territory}
* @since 0.1.8
*
* @param {string} id - Territory ID
* @param {module:route4me-node~RequestCallback<boolean>} [callback]
*/
remove(id, callback) {
return this.r._makeRequest({
method: "DELETE",
path: "/api.v4/territory.php",
qs: {
"territory_id": id,
},
validationContext: utils.CustomInternalPostProcessing.fromJsonWithStatus,
}, callback)
}
}
module.exports = Territories