particle-api-js 9.2.0 → 9.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/lib/Agent.js CHANGED
@@ -69,10 +69,15 @@ var Agent = function () {
69
69
  function Agent(baseUrl) {
70
70
  (0, _classCallCheck3.default)(this, Agent);
71
71
 
72
- this.prefix = (0, _superagentPrefix2.default)(baseUrl);
72
+ this.setBaseUrl(baseUrl);
73
73
  }
74
74
 
75
75
  (0, _createClass3.default)(Agent, [{
76
+ key: 'setBaseUrl',
77
+ value: function setBaseUrl(baseUrl) {
78
+ this.prefix = (0, _superagentPrefix2.default)(baseUrl);
79
+ }
80
+ }, {
76
81
  key: 'get',
77
82
  value: function get(_ref) {
78
83
  var uri = _ref.uri,
package/lib/Agent.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/Agent.js"],"names":["Agent","baseUrl","prefix","uri","auth","headers","query","context","request","method","data","undefined","form","files","raw","requestFiles","_sanitizeFiles","_request","req","_buildRequest","_promiseResponse","fulfill","reject","_sendRequest","end","error","res","body","url","statusCode","status","errorDescription","shortErrorDescription","error_description","reason","Error","makerequest","use","_authorizationHeader","_applyContext","set","name","file","options","filepath","path","isForBrowser","attach","value","field","type","send","getXHR","tool","_addToolContext","project","_addProjectContext","_toolIdent","components","component","_nameAtVersion","version","_buildSemicolonSeparatedProperties","obj","primaryProperty","prop","hasOwnProperty","username","password","Authorization","forEach","k","i"],"mappings":"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","file":"Agent.js","sourcesContent":["/*\n ******************************************************************************\n Copyright (c) 2016 Particle Industries, Inc. All rights reserved.\n\n This program is free software; you can redistribute it and/or\n modify it under the terms of the GNU Lesser General Public\n License as published by the Free Software Foundation, either\n version 3 of the License, or (at your option) any later version.\n\n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU\n Lesser General Public License for more details.\n\n You should have received a copy of the GNU Lesser General Public\n License along with this program; if not, see <http://www.gnu.org/licenses/>.\n ******************************************************************************\n */\n\nimport request from 'superagent';\nimport prefix from 'superagent-prefix';\n\nexport default class Agent {\n\tconstructor(baseUrl){\n\t\tthis.prefix = prefix(baseUrl);\n\t}\n\n\tget({ uri, auth, headers, query, context }){\n\t\treturn this.request({ uri, method: 'get', auth, headers, query, context });\n\t}\n\n\thead({ uri, auth, headers, query, context }){\n\t\treturn this.request({ uri, method: 'head', auth, headers, query, context });\n\t}\n\n\tpost({ uri, headers, data, auth, context }){\n\t\treturn this.request({ uri, method: 'post', auth, headers, data, context });\n\t}\n\n\tput({ uri, auth, headers, data, context }){\n\t\treturn this.request({ uri, method: 'put', auth, headers, data, context });\n\t}\n\n\tdelete({ uri, auth, headers, data, context }){\n\t\treturn this.request({ uri, method: 'delete', auth, headers, data, context });\n\t}\n\n\n\t/**\n\t *\n\t * @param {String} uri The URI to request\n\t * @param {String} method The method used to request the URI, should be in uppercase.\n\t * @param {Object} headers Key/Value pairs like `{ 'X-FOO': 'foo', X-BAR: 'bar' }` to send as headers.\n\t * @param {String} data Arbitrary data to send as the body.\n\t * @param {Object} auth Authorization\n\t * @param {String} query Query parameters\n\t * @param {Object} form Form fields\n\t * @param {Object} files array of file names and file content\n\t * @parma {Object} context the invocation context, describing the tool and project.\n\t * @return {Promise} A promise. fulfilled with {body, statusCode}, rejected with { statusCode, errorDescription, error, body }\n\t */\n\trequest({\n\t\turi,\n\t\tmethod,\n\t\theaders = undefined,\n\t\tdata = undefined,\n\t\tauth,\n\t\tquery = undefined,\n\t\tform = undefined,\n\t\tfiles = undefined,\n\t\tcontext = undefined,\n\t\traw = false\n\t}){\n\t\tconst requestFiles = this._sanitizeFiles(files);\n\t\treturn this._request({ uri, method, headers, data, auth, query, form, context, files: requestFiles, raw });\n\t}\n\n\t/**\n\t *\n\t * @param {String} uri The URI to request\n\t * @param {String} method The method used to request the URI, should be in uppercase.\n\t * @param {Object} headers Key/Value pairs like `{ 'X-FOO': 'foo', X-BAR: 'bar' }` to send as headers.\n\t * @param {String} data Arbitrary data to send as the body.\n\t * @param {Object} auth Authorization\n\t * @param {String} query Query parameters\n\t * @param {Object} form Form fields\n\t * @param {Object} files array of file names and file content\n\t * @param {Object} context the invocation context\n\t * @return {Promise} A promise. fulfilled with {body, statusCode}, rejected with { statusCode, errorDescription, error, body }\n\t */\n\t_request({ uri, method, headers, data, auth, query, form, files, context, raw }){\n\t\tconst req = this._buildRequest({ uri, method, headers, data, auth, query, form, context, files });\n\n\t\tif (raw){\n\t\t\treturn req;\n\t\t}\n\t\treturn this._promiseResponse(req);\n\t}\n\n\t/**\n\t * Promises to send the request and retreive the response.\n\t * @param {Request} req The request to send\n\t * @returns {Promise} The promise to send the request and retrieve the response.\n\t * @private\n\t */\n\t_promiseResponse(req){\n\t\treturn new Promise((fulfill, reject) => this._sendRequest(req, fulfill, reject));\n\t}\n\n\t/**\n\t * Sends the given request, calling the fulfill or reject methods for success/failure.\n\t * @param {object} request The request to send\n\t * @param {function} fulfill Called on success with the response\n\t * @param {function} reject Called on failure with the failure reason.\n\t * @private\n\t * @returns {undefined} Nothing\n\t */\n\t_sendRequest(request, fulfill, reject){\n\t\trequest.end((error, res) => {\n\t\t\tconst body = res && res.body;\n\t\t\tif (error){\n\t\t\t\tconst uri = request.url;\n\t\t\t\tconst statusCode = error.status;\n\t\t\t\tlet errorDescription = `${statusCode ? 'HTTP error ' + statusCode : 'Network error'} from ${uri}`;\n\t\t\t\tlet shortErrorDescription;\n\t\t\t\tif (body && body.error_description){\n\t\t\t\t\terrorDescription += ' - ' + body.error_description;\n\t\t\t\t\tshortErrorDescription = body.error_description;\n\t\t\t\t}\n\t\t\t\tconst reason = new Error(errorDescription);\n\t\t\t\tObject.assign(reason, { statusCode, errorDescription, shortErrorDescription, error, body });\n\t\t\t\treject(reason);\n\t\t\t} else {\n\t\t\t\tfulfill({\n\t\t\t\t\tbody: body,\n\t\t\t\t\tstatusCode: res.statusCode\n\t\t\t\t});\n\t\t\t}\n\t\t});\n\t}\n\n\t_buildRequest({ uri, method, headers, data, auth, query, form, files, context, makerequest = request }){\n\t\tconst req = makerequest(method, uri);\n\t\tif (this.prefix){\n\t\t\treq.use(this.prefix);\n\t\t}\n\t\tthis._authorizationHeader(req, auth);\n\t\tif (context){\n\t\t\tthis._applyContext(req, context);\n\t\t}\n\t\tif (query){\n\t\t\treq.query(query);\n\t\t}\n\t\tif (headers){\n\t\t\treq.set(headers);\n\t\t}\n\t\tif (files){\n\t\t\tfor (let [name, file] of Object.entries(files)){\n\t\t\t\t// API for Form Data is different in Node and in browser\n\t\t\t\tlet options = {\n\t\t\t\t\tfilepath: file.path\n\t\t\t\t};\n\t\t\t\tif (this.isForBrowser(makerequest)){\n\t\t\t\t\toptions = file.path;\n\t\t\t\t}\n\t\t\t\treq.attach(name, file.data, options);\n\t\t\t}\n\t\t\tif (form){\n\t\t\t\tfor (let [name, value] of Object.entries(form)){\n\t\t\t\t\treq.field(name, value);\n\t\t\t\t}\n\t\t\t}\n\t\t} else if (form){\n\t\t\treq.type('form');\n\t\t\treq.send(form);\n\t\t} else if (data){\n\t\t\treq.send(data);\n\t\t}\n\t\treturn req;\n\t}\n\n\tisForBrowser(makerequest = request){\n\t\t// superagent only has the getXHR method in the browser version\n\t\treturn !!makerequest.getXHR;\n\t}\n\n\t_applyContext(req, context){\n\t\tif (context.tool){\n\t\t\tthis._addToolContext(req, context.tool);\n\t\t}\n\t\tif (context.project){\n\t\t\tthis._addProjectContext(req, context.project);\n\t\t}\n\t}\n\n\t_addToolContext(req, tool){\n\t\tlet value = '';\n\t\tif (tool.name){\n\t\t\tvalue += this._toolIdent(tool);\n\t\t\tif (tool.components){\n\t\t\t\tfor (let component of tool.components){\n\t\t\t\t\tvalue += ', '+this._toolIdent(component);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif (value){\n\t\t\treq.set('X-Particle-Tool', value);\n\t\t}\n\t}\n\n\t_toolIdent(tool){\n\t\treturn this._nameAtVersion(tool.name, tool.version);\n\t}\n\n\t_nameAtVersion(name, version){\n\t\tlet value = '';\n\t\tif (name){\n\t\t\tvalue += name;\n\t\t\tif (version){\n\t\t\t\tvalue += '@'+version;\n\t\t\t}\n\t\t}\n\t\treturn value;\n\t}\n\n\t_addProjectContext(req, project){\n\t\tlet value = this._buildSemicolonSeparatedProperties(project, 'name');\n\t\tif (value){\n\t\t\treq.set('X-Particle-Project', value);\n\t\t}\n\t}\n\n\t/**\n\t * Creates a string like primaryPropertyValue; name=value; name1=value\n\t * from the properties of an object.\n\t * @param {object} obj The object to create the string from\n\t * @param {string} primaryProperty The name of the primary property which is the default value and must be defined.\n\t * @private\n\t * @return {string} The formatted string representing the object properties and the default property.\n\t */\n\t_buildSemicolonSeparatedProperties(obj, primaryProperty){\n\t\tlet value = '';\n\t\tif (obj[primaryProperty]){\n\t\t\tvalue += obj[primaryProperty];\n\t\t\tfor (let prop in obj){\n\t\t\t\tif (prop!==primaryProperty && obj.hasOwnProperty(prop)){\n\t\t\t\t\tvalue += '; '+prop+'='+obj[prop];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn value;\n\t}\n\n\t/**\n\t * Adds an authorization header.\n\t * @param {Request} req The request to add the authorization header to.\n\t * @param {object|string} auth The authorization. Either a string authorization bearer token,\n\t * or a username/password object.\n\t * @returns {Request} req The original request.\n\t */\n\t_authorizationHeader(req, auth){\n\t\tif (auth){\n\t\t\tif (auth.username !== undefined){\n\t\t\t\treq.auth(auth.username, auth.password);\n\t\t\t} else {\n\t\t\t\treq.set({ Authorization: `Bearer ${auth}` });\n\t\t\t}\n\t\t}\n\t\treturn req;\n\t}\n\n\t/**\n\t *\n\t * @param {Array} files converts the file names to file, file1, file2.\n\t * @returns {object} the renamed files.\n\t */\n\t_sanitizeFiles(files){\n\t\tlet requestFiles;\n\t\tif (files){\n\t\t\trequestFiles = {};\n\t\t\tObject.keys(files).forEach((k, i) => {\n\t\t\t\tconst name = i ? `file${i + 1}` : 'file';\n\t\t\t\trequestFiles[name] = {\n\t\t\t\t\tdata: files[k],\n\t\t\t\t\tpath: k\n\t\t\t\t};\n\t\t\t});\n\t\t}\n\t\treturn requestFiles;\n\t}\n}\n\n"]}
1
+ {"version":3,"sources":["../src/Agent.js"],"names":["Agent","baseUrl","setBaseUrl","prefix","uri","auth","headers","query","context","request","method","data","undefined","form","files","raw","requestFiles","_sanitizeFiles","_request","req","_buildRequest","_promiseResponse","fulfill","reject","_sendRequest","end","error","res","body","url","statusCode","status","errorDescription","shortErrorDescription","error_description","reason","Error","makerequest","use","_authorizationHeader","_applyContext","set","name","file","options","filepath","path","isForBrowser","attach","value","field","type","send","getXHR","tool","_addToolContext","project","_addProjectContext","_toolIdent","components","component","_nameAtVersion","version","_buildSemicolonSeparatedProperties","obj","primaryProperty","prop","hasOwnProperty","username","password","Authorization","forEach","k","i"],"mappings":"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","file":"Agent.js","sourcesContent":["/*\n ******************************************************************************\n Copyright (c) 2016 Particle Industries, Inc. All rights reserved.\n\n This program is free software; you can redistribute it and/or\n modify it under the terms of the GNU Lesser General Public\n License as published by the Free Software Foundation, either\n version 3 of the License, or (at your option) any later version.\n\n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU\n Lesser General Public License for more details.\n\n You should have received a copy of the GNU Lesser General Public\n License along with this program; if not, see <http://www.gnu.org/licenses/>.\n ******************************************************************************\n */\n\nimport request from 'superagent';\nimport prefix from 'superagent-prefix';\n\nexport default class Agent {\n\tconstructor(baseUrl){\n\t\tthis.setBaseUrl(baseUrl);\n\t}\n\n\tsetBaseUrl(baseUrl) {\n\t\tthis.prefix = prefix(baseUrl);\n\t}\n\n\tget({ uri, auth, headers, query, context }){\n\t\treturn this.request({ uri, method: 'get', auth, headers, query, context });\n\t}\n\n\thead({ uri, auth, headers, query, context }){\n\t\treturn this.request({ uri, method: 'head', auth, headers, query, context });\n\t}\n\n\tpost({ uri, headers, data, auth, context }){\n\t\treturn this.request({ uri, method: 'post', auth, headers, data, context });\n\t}\n\n\tput({ uri, auth, headers, data, context }){\n\t\treturn this.request({ uri, method: 'put', auth, headers, data, context });\n\t}\n\n\tdelete({ uri, auth, headers, data, context }){\n\t\treturn this.request({ uri, method: 'delete', auth, headers, data, context });\n\t}\n\n\n\t/**\n\t *\n\t * @param {String} uri The URI to request\n\t * @param {String} method The method used to request the URI, should be in uppercase.\n\t * @param {Object} headers Key/Value pairs like `{ 'X-FOO': 'foo', X-BAR: 'bar' }` to send as headers.\n\t * @param {String} data Arbitrary data to send as the body.\n\t * @param {Object} auth Authorization\n\t * @param {String} query Query parameters\n\t * @param {Object} form Form fields\n\t * @param {Object} files array of file names and file content\n\t * @parma {Object} context the invocation context, describing the tool and project.\n\t * @return {Promise} A promise. fulfilled with {body, statusCode}, rejected with { statusCode, errorDescription, error, body }\n\t */\n\trequest({\n\t\turi,\n\t\tmethod,\n\t\theaders = undefined,\n\t\tdata = undefined,\n\t\tauth,\n\t\tquery = undefined,\n\t\tform = undefined,\n\t\tfiles = undefined,\n\t\tcontext = undefined,\n\t\traw = false\n\t}){\n\t\tconst requestFiles = this._sanitizeFiles(files);\n\t\treturn this._request({ uri, method, headers, data, auth, query, form, context, files: requestFiles, raw });\n\t}\n\n\t/**\n\t *\n\t * @param {String} uri The URI to request\n\t * @param {String} method The method used to request the URI, should be in uppercase.\n\t * @param {Object} headers Key/Value pairs like `{ 'X-FOO': 'foo', X-BAR: 'bar' }` to send as headers.\n\t * @param {String} data Arbitrary data to send as the body.\n\t * @param {Object} auth Authorization\n\t * @param {String} query Query parameters\n\t * @param {Object} form Form fields\n\t * @param {Object} files array of file names and file content\n\t * @param {Object} context the invocation context\n\t * @return {Promise} A promise. fulfilled with {body, statusCode}, rejected with { statusCode, errorDescription, error, body }\n\t */\n\t_request({ uri, method, headers, data, auth, query, form, files, context, raw }){\n\t\tconst req = this._buildRequest({ uri, method, headers, data, auth, query, form, context, files });\n\n\t\tif (raw){\n\t\t\treturn req;\n\t\t}\n\t\treturn this._promiseResponse(req);\n\t}\n\n\t/**\n\t * Promises to send the request and retreive the response.\n\t * @param {Request} req The request to send\n\t * @returns {Promise} The promise to send the request and retrieve the response.\n\t * @private\n\t */\n\t_promiseResponse(req){\n\t\treturn new Promise((fulfill, reject) => this._sendRequest(req, fulfill, reject));\n\t}\n\n\t/**\n\t * Sends the given request, calling the fulfill or reject methods for success/failure.\n\t * @param {object} request The request to send\n\t * @param {function} fulfill Called on success with the response\n\t * @param {function} reject Called on failure with the failure reason.\n\t * @private\n\t * @returns {undefined} Nothing\n\t */\n\t_sendRequest(request, fulfill, reject){\n\t\trequest.end((error, res) => {\n\t\t\tconst body = res && res.body;\n\t\t\tif (error){\n\t\t\t\tconst uri = request.url;\n\t\t\t\tconst statusCode = error.status;\n\t\t\t\tlet errorDescription = `${statusCode ? 'HTTP error ' + statusCode : 'Network error'} from ${uri}`;\n\t\t\t\tlet shortErrorDescription;\n\t\t\t\tif (body && body.error_description){\n\t\t\t\t\terrorDescription += ' - ' + body.error_description;\n\t\t\t\t\tshortErrorDescription = body.error_description;\n\t\t\t\t}\n\t\t\t\tconst reason = new Error(errorDescription);\n\t\t\t\tObject.assign(reason, { statusCode, errorDescription, shortErrorDescription, error, body });\n\t\t\t\treject(reason);\n\t\t\t} else {\n\t\t\t\tfulfill({\n\t\t\t\t\tbody: body,\n\t\t\t\t\tstatusCode: res.statusCode\n\t\t\t\t});\n\t\t\t}\n\t\t});\n\t}\n\n\t_buildRequest({ uri, method, headers, data, auth, query, form, files, context, makerequest = request }){\n\t\tconst req = makerequest(method, uri);\n\t\tif (this.prefix){\n\t\t\treq.use(this.prefix);\n\t\t}\n\t\tthis._authorizationHeader(req, auth);\n\t\tif (context){\n\t\t\tthis._applyContext(req, context);\n\t\t}\n\t\tif (query){\n\t\t\treq.query(query);\n\t\t}\n\t\tif (headers){\n\t\t\treq.set(headers);\n\t\t}\n\t\tif (files){\n\t\t\tfor (let [name, file] of Object.entries(files)){\n\t\t\t\t// API for Form Data is different in Node and in browser\n\t\t\t\tlet options = {\n\t\t\t\t\tfilepath: file.path\n\t\t\t\t};\n\t\t\t\tif (this.isForBrowser(makerequest)){\n\t\t\t\t\toptions = file.path;\n\t\t\t\t}\n\t\t\t\treq.attach(name, file.data, options);\n\t\t\t}\n\t\t\tif (form){\n\t\t\t\tfor (let [name, value] of Object.entries(form)){\n\t\t\t\t\treq.field(name, value);\n\t\t\t\t}\n\t\t\t}\n\t\t} else if (form){\n\t\t\treq.type('form');\n\t\t\treq.send(form);\n\t\t} else if (data){\n\t\t\treq.send(data);\n\t\t}\n\t\treturn req;\n\t}\n\n\tisForBrowser(makerequest = request){\n\t\t// superagent only has the getXHR method in the browser version\n\t\treturn !!makerequest.getXHR;\n\t}\n\n\t_applyContext(req, context){\n\t\tif (context.tool){\n\t\t\tthis._addToolContext(req, context.tool);\n\t\t}\n\t\tif (context.project){\n\t\t\tthis._addProjectContext(req, context.project);\n\t\t}\n\t}\n\n\t_addToolContext(req, tool){\n\t\tlet value = '';\n\t\tif (tool.name){\n\t\t\tvalue += this._toolIdent(tool);\n\t\t\tif (tool.components){\n\t\t\t\tfor (let component of tool.components){\n\t\t\t\t\tvalue += ', '+this._toolIdent(component);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif (value){\n\t\t\treq.set('X-Particle-Tool', value);\n\t\t}\n\t}\n\n\t_toolIdent(tool){\n\t\treturn this._nameAtVersion(tool.name, tool.version);\n\t}\n\n\t_nameAtVersion(name, version){\n\t\tlet value = '';\n\t\tif (name){\n\t\t\tvalue += name;\n\t\t\tif (version){\n\t\t\t\tvalue += '@'+version;\n\t\t\t}\n\t\t}\n\t\treturn value;\n\t}\n\n\t_addProjectContext(req, project){\n\t\tlet value = this._buildSemicolonSeparatedProperties(project, 'name');\n\t\tif (value){\n\t\t\treq.set('X-Particle-Project', value);\n\t\t}\n\t}\n\n\t/**\n\t * Creates a string like primaryPropertyValue; name=value; name1=value\n\t * from the properties of an object.\n\t * @param {object} obj The object to create the string from\n\t * @param {string} primaryProperty The name of the primary property which is the default value and must be defined.\n\t * @private\n\t * @return {string} The formatted string representing the object properties and the default property.\n\t */\n\t_buildSemicolonSeparatedProperties(obj, primaryProperty){\n\t\tlet value = '';\n\t\tif (obj[primaryProperty]){\n\t\t\tvalue += obj[primaryProperty];\n\t\t\tfor (let prop in obj){\n\t\t\t\tif (prop!==primaryProperty && obj.hasOwnProperty(prop)){\n\t\t\t\t\tvalue += '; '+prop+'='+obj[prop];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn value;\n\t}\n\n\t/**\n\t * Adds an authorization header.\n\t * @param {Request} req The request to add the authorization header to.\n\t * @param {object|string} auth The authorization. Either a string authorization bearer token,\n\t * or a username/password object.\n\t * @returns {Request} req The original request.\n\t */\n\t_authorizationHeader(req, auth){\n\t\tif (auth){\n\t\t\tif (auth.username !== undefined){\n\t\t\t\treq.auth(auth.username, auth.password);\n\t\t\t} else {\n\t\t\t\treq.set({ Authorization: `Bearer ${auth}` });\n\t\t\t}\n\t\t}\n\t\treturn req;\n\t}\n\n\t/**\n\t *\n\t * @param {Array} files converts the file names to file, file1, file2.\n\t * @returns {object} the renamed files.\n\t */\n\t_sanitizeFiles(files){\n\t\tlet requestFiles;\n\t\tif (files){\n\t\t\trequestFiles = {};\n\t\t\tObject.keys(files).forEach((k, i) => {\n\t\t\t\tconst name = i ? `file${i + 1}` : 'file';\n\t\t\t\trequestFiles[name] = {\n\t\t\t\t\tdata: files[k],\n\t\t\t\t\tpath: k\n\t\t\t\t};\n\t\t\t});\n\t\t}\n\t\treturn requestFiles;\n\t}\n}\n\n"]}
package/lib/Particle.js CHANGED
@@ -3187,6 +3187,14 @@ var Particle = function () {
3187
3187
 
3188
3188
  return new _Client2.default((0, _assign2.default)({ api: this }, options));
3189
3189
  }
3190
+
3191
+ // Internal method used to target Particle's APIs other than the default
3192
+
3193
+ }, {
3194
+ key: 'setBaseUrl',
3195
+ value: function setBaseUrl(baseUrl) {
3196
+ this.agent.setBaseUrl(baseUrl);
3197
+ }
3190
3198
  }]);
3191
3199
  return Particle;
3192
3200
  }();