11module . exports . uriToFilename = uriToFilename
22module . exports . uriToRelativeFilename = uriToRelativeFilename
33module . exports . filenameToBaseUri = filenameToBaseUri
4- module . exports . uriAbs = uriAbs
4+ module . exports . getBaseUri = getBaseUri
55module . exports . pathBasename = pathBasename
6- module . exports . uriBase = uriBase
6+ module . exports . getFullUri = getFullUri
77module . exports . hasSuffix = hasSuffix
88module . exports . getResourceLink = getResourceLink
99module . exports . parse = parse
@@ -20,7 +20,7 @@ var path = require('path')
2020var S = require ( 'string' )
2121var $rdf = require ( 'rdflib' )
2222var from = require ( 'from2' )
23- var url = require ( 'url' )
23+ const url = require ( 'url' )
2424
2525/**
2626 * Returns a fully qualified URL from an Express.js Request object.
@@ -98,12 +98,26 @@ function filenameToBaseUri (filename, uri, base) {
9898 return uri + '/' + uriPath
9999}
100100
101- function uriAbs ( req ) {
101+ function getBaseUri ( req ) {
102102 return req . protocol + '://' + req . get ( 'host' )
103103}
104104
105- function uriBase ( req ) {
106- return uriAbs ( req ) + ( req . baseUrl || '' )
105+ /**
106+ * Composes and returns the fully-qualified URI for the request, to be used
107+ * as a base URI for RDF parsing or serialization. For example, if a request
108+ * is to `Host: example.com`, `GET /files/` using the `https:` protocol,
109+ * then:
110+ *
111+ * ```
112+ * getFullUri(req) // -> 'https://example.com/files/'
113+ * ```
114+ *
115+ * @param req {IncomingMessage}
116+ *
117+ * @return {string }
118+ */
119+ function getFullUri ( req ) {
120+ return getBaseUri ( req ) + url . resolve ( req . baseUrl , req . path )
107121}
108122
109123function pathBasename ( fullpath ) {
0 commit comments