@@ -181,7 +181,7 @@ jobs:
181181 if (isDef(lst.pageInfo.pageSize)) _pageSize = Number(lst.pageInfo.pageSize)
182182 } else {
183183 if (isDef(request.params.page)) _page = Number(request.params.page)
184- if (isDef(request.params.pageSize)) _pageSize = Number(request.params.pageSize)
184+ // if (isDef(request.params.pageSize)) _pageSize = Number(request.params.pageSize)
185185 }
186186 if (!isNumber(_page) || _page <= 0) _page = 1
187187 if (!isNumber(_pageSize) || _pageSize < 0) _pageSize = 0
@@ -423,3 +423,67 @@ jobs:
423423 _options.parentPath = args.path
424424 _options.port = args.port
425425 global.__GBHTTPD[String(args.port) + args.uri] = _options
426+
427+ # --------------------------
428+ - name : HTTP Browser API
429+ deps :
430+ - HTTP Start Server
431+ to : HTTP Service
432+ typeArgs :
433+ noLog : false
434+ shortcut :
435+ name : httpdBrowserAPI
436+ keyArg : port
437+ args :
438+ uri : uri
439+ browseUri : browseUri
440+ help :
441+ text : Provides a HTTP API to access getList/getObj for any HTTP Browse generic implementation.
442+ expects :
443+ - name : port
444+ desc : (Number) The port where the server was made available (default is 8091)
445+ - name : uri
446+ desc : (String) The URI where the HTTP Browser API will be available.
447+ - name : browseUri
448+ desc : (String) The HTTP Browse generic URI to target (can be overridden by request param browseUri)
449+ check :
450+ in :
451+ port : toNumber.isNumber.default(8091)
452+ uri : isString.default("/api/browse")
453+ browseUri : isString.default(__)
454+ args :
455+ execURI : | # js
456+ try {
457+ var targetUri = args.browseUri
458+ if (isUnDef(targetUri) || targetUri === "") targetUri = request.params.browseUri
459+ if (isUnDef(targetUri) || targetUri === "") targetUri = request.params.uri
460+ if (isUnDef(targetUri) || targetUri === "") {
461+ return { data: "Missing browseUri", mimetype: "text/plain", status: 400, header: {} }
462+ }
463+
464+ var _options = global.__GBHTTPD[String(port) + targetUri]
465+ if (isUnDef(_options)) {
466+ return { data: "Unknown browseUri", mimetype: "text/plain", status: 404, header: {} }
467+ }
468+
469+ var targetPath = _$(request.params.path).isString().default("")
470+ var _req = merge({}, request)
471+ _req.uri = targetUri + (targetPath.length > 0 ? "/" + targetPath.replace(/^\/+/, "") : "")
472+
473+ var action = _$(request.params.action).isString().default("list")
474+ if (action == "obj") {
475+ var _obj = _options._fns.getObj(_req, _options)
476+ if (request.params.raw == "true") {
477+ if (isDef(_obj.stream)) return server.replyStream(_obj.stream, ow.server.httpd.getMimeType(targetPath))
478+ if (isDef(_obj.file)) return server.replyStream(io.readFileStream(_obj.file), ow.server.httpd.getMimeType(targetPath))
479+ if (isDef(_obj.data)) return server.replyOK(_obj.data, ow.server.httpd.getMimeType(targetPath))
480+ }
481+ return ow.server.httpd.replyJSMap(server, _obj)
482+ }
483+
484+ var _lst = _options._fns.getList(_req, _options)
485+ return ow.server.httpd.replyJSMap(server, _lst)
486+ } catch(e) {
487+ logErr(`Error: ${e.message}`)
488+ return { data: "Internal error", mimetype: "text/plain", status: 500, header: {} }
489+ }
0 commit comments