Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
const assert = require('chai').assert
const { getRequestingWebId, verifyDelegator } = require('../lib/handlers/allow')
const rdf = require('rdflib')
const ns = require('solid-namespace')(rdf)
const alice = 'https://alice.com' // principal
const agentWebId = 'https://agent.example.com' // secretary
const verifiedSecretaryGraph = rdf.graph()
verifiedSecretaryGraph.add(
rdf.namedNode(alice),
ns.acl('delegates'),
rdf.namedNode(agentWebId)
)
const notVerifiedSecretaryGraph = rdf.graph()
describe('handlers/allow.js', () => {
describe('getRequestingWebId()', () => {
const emptyFetchDocument = () => {}
it('should return null if no webId and no onBehalfOf present', () => {
let webId // no secretary
let onBehalfOf // no principal
return getRequestingWebId(webId, onBehalfOf, emptyFetchDocument)
.then(userId => {
assert.equal(userId, null,
uris.map(function (u) {
var target = $rdf.sym(u) // Attachment needs text label to disinguish I think not icon.
console.log('Dropped on attachemnt ' + u) // icon was: UI.icons.iconBase + 'noun_25830.svg'
ins.push($rdf.st(subject, predicate, target, doc))
})
kb.updater.update([], ins, function (uri, ok, errorBody, _xhr) {
data: `# ${new Date()} Blank initial Type index
`,
contentType: 'text/turtle'
})
return context
} catch (e) {
const msg = `Error creating new index ${e}`
widgets.complain(context, msg)
}
} // putIndex
context.index = context.index || {}
context.index[visibility] = context.index[visibility] || []
let newIndex
if (context.index[visibility].length === 0) {
newIndex = $rdf.sym(`${relevant.dir().uri + visibility}TypeIndex.ttl`)
console.log(`Linking to new fresh type index ${newIndex}`)
if (!confirm(`OK to create a new empty index file at ${newIndex}, overwriting anything that is now there?`)) {
throw new Error('cancelled by user')
}
console.log(`Linking to new fresh type index ${newIndex}`)
const addMe = [
$rdf.st(context.me, ns.solid(`${visibility}TypeIndex`), newIndex, relevant)
]
try {
await updatePromise(kb.updater, [], addMe)
} catch (err) {
const msg = `Error saving type index link saving back ${newIndex}: ${err}`
widgets.complain(context, msg)
return context
}
prev = here
next = kb.any(here, PAD('next'))
queue = next
queueProperty = 'newlinesBefore'
}
tr1 = ele.parentNode
} else {
prev = subject
next = subject
tr1 = undefined
}
var chunk = UI.widgets.newThing(padDoc)
var label = chunk.uri.slice(-4)
var del = [$rdf.st(prev, PAD('next'), next, padDoc)]
var ins = [
$rdf.st(prev, PAD('next'), chunk, padDoc),
$rdf.st(chunk, PAD('next'), next, padDoc),
$rdf.st(chunk, ns.dc('author'), me, padDoc),
$rdf.st(chunk, ns.sioc('content'), '', padDoc)
]
if (indent > 0) {
// Do not inherit
ins.push($rdf.st(chunk, PAD('indent'), indent, padDoc))
}
console.log(' Fresh chunk ' + label + ' proposed')
updater.update(del, ins, function (uri, ok, errorBody, _xhr) {
if (!ok) {
// alert("Error writing new line " + label + ": " + errorBody);
console.log(' ERROR writing new line ' + label + ': ' + errorBody)
widgets.complain(context, msg)
}
} // putIndex
context.index = context.index || {}
context.index[visibility] = context.index[visibility] || []
let newIndex
if (context.index[visibility].length === 0) {
newIndex = $rdf.sym(`${relevant.dir().uri + visibility}TypeIndex.ttl`)
console.log(`Linking to new fresh type index ${newIndex}`)
if (!confirm(`OK to create a new empty index file at ${newIndex}, overwriting anything that is now there?`)) {
throw new Error('cancelled by user')
}
console.log(`Linking to new fresh type index ${newIndex}`)
const addMe = [
$rdf.st(context.me, ns.solid(`${visibility}TypeIndex`), newIndex, relevant)
]
try {
await updatePromise(kb.updater, [], addMe)
} catch (err) {
const msg = `Error saving type index link saving back ${newIndex}: ${err}`
widgets.complain(context, msg)
return context
}
console.log(`Creating new fresh type index file${newIndex}`)
await putIndex(newIndex)
context.index[visibility].push(newIndex) // @@ wait
} else {
// officially exists
const ixs = context.index[visibility]
try {
//
var thisModule = {}
module.exports = thisModule
var $rdf = require('rdflib')
// This used to be a faw function (no ".expand" but that caused the module exports all to be dropped)
thisModule.expand = function (prefixed) {
var pair = prefixed.split(':')
if (pair.length === 0) throw new Error('Prefixed name has no colon: ' + prefixed)
if (!(pair[0] in thisModule)) throw new Error('Unregistered namespace prefix in: ' + prefixed)
return thisModule[pair[0]](pair[1])
}
thisModule.auth = $rdf.Namespace('http://www.w3.org/ns/auth/acl#') // @@ obsolete - use acl:
thisModule.acl = $rdf.Namespace('http://www.w3.org/ns/auth/acl#')
thisModule.arg = $rdf.Namespace('http://www.w3.org/ns/pim/arg#')
thisModule.cal = $rdf.Namespace('http://www.w3.org/2002/12/cal/ical#')
thisModule.contact = $rdf.Namespace('http://www.w3.org/2000/10/swap/pim/contact#')
thisModule.dc = $rdf.Namespace('http://purl.org/dc/elements/1.1/')
thisModule.dct = $rdf.Namespace('http://purl.org/dc/terms/')
thisModule.doap = $rdf.Namespace('http://usefulinc.com/ns/doap#')
thisModule.foaf = $rdf.Namespace('http://xmlns.com/foaf/0.1/')
thisModule.http = $rdf.Namespace('http://www.w3.org/2007/ont/http#')
thisModule.httph = $rdf.Namespace('http://www.w3.org/2007/ont/httph#')
thisModule.icalTZ = $rdf.Namespace('http://www.w3.org/2002/12/cal/icaltzd#') // Beware: not cal:
thisModule.ldp = $rdf.Namespace('http://www.w3.org/ns/ldp#')
thisModule.link = thisModule.tab = thisModule.tabont = $rdf.Namespace('http://www.w3.org/2007/ont/link#')
thisModule.log = $rdf.Namespace('http://www.w3.org/2000/10/swap/log#')
thisModule.meeting = $rdf.Namespace('http://www.w3.org/ns/pim/meeting#')
thisModule.mo = $rdf.Namespace('http://purl.org/ontology/mo/')
module.exports = thisModule
var $rdf = require('rdflib')
// This used to be a faw function (no ".expand" but that caused the module exports all to be dropped)
thisModule.expand = function (prefixed) {
var pair = prefixed.split(':')
if (pair.length === 0) throw new Error('Prefixed name has no colon: ' + prefixed)
if (!(pair[0] in thisModule)) throw new Error('Unregistered namespace prefix in: ' + prefixed)
return thisModule[pair[0]](pair[1])
}
thisModule.auth = $rdf.Namespace('http://www.w3.org/ns/auth/acl#') // @@ obsolete - use acl:
thisModule.acl = $rdf.Namespace('http://www.w3.org/ns/auth/acl#')
thisModule.arg = $rdf.Namespace('http://www.w3.org/ns/pim/arg#')
thisModule.cal = $rdf.Namespace('http://www.w3.org/2002/12/cal/ical#')
thisModule.contact = $rdf.Namespace('http://www.w3.org/2000/10/swap/pim/contact#')
thisModule.dc = $rdf.Namespace('http://purl.org/dc/elements/1.1/')
thisModule.dct = $rdf.Namespace('http://purl.org/dc/terms/')
thisModule.doap = $rdf.Namespace('http://usefulinc.com/ns/doap#')
thisModule.foaf = $rdf.Namespace('http://xmlns.com/foaf/0.1/')
thisModule.http = $rdf.Namespace('http://www.w3.org/2007/ont/http#')
thisModule.httph = $rdf.Namespace('http://www.w3.org/2007/ont/httph#')
thisModule.icalTZ = $rdf.Namespace('http://www.w3.org/2002/12/cal/icaltzd#') // Beware: not cal:
thisModule.ldp = $rdf.Namespace('http://www.w3.org/ns/ldp#')
thisModule.link = thisModule.tab = thisModule.tabont = $rdf.Namespace('http://www.w3.org/2007/ont/link#')
thisModule.log = $rdf.Namespace('http://www.w3.org/2000/10/swap/log#')
thisModule.meeting = $rdf.Namespace('http://www.w3.org/ns/pim/meeting#')
thisModule.mo = $rdf.Namespace('http://purl.org/ontology/mo/')
thisModule.owl = $rdf.Namespace('http://www.w3.org/2002/07/owl#')
thisModule.pad = $rdf.Namespace('http://www.w3.org/ns/pim/pad#')
thisModule.patch = $rdf.Namespace('http://www.w3.org/ns/pim/patch#')
assignURI(req.fullURL, req.get('Slug'), function(err, loc) {
if (err !== 201) {
console.log(err)
res.sendStatus(500)
return
}
// Parse the entity response body, the resource to add to the container
var newMember = new rdflib.IndexedFormula();
newMember.uri = loc;
rdflib.parse(req.rawBody, newMember, loc, serialize, function(err, document) {
// document and newMember are the same thing from here on...
if (err) {
// allow the URI to be used again if this is a bad request
console.log(`error parsing POST body for ${loc}, error: ${err}`);
db.releaseURI(loc)
res.sendStatus(400)
return
}
updateInteractionModel(newMember); // newMember is RDFResource, DirectContainer or BasicContainer
addHeaders(req, res, newMember)
// check if the client requested a specific interaction model through a Link header
// if so, override what we found from the RDF content
// TODO: look for Link type=container as well
if (hasResourceLink(req)) {
newMember.interactionModel = ldp.RDFSource
function serialize (graph, baseUri, contentType, callback) {
try {
// target, kb, base, contentType, callback
$rdf.serialize(null, graph, baseUri, contentType, function (err, result) {
if (err) {
console.log(err)
return callback(err)
}
if (result === undefined) {
return callback(new Error('Error serializing the graph to ' +
contentType))
}
return callback(null, result)
})
} catch (err) {
console.log(err)
callback(err)
}
}
var h = (res && res.hasOwnProperty('headers')) ? res.headers : null;
var b = (h && h.hasOwnProperty('location')) ? h['location'] : this.uri;
if (this.options.baseUrl === '') this.options.baseUrl = b;
if (err) return this.parseFile();
// console.log( res.headers, res.statusCode );
if (res.statusCode == 200) {
var xmlData = '';
this.options.contentType = this.getType(this.uri, res, this.options.contentType);
if (this.options.contentType === 'application/rdf+xml') {
xmlData = body;
} else {
var graph = new rdflib.IndexedFormula();
// TODO - base parameter
var rawData = rdflib.parse(body, graph, this.uri, this.options.contentType);
xmlData = rdflib.serialize(rawData, graph, this.uri, 'application/rdf+xml');
}
var json = this.parseOWL(xmlData, this.options);
return this.cb(null, json);
}
}