@@ -13,12 +13,14 @@ module.exports.debrack = debrack
1313module . exports . stripLineEndings = stripLineEndings
1414module . exports . fullUrlForReq = fullUrlForReq
1515module . exports . routeResolvedFile = routeResolvedFile
16+ module . exports . getQuota = getQuota
1617
1718const fs = require ( 'fs-extra' )
1819const path = require ( 'path' )
1920const $rdf = require ( 'rdflib' )
2021const from = require ( 'from2' )
2122const url = require ( 'url' )
23+ var ns = require ( 'solid-namespace' ) ( $rdf )
2224
2325/**
2426 * Returns a fully qualified URL from an Express.js Request object.
@@ -245,9 +247,27 @@ function routeResolvedFile (router, path, file, appendFileName = true) {
245247 * may store or Infinity if no limit
246248 */
247249
248- /* function getQuota (req) {
249- // const path = reqToPath(req)
250- var quota = 25
250+ function getQuota ( root , serverUri ) {
251+ const filename = path . join ( root , 'settings/serverSide.ttl' )
252+ const prefs = fs . readFileSync ( filename , 'utf8' )
253+ var graph = $rdf . graph ( )
254+ const storageUri = serverUri + '/'
255+ $rdf . parse ( prefs , graph , storageUri , 'text/turtle' )
256+ const lit = graph . each ( $rdf . sym ( storageUri ) , ns . solid ( 'storageQuota' ) , undefined ) [ 0 ]
257+ var quota = lit . value
258+ const unitUri = 'http://www.w3.invalid/ns#'
259+ // The following should be encoded in the ontology
260+ switch ( lit . datatype . value ) {
261+ case unitUri + 'kilobyte' :
262+ quota *= 1000
263+ break
264+ case unitUri + 'megabyte' :
265+ quota *= 1000000
266+ break
267+ case unitUri + 'gigabyte' :
268+ quota *= 1000000000
269+ break
270+ }
251271 return quota
252272}
253273
0 commit comments