Skip to content

Commit 9c81fdc

Browse files
committed
Promisify util#serialize and util#translate
1 parent 51ee61e commit 9c81fdc

File tree

3 files changed

+62
-67
lines changed

3 files changed

+62
-67
lines changed

lib/handlers/get.js

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -131,16 +131,17 @@ function handler (req, res, next) {
131131
}
132132

133133
// Translate from the contentType found to the possibleRDFType desired
134-
translate(stream, baseUri, contentType, possibleRDFType, function (err, data) {
135-
if (err) {
134+
translate(stream, baseUri, contentType, possibleRDFType)
135+
.then((data) => {
136+
debug(req.originalUrl + ' translating ' + contentType + ' -> ' + possibleRDFType)
137+
res.setHeader('Content-Type', possibleRDFType)
138+
res.send(data)
139+
return next()
140+
})
141+
.catch((err) => {
136142
debug('error translating: ' + req.originalUrl + ' ' + contentType + ' -> ' + possibleRDFType + ' -- ' + 500 + ' ' + err.message)
137143
return next(error(500, 'Error translating between RDF formats'))
138-
}
139-
debug(req.originalUrl + ' translating ' + contentType + ' -> ' + possibleRDFType)
140-
res.setHeader('Content-Type', possibleRDFType)
141-
res.send(data)
142-
return next()
143-
})
144+
})
144145
})
145146
}
146147

lib/ldp.js

Lines changed: 15 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -165,18 +165,13 @@ class LDP {
165165
))
166166
})
167167
.catch(() => { throw error(500, "Can't list container") })
168-
.then(() => new Promise((resolve, reject) => {
169-
// TODO 'text/turtle' is fixed, should be contentType instead
170-
// This forces one more translation turtle -> desired
171-
serialize(resourceGraph, reqUri, 'text/turtle', function (err, result) {
172-
if (err) {
173-
debug.handlers('GET -- Error serializing container: ' + err)
174-
reject(error(500, "Can't serialize container"))
175-
} else {
176-
resolve(result)
177-
}
178-
})
179-
}))
168+
// TODO 'text/turtle' is fixed, should be contentType instead
169+
// This forces one more translation turtle -> desired
170+
.then(() => serialize(resourceGraph, reqUri, 'text/turtle')
171+
.catch((err) => {
172+
debug.handlers('GET -- Error serializing container: ' + err)
173+
return Promise.reject(error(500, "Can't serialize container"))
174+
}))
180175
.then(result => callback(null, result), callback)
181176
}
182177

@@ -237,17 +232,17 @@ class LDP {
237232
let hostname = parsedUri.hostname
238233
let path = parsedUri.pathname
239234

240-
serialize(graph, uri, contentType, (error, content) => {
241-
if (error) { return reject(error) }
235+
serialize(graph, uri, contentType)
236+
.then((content) => {
237+
let stream = stringToStream(content)
242238

243-
let stream = stringToStream(content)
239+
this.put(hostname, path, stream, (error) => {
240+
if (error) { return reject(error) }
244241

245-
this.put(hostname, path, stream, (error) => {
246-
if (error) { return reject(error) }
247-
248-
resolve(graph)
242+
resolve(graph)
243+
})
249244
})
250-
})
245+
.catch(reject)
251246
})
252247
}
253248

lib/utils.js

Lines changed: 38 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -143,51 +143,50 @@ function hasSuffix (path, suffixes) {
143143
return false
144144
}
145145

146-
function serialize (graph, baseUri, contentType, callback) {
147-
try {
148-
// target, kb, base, contentType, callback
149-
$rdf.serialize(null, graph, baseUri, contentType, function (err, result) {
150-
if (err) {
151-
console.log(err)
152-
return callback(err)
153-
}
154-
if (result === undefined) {
155-
return callback(new Error('Error serializing the graph to ' +
156-
contentType))
157-
}
146+
function serialize (graph, baseUri, contentType) {
147+
return new Promise((resolve, reject) => {
148+
try {
149+
// target, kb, base, contentType, callback
150+
$rdf.serialize(null, graph, baseUri, contentType, function (err, result) {
151+
if (err) {
152+
return reject(err)
153+
}
154+
if (result === undefined) {
155+
return reject(new Error('Error serializing the graph to ' +
156+
contentType))
157+
}
158158

159-
return callback(null, result)
160-
})
161-
} catch (err) {
162-
console.log(err)
163-
callback(err)
164-
}
159+
resolve(result)
160+
})
161+
} catch (err) {
162+
reject(err)
163+
}
164+
})
165165
}
166166

167-
function translate (stream, baseUri, from, to, callback) {
168-
// Handle Turtle Accept header
169-
if (to === 'text/turtle' ||
170-
to === 'text/n3' ||
171-
to === 'application/turtle' ||
172-
to === 'application/n3') {
173-
to = 'text/turtle'
174-
}
167+
function translate (stream, baseUri, from, to) {
168+
return new Promise((resolve, reject) => {
169+
// Handle Turtle Accept header
170+
if (to === 'text/turtle' ||
171+
to === 'text/n3' ||
172+
to === 'application/turtle' ||
173+
to === 'application/n3') {
174+
to = 'text/turtle'
175+
}
175176

176-
let data = ''
177-
stream
178-
.on('data', function (chunk) {
179-
data += chunk
180-
})
181-
.on('end', function () {
182-
const graph = $rdf.graph()
183-
$rdf.parse(data, graph, baseUri, from, function (err) {
184-
if (err) return callback(err)
185-
serialize(graph, baseUri, to, function (err, data) {
186-
if (err) return callback(err)
187-
callback(null, data)
177+
let data = ''
178+
stream
179+
.on('data', function (chunk) {
180+
data += chunk
181+
})
182+
.on('end', function () {
183+
const graph = $rdf.graph()
184+
$rdf.parse(data, graph, baseUri, from, function (err) {
185+
if (err) return reject(err)
186+
resolve(serialize(graph, baseUri, to))
188187
})
189188
})
190-
})
189+
})
191190
}
192191

193192
function stringToStream (string) {

0 commit comments

Comments
 (0)