geoserver-node-client 0.0.7 → 1.0.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/README.md +74 -7
- package/dist/geoserver-rest-client.js +87 -0
- package/dist/package.json +55 -0
- package/dist/src/about.js +145 -0
- package/dist/src/datastore.js +1050 -0
- package/dist/src/imagemosaic.js +297 -0
- package/dist/src/layer.js +1040 -0
- package/dist/src/namespace.js +315 -0
- package/dist/src/security.js +297 -0
- package/dist/src/settings.js +345 -0
- package/dist/src/style.js +597 -0
- package/dist/src/util/geoserver.js +97 -0
- package/dist/src/workspace.js +321 -0
- package/geoserver-rest-client.js +15 -52
- package/package.json +23 -6
- package/src/about.js +59 -0
- package/src/datastore.js +161 -200
- package/src/imagemosaic.js +74 -97
- package/src/layer.js +376 -332
- package/src/namespace.js +84 -83
- package/src/security.js +61 -84
- package/src/settings.js +76 -91
- package/src/style.js +165 -171
- package/src/util/geoserver.js +41 -0
- package/src/workspace.js +89 -81
- package/.eslintrc.json +0 -20
- package/.github/workflows/ci-geoserver-node-client.yml +0 -54
- package/.github/workflows/ci-publish-docs.yml +0 -24
- package/.github/workflows/wait-for.sh +0 -145
- package/.vscode/settings.json +0 -3
- package/DOCS_HOME.md +0 -26
- package/demo/index.js +0 -188
- package/release-it.json +0 -8
- package/test/sample_data/iceland.gpkg +0 -0
- package/test/sample_data/world.geotiff +0 -0
- package/test/test.js +0 -502
|
@@ -0,0 +1,321 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
|
|
5
|
+
Object.defineProperty(exports, "__esModule", {
|
|
6
|
+
value: true
|
|
7
|
+
});
|
|
8
|
+
exports["default"] = void 0;
|
|
9
|
+
|
|
10
|
+
var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
|
|
11
|
+
|
|
12
|
+
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
|
|
13
|
+
|
|
14
|
+
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
|
|
15
|
+
|
|
16
|
+
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
|
|
17
|
+
|
|
18
|
+
var _nodeFetch = _interopRequireDefault(require("node-fetch"));
|
|
19
|
+
|
|
20
|
+
var _geoserver = require("./util/geoserver.js");
|
|
21
|
+
|
|
22
|
+
var _about = _interopRequireDefault(require("./about.js"));
|
|
23
|
+
|
|
24
|
+
/**
|
|
25
|
+
* Client for GeoServer workspaces
|
|
26
|
+
*
|
|
27
|
+
* @module WorkspaceClient
|
|
28
|
+
*/
|
|
29
|
+
var WorkspaceClient = /*#__PURE__*/function () {
|
|
30
|
+
/**
|
|
31
|
+
* Creates a GeoServer REST WorkspaceClient instance.
|
|
32
|
+
*
|
|
33
|
+
* WARNING: For most cases the 'NameSpaceClient' seems to fit better.
|
|
34
|
+
*
|
|
35
|
+
* @param {String} url The URL of the GeoServer REST API endpoint
|
|
36
|
+
* @param {String} auth The Basic Authentication string
|
|
37
|
+
*/
|
|
38
|
+
function WorkspaceClient(url, auth) {
|
|
39
|
+
(0, _classCallCheck2["default"])(this, WorkspaceClient);
|
|
40
|
+
this.url = url;
|
|
41
|
+
this.auth = auth;
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Returns all workspaces.
|
|
45
|
+
*
|
|
46
|
+
* @throws Error if request fails
|
|
47
|
+
*
|
|
48
|
+
* @returns {Object} An Object describing the workspaces
|
|
49
|
+
*/
|
|
50
|
+
|
|
51
|
+
|
|
52
|
+
(0, _createClass2["default"])(WorkspaceClient, [{
|
|
53
|
+
key: "getAll",
|
|
54
|
+
value: function () {
|
|
55
|
+
var _getAll = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee() {
|
|
56
|
+
var response, geoServerResponse;
|
|
57
|
+
return _regenerator["default"].wrap(function _callee$(_context) {
|
|
58
|
+
while (1) {
|
|
59
|
+
switch (_context.prev = _context.next) {
|
|
60
|
+
case 0:
|
|
61
|
+
_context.next = 2;
|
|
62
|
+
return (0, _nodeFetch["default"])(this.url + 'workspaces.json', {
|
|
63
|
+
credentials: 'include',
|
|
64
|
+
method: 'GET',
|
|
65
|
+
headers: {
|
|
66
|
+
Authorization: this.auth
|
|
67
|
+
}
|
|
68
|
+
});
|
|
69
|
+
|
|
70
|
+
case 2:
|
|
71
|
+
response = _context.sent;
|
|
72
|
+
|
|
73
|
+
if (response.ok) {
|
|
74
|
+
_context.next = 8;
|
|
75
|
+
break;
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
_context.next = 6;
|
|
79
|
+
return (0, _geoserver.getGeoServerResponseText)(response);
|
|
80
|
+
|
|
81
|
+
case 6:
|
|
82
|
+
geoServerResponse = _context.sent;
|
|
83
|
+
throw new _geoserver.GeoServerResponseError(null, geoServerResponse);
|
|
84
|
+
|
|
85
|
+
case 8:
|
|
86
|
+
return _context.abrupt("return", response.json());
|
|
87
|
+
|
|
88
|
+
case 9:
|
|
89
|
+
case "end":
|
|
90
|
+
return _context.stop();
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
}, _callee, this);
|
|
94
|
+
}));
|
|
95
|
+
|
|
96
|
+
function getAll() {
|
|
97
|
+
return _getAll.apply(this, arguments);
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
return getAll;
|
|
101
|
+
}()
|
|
102
|
+
/**
|
|
103
|
+
* Returns a workspace.
|
|
104
|
+
*
|
|
105
|
+
* @param {String} name Name of the workspace
|
|
106
|
+
*
|
|
107
|
+
* @throws Error if request fails
|
|
108
|
+
*
|
|
109
|
+
* @returns {Object} An object describing the workspaces
|
|
110
|
+
*/
|
|
111
|
+
|
|
112
|
+
}, {
|
|
113
|
+
key: "get",
|
|
114
|
+
value: function () {
|
|
115
|
+
var _get = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee2(name) {
|
|
116
|
+
var response, grc, geoServerResponse;
|
|
117
|
+
return _regenerator["default"].wrap(function _callee2$(_context2) {
|
|
118
|
+
while (1) {
|
|
119
|
+
switch (_context2.prev = _context2.next) {
|
|
120
|
+
case 0:
|
|
121
|
+
_context2.next = 2;
|
|
122
|
+
return (0, _nodeFetch["default"])(this.url + 'workspaces/' + name + '.json', {
|
|
123
|
+
credentials: 'include',
|
|
124
|
+
method: 'GET',
|
|
125
|
+
headers: {
|
|
126
|
+
Authorization: this.auth
|
|
127
|
+
}
|
|
128
|
+
});
|
|
129
|
+
|
|
130
|
+
case 2:
|
|
131
|
+
response = _context2.sent;
|
|
132
|
+
|
|
133
|
+
if (response.ok) {
|
|
134
|
+
_context2.next = 15;
|
|
135
|
+
break;
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
grc = new _about["default"](this.url, this.auth);
|
|
139
|
+
_context2.next = 7;
|
|
140
|
+
return grc.exists();
|
|
141
|
+
|
|
142
|
+
case 7:
|
|
143
|
+
if (!_context2.sent) {
|
|
144
|
+
_context2.next = 11;
|
|
145
|
+
break;
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
return _context2.abrupt("return");
|
|
149
|
+
|
|
150
|
+
case 11:
|
|
151
|
+
_context2.next = 13;
|
|
152
|
+
return (0, _geoserver.getGeoServerResponseText)(response);
|
|
153
|
+
|
|
154
|
+
case 13:
|
|
155
|
+
geoServerResponse = _context2.sent;
|
|
156
|
+
throw new _geoserver.GeoServerResponseError(null, geoServerResponse);
|
|
157
|
+
|
|
158
|
+
case 15:
|
|
159
|
+
return _context2.abrupt("return", response.json());
|
|
160
|
+
|
|
161
|
+
case 16:
|
|
162
|
+
case "end":
|
|
163
|
+
return _context2.stop();
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
}, _callee2, this);
|
|
167
|
+
}));
|
|
168
|
+
|
|
169
|
+
function get(_x) {
|
|
170
|
+
return _get.apply(this, arguments);
|
|
171
|
+
}
|
|
172
|
+
|
|
173
|
+
return get;
|
|
174
|
+
}()
|
|
175
|
+
/**
|
|
176
|
+
* Creates a new workspace.
|
|
177
|
+
*
|
|
178
|
+
* @param {String} name Name of the new workspace
|
|
179
|
+
*
|
|
180
|
+
* @throws Error if request fails
|
|
181
|
+
*
|
|
182
|
+
* @returns {String} The name of the created workspace
|
|
183
|
+
*/
|
|
184
|
+
|
|
185
|
+
}, {
|
|
186
|
+
key: "create",
|
|
187
|
+
value: function () {
|
|
188
|
+
var _create = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee3(name) {
|
|
189
|
+
var body, response, geoServerResponse;
|
|
190
|
+
return _regenerator["default"].wrap(function _callee3$(_context3) {
|
|
191
|
+
while (1) {
|
|
192
|
+
switch (_context3.prev = _context3.next) {
|
|
193
|
+
case 0:
|
|
194
|
+
body = {
|
|
195
|
+
workspace: {
|
|
196
|
+
name: name
|
|
197
|
+
}
|
|
198
|
+
};
|
|
199
|
+
_context3.next = 3;
|
|
200
|
+
return (0, _nodeFetch["default"])(this.url + 'workspaces', {
|
|
201
|
+
credentials: 'include',
|
|
202
|
+
method: 'POST',
|
|
203
|
+
headers: {
|
|
204
|
+
Authorization: this.auth,
|
|
205
|
+
'Content-Type': 'application/json'
|
|
206
|
+
},
|
|
207
|
+
body: JSON.stringify(body)
|
|
208
|
+
});
|
|
209
|
+
|
|
210
|
+
case 3:
|
|
211
|
+
response = _context3.sent;
|
|
212
|
+
|
|
213
|
+
if (response.ok) {
|
|
214
|
+
_context3.next = 13;
|
|
215
|
+
break;
|
|
216
|
+
}
|
|
217
|
+
|
|
218
|
+
_context3.next = 7;
|
|
219
|
+
return (0, _geoserver.getGeoServerResponseText)(response);
|
|
220
|
+
|
|
221
|
+
case 7:
|
|
222
|
+
geoServerResponse = _context3.sent;
|
|
223
|
+
_context3.t0 = response.status;
|
|
224
|
+
_context3.next = _context3.t0 === 409 ? 11 : 12;
|
|
225
|
+
break;
|
|
226
|
+
|
|
227
|
+
case 11:
|
|
228
|
+
throw new _geoserver.GeoServerResponseError('Unable to add workspace as it already exists', geoServerResponse);
|
|
229
|
+
|
|
230
|
+
case 12:
|
|
231
|
+
throw new _geoserver.GeoServerResponseError(null, geoServerResponse);
|
|
232
|
+
|
|
233
|
+
case 13:
|
|
234
|
+
return _context3.abrupt("return", response.text());
|
|
235
|
+
|
|
236
|
+
case 14:
|
|
237
|
+
case "end":
|
|
238
|
+
return _context3.stop();
|
|
239
|
+
}
|
|
240
|
+
}
|
|
241
|
+
}, _callee3, this);
|
|
242
|
+
}));
|
|
243
|
+
|
|
244
|
+
function create(_x2) {
|
|
245
|
+
return _create.apply(this, arguments);
|
|
246
|
+
}
|
|
247
|
+
|
|
248
|
+
return create;
|
|
249
|
+
}()
|
|
250
|
+
/**
|
|
251
|
+
* Deletes a workspace.
|
|
252
|
+
*
|
|
253
|
+
* @param {String} name Name of the workspace to delete
|
|
254
|
+
* @param {Boolean} recurse Flag to enable recursive deletion
|
|
255
|
+
*
|
|
256
|
+
* @throws Error if request fails
|
|
257
|
+
*/
|
|
258
|
+
|
|
259
|
+
}, {
|
|
260
|
+
key: "delete",
|
|
261
|
+
value: function () {
|
|
262
|
+
var _delete2 = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee4(name, recurse) {
|
|
263
|
+
var response, geoServerResponse;
|
|
264
|
+
return _regenerator["default"].wrap(function _callee4$(_context4) {
|
|
265
|
+
while (1) {
|
|
266
|
+
switch (_context4.prev = _context4.next) {
|
|
267
|
+
case 0:
|
|
268
|
+
_context4.next = 2;
|
|
269
|
+
return (0, _nodeFetch["default"])(this.url + 'workspaces/' + name + '?recurse=' + recurse, {
|
|
270
|
+
credentials: 'include',
|
|
271
|
+
method: 'DELETE',
|
|
272
|
+
headers: {
|
|
273
|
+
Authorization: this.auth
|
|
274
|
+
}
|
|
275
|
+
});
|
|
276
|
+
|
|
277
|
+
case 2:
|
|
278
|
+
response = _context4.sent;
|
|
279
|
+
|
|
280
|
+
if (response.ok) {
|
|
281
|
+
_context4.next = 13;
|
|
282
|
+
break;
|
|
283
|
+
}
|
|
284
|
+
|
|
285
|
+
_context4.next = 6;
|
|
286
|
+
return (0, _geoserver.getGeoServerResponseText)(response);
|
|
287
|
+
|
|
288
|
+
case 6:
|
|
289
|
+
geoServerResponse = _context4.sent;
|
|
290
|
+
_context4.t0 = response.status;
|
|
291
|
+
_context4.next = _context4.t0 === 400 ? 10 : _context4.t0 === 404 ? 11 : 12;
|
|
292
|
+
break;
|
|
293
|
+
|
|
294
|
+
case 10:
|
|
295
|
+
throw new _geoserver.GeoServerResponseError('Workspace or related Namespace is not empty (and recurse not true)', geoServerResponse);
|
|
296
|
+
|
|
297
|
+
case 11:
|
|
298
|
+
throw new _geoserver.GeoServerResponseError('Workspace doesn\'t exist', geoServerResponse);
|
|
299
|
+
|
|
300
|
+
case 12:
|
|
301
|
+
throw new _geoserver.GeoServerResponseError(null, geoServerResponse);
|
|
302
|
+
|
|
303
|
+
case 13:
|
|
304
|
+
case "end":
|
|
305
|
+
return _context4.stop();
|
|
306
|
+
}
|
|
307
|
+
}
|
|
308
|
+
}, _callee4, this);
|
|
309
|
+
}));
|
|
310
|
+
|
|
311
|
+
function _delete(_x3, _x4) {
|
|
312
|
+
return _delete2.apply(this, arguments);
|
|
313
|
+
}
|
|
314
|
+
|
|
315
|
+
return _delete;
|
|
316
|
+
}()
|
|
317
|
+
}]);
|
|
318
|
+
return WorkspaceClient;
|
|
319
|
+
}();
|
|
320
|
+
|
|
321
|
+
exports["default"] = WorkspaceClient;
|
package/geoserver-rest-client.js
CHANGED
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import fetch from 'node-fetch';
|
|
2
1
|
import LayerClient from './src/layer.js';
|
|
3
2
|
import StyleClient from './src/style.js';
|
|
4
3
|
import WorkspaceClient from './src/workspace.js';
|
|
@@ -7,6 +6,9 @@ import ImageMosaicClient from './src/imagemosaic.js';
|
|
|
7
6
|
import SecurityClient from './src/security.js';
|
|
8
7
|
import SettingsClient from './src/settings.js';
|
|
9
8
|
import NamespaceClient from './src/namespace.js';
|
|
9
|
+
import AboutClient from './src/about.js';
|
|
10
|
+
|
|
11
|
+
export { GeoServerResponseError } from './src/util/geoserver.js'
|
|
10
12
|
|
|
11
13
|
/**
|
|
12
14
|
* Client for GeoServer REST API.
|
|
@@ -15,7 +17,7 @@ import NamespaceClient from './src/namespace.js';
|
|
|
15
17
|
*
|
|
16
18
|
* @module GeoServerRestClient
|
|
17
19
|
*/
|
|
18
|
-
export
|
|
20
|
+
export class GeoServerRestClient {
|
|
19
21
|
/**
|
|
20
22
|
* Creates a GeoServerRestClient instance.
|
|
21
23
|
*
|
|
@@ -25,64 +27,25 @@ export default class GeoServerRestClient {
|
|
|
25
27
|
*/
|
|
26
28
|
constructor (url, user, password) {
|
|
27
29
|
this.url = url.endsWith('/') ? url : url + '/';
|
|
28
|
-
this.
|
|
29
|
-
this.password = password;
|
|
30
|
+
this.auth = 'Basic ' + Buffer.from(user + ':' + password).toString('base64');
|
|
30
31
|
|
|
31
32
|
/** @member {LayerClient} layers GeoServer REST client instance for layers */
|
|
32
|
-
this.layers = new LayerClient(this.url, this.
|
|
33
|
+
this.layers = new LayerClient(this.url, this.auth);
|
|
33
34
|
/** @member {StyleClient} styles GeoServer REST client instance for styles */
|
|
34
|
-
this.styles = new StyleClient(this.url, this.
|
|
35
|
+
this.styles = new StyleClient(this.url, this.auth);
|
|
35
36
|
/** @member {WorkspaceClient} workspaces GeoServer REST client instance for workspaces */
|
|
36
|
-
this.workspaces = new WorkspaceClient(this.url, this.
|
|
37
|
+
this.workspaces = new WorkspaceClient(this.url, this.auth);
|
|
37
38
|
/** @member {NamespaceClient} namespaces GeoServer REST client instance for namespaces */
|
|
38
|
-
this.namespaces = new NamespaceClient(this.url, this.
|
|
39
|
+
this.namespaces = new NamespaceClient(this.url, this.auth);
|
|
39
40
|
/** @member {DatastoreClient} datastores GeoServer REST client instance for data stores */
|
|
40
|
-
this.datastores = new DatastoreClient(this.url, this.
|
|
41
|
+
this.datastores = new DatastoreClient(this.url, this.auth);
|
|
41
42
|
/** @member {ImageMosaicClient} imagemosaics GeoServer REST client instance for image mosaics */
|
|
42
|
-
this.imagemosaics = new ImageMosaicClient(this.url, this.
|
|
43
|
+
this.imagemosaics = new ImageMosaicClient(this.url, this.auth);
|
|
43
44
|
/** @member {SecurityClient} security GeoServer REST client instance for security related modifications */
|
|
44
|
-
this.security = new SecurityClient(this.url, this.
|
|
45
|
+
this.security = new SecurityClient(this.url, this.auth);
|
|
45
46
|
/** @member {SettingsClient} settings GeoServer REST client instance for settings */
|
|
46
|
-
this.settings = new SettingsClient(this.url, this.
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
/**
|
|
50
|
-
* Get the GeoServer version.
|
|
51
|
-
*
|
|
52
|
-
* @returns {String|Boolean} The version of GeoServer or 'false'
|
|
53
|
-
*/
|
|
54
|
-
async getVersion () {
|
|
55
|
-
try {
|
|
56
|
-
const auth =
|
|
57
|
-
Buffer.from(this.user + ':' + this.password).toString('base64');
|
|
58
|
-
const response = await fetch(this.url + 'about/version.json', {
|
|
59
|
-
credentials: 'include',
|
|
60
|
-
method: 'GET',
|
|
61
|
-
headers: {
|
|
62
|
-
Authorization: 'Basic ' + auth
|
|
63
|
-
}
|
|
64
|
-
});
|
|
65
|
-
return await response.json();
|
|
66
|
-
} catch (error) {
|
|
67
|
-
return false;
|
|
68
|
-
}
|
|
69
|
-
}
|
|
70
|
-
|
|
71
|
-
/**
|
|
72
|
-
* Checks if the configured GeoServer REST connection exists.
|
|
73
|
-
*
|
|
74
|
-
* @returns {Boolean} If the connection exists
|
|
75
|
-
*/
|
|
76
|
-
async exists () {
|
|
77
|
-
try {
|
|
78
|
-
const versionInfo = await this.getVersion();
|
|
79
|
-
if (versionInfo) {
|
|
80
|
-
return true;
|
|
81
|
-
} else {
|
|
82
|
-
return false;
|
|
83
|
-
}
|
|
84
|
-
} catch (error) {
|
|
85
|
-
return false;
|
|
86
|
-
}
|
|
47
|
+
this.settings = new SettingsClient(this.url, this.auth);
|
|
48
|
+
/** @member {AboutClient} about GeoServer REST client instance for about endpoint */
|
|
49
|
+
this.about = new AboutClient(this.url, this.auth);
|
|
87
50
|
}
|
|
88
51
|
}
|
package/package.json
CHANGED
|
@@ -1,18 +1,31 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "geoserver-node-client",
|
|
3
|
-
"version": "0.0
|
|
3
|
+
"version": "1.0.0",
|
|
4
4
|
"description": "Node.js client for GeoServer REST API",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "geoserver-rest-client.js",
|
|
7
7
|
"scripts": {
|
|
8
8
|
"demo": "node demo/index.js",
|
|
9
9
|
"docs": "./node_modules/.bin/jsdoc geoserver-rest-client.js src/*.js DOCS_HOME.md",
|
|
10
|
-
"lint": "eslint
|
|
11
|
-
"lint-fix": "eslint --fix
|
|
10
|
+
"lint": "eslint src/**/*.js test/**/*.js scripts/**/*.js geoserver-rest-client.js",
|
|
11
|
+
"lint-fix": "eslint --fix src/**/*.js test/**/*.js scripts/**/*.js geoserver-rest-client.js",
|
|
12
12
|
"pretest": "npm run lint",
|
|
13
13
|
"test": "mocha --timeout 10000",
|
|
14
|
-
"release": "release-it"
|
|
14
|
+
"release": "release-it",
|
|
15
|
+
"build": "npm run build:clean && npm run build:babel && npm run build:fixup",
|
|
16
|
+
"build:clean": "rm -rf dist",
|
|
17
|
+
"build:babel": "babel geoserver-rest-client.js -d dist && babel src -d dist/src",
|
|
18
|
+
"build:fixup": "node scripts/create-custom-package-json.js"
|
|
15
19
|
},
|
|
20
|
+
"exports": {
|
|
21
|
+
"import": "./geoserver-rest-client.js",
|
|
22
|
+
"require": "./dist/geoserver-rest-client.js"
|
|
23
|
+
},
|
|
24
|
+
"files": [
|
|
25
|
+
"geoserver-rest-client.js",
|
|
26
|
+
"src",
|
|
27
|
+
"dist"
|
|
28
|
+
],
|
|
16
29
|
"keywords": [
|
|
17
30
|
"GeoServer",
|
|
18
31
|
"REST",
|
|
@@ -24,6 +37,10 @@
|
|
|
24
37
|
"node-fetch": "^2.6.5"
|
|
25
38
|
},
|
|
26
39
|
"devDependencies": {
|
|
40
|
+
"@babel/cli": "^7.17.10",
|
|
41
|
+
"@babel/core": "^7.17.12",
|
|
42
|
+
"@babel/plugin-transform-runtime": "^7.18.0",
|
|
43
|
+
"@babel/preset-env": "^7.17.12",
|
|
27
44
|
"chai": "^4.3.4",
|
|
28
45
|
"eslint": "^7.32.0",
|
|
29
46
|
"eslint-config-standard": "^14.1.1",
|
|
@@ -31,8 +48,8 @@
|
|
|
31
48
|
"eslint-plugin-node": "^11.1.0",
|
|
32
49
|
"eslint-plugin-promise": "^4.3.1",
|
|
33
50
|
"eslint-plugin-standard": "^4.1.0",
|
|
34
|
-
"jsdoc": "^3.6.
|
|
51
|
+
"jsdoc": "^3.6.10",
|
|
35
52
|
"mocha": "^9.1.3",
|
|
36
|
-
"release-it": "^14.
|
|
53
|
+
"release-it": "^14.14.3"
|
|
37
54
|
}
|
|
38
55
|
}
|
package/src/about.js
ADDED
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import fetch from 'node-fetch';
|
|
2
|
+
import { GeoServerResponseError, getGeoServerResponseText } from './util/geoserver.js';
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* Client for GeoServer "about" endpoint
|
|
6
|
+
*
|
|
7
|
+
* @module AboutClient
|
|
8
|
+
*/
|
|
9
|
+
export default class AboutClient {
|
|
10
|
+
/**
|
|
11
|
+
* Creates a GeoServer REST AboutClient instance.
|
|
12
|
+
*
|
|
13
|
+
* @param {String} url The URL of the GeoServer REST API endpoint
|
|
14
|
+
* @param {String} auth The Basic Authentication string
|
|
15
|
+
*/
|
|
16
|
+
constructor (url, auth) {
|
|
17
|
+
this.url = url;
|
|
18
|
+
this.auth = auth;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
/**
|
|
22
|
+
* Get the GeoServer version.
|
|
23
|
+
*
|
|
24
|
+
* @throws Error if request fails
|
|
25
|
+
*
|
|
26
|
+
* @returns {Object} The version of GeoServer
|
|
27
|
+
*/
|
|
28
|
+
async getVersion () {
|
|
29
|
+
const url = this.url + 'about/version.json';
|
|
30
|
+
const response = await fetch(url, {
|
|
31
|
+
credentials: 'include',
|
|
32
|
+
method: 'GET',
|
|
33
|
+
headers: {
|
|
34
|
+
Authorization: this.auth
|
|
35
|
+
}
|
|
36
|
+
});
|
|
37
|
+
|
|
38
|
+
if (!response.ok) {
|
|
39
|
+
const geoServerResponse = await getGeoServerResponseText(response);
|
|
40
|
+
throw new GeoServerResponseError(null, geoServerResponse);
|
|
41
|
+
}
|
|
42
|
+
return response.json();
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
/**
|
|
46
|
+
* Checks if the configured GeoServer REST connection exists.
|
|
47
|
+
*
|
|
48
|
+
* @returns {Boolean} If the connection exists
|
|
49
|
+
*/
|
|
50
|
+
async exists () {
|
|
51
|
+
let versionInfo;
|
|
52
|
+
try {
|
|
53
|
+
versionInfo = await this.getVersion();
|
|
54
|
+
return !!versionInfo
|
|
55
|
+
} catch (error) {
|
|
56
|
+
return false;
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
}
|