Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
app.get('/sitemap.xml', function(req, res) {
res.header('Content-Type', 'application/xml');
res.header('Content-Encoding', 'gzip');
// if we have a cached entry send it
if (sitemap) {
res.send(sitemap)
return
}
try {
// this could just as easily be a db response
const gzippedStream = fs.createReadStream(resolve(__dirname, '..', 'tests', 'mocks', 'perf-data.json'))
.pipe(parser())
.pipe(streamArray()) // replace with streamValues for JSONStream
.pipe(map.obj(chunk => chunk.value))
.pipe(new SitemapStream({ hostname: 'https://example.com/' }))
.pipe(createGzip())
// cache the response
streamToPromise(gzippedStream).then(sm => sitemap = sm)
// stream the response
gzippedStream.pipe(res).on('error', (e) => {throw e})
} catch (e) {
console.error(e)
res.status(500).end()
}
});
app.get('/sitemap.xml', function(req, res) {
res.header('Content-Type', 'application/xml');
res.header('Content-Encoding', 'gzip');
// if we have a cached entry send it
if (sitemap) {
res.send(sitemap)
return
}
try {
// this could just as easily be a db response
const gzippedStream = fs.createReadStream(resolve(__dirname, '..', 'tests', 'mocks', 'perf-data.json'))
.pipe(parser())
.pipe(streamArray()) // replace with streamValues for JSONStream
.pipe(map.obj(chunk => chunk.value))
.pipe(new SitemapStream({ hostname: 'https://example.com/' }))
.pipe(createGzip())
// cache the response
streamToPromise(gzippedStream).then(sm => sitemap = sm)
// stream the response
gzippedStream.pipe(res).on('error', (e) => {throw e})
} catch (e) {
console.error(e)
res.status(500).end()
}
});
public static async parseQueryResultResponseAsync(
bodyStream: stream.Stream,
conventions: DocumentConventions,
fromCache: boolean,
bodyCallback?: (body: string) => void): Promise {
const resultsPromise = RavenCommandResponsePipeline.create()
.collectBody(bodyCallback)
.parseJsonAsync([
pick({ filter: "Results" }),
streamArray()
])
.streamKeyCaseTransform("camel", "DOCUMENT_LOAD") // we don't care about the case in facets
.collectResult((result, next) => [...result, next["value"]], [])
.process(bodyStream);
const includesPromise = parseDocumentIncludes(bodyStream, conventions);
const restPromise = parseRestOfOutput(bodyStream, /^Results|Includes$/);
const [results, includes, rest] = await Promise.all([resultsPromise, includesPromise, restPromise]);
const rawResult = Object.assign({} as any, rest, { results, includes }) as QueryResult;
const queryResult = conventions.objectMapper.fromObjectLiteral(rawResult, {
typeName: QueryResult.name,
nestedTypes: {
indexTimestamp: "date",
lastQueryTime: "date"
.streamKeyCaseTransform({
defaultTransform: "camel",
ignorePaths: [/\./],
})
.collectResult({
initResult: [] as GetResponse[],
reduceResults: (result: GetResponse[], next) => {
return [...result, next["value"]];
}
})
.process(bodyStream);
const responsesResultsPromise = this._pipeline()
.parseJsonAsync([
pick({ filter: "Results" }),
pick({ filter: /^\d+\.Result\b/i }),
streamValues()
])
.collectResult({
initResult: [] as string[],
reduceResults: (result: string[], next) => {
// TODO try read it another way
const resResult = JSON.stringify(next["value"]);
return [...result, resResult];
}
})
.process(bodyStream);
const [responses, responsesResults] = await Promise.all([responsesPromise, responsesResultsPromise]);
for (let i = 0; i < responses.length; i++) {
const res = responses[i];
res.result = responsesResults[i];
public static async parseQueryResultResponseAsync(
bodyStream: stream.Stream,
conventions: DocumentConventions,
fromCache: boolean,
bodyCallback?: (body: string) => void): Promise {
const resultsPromise = RavenCommandResponsePipeline.create()
.collectBody(bodyCallback)
.parseJsonAsync([
pick({ filter: "Results" }),
streamArray()
])
.streamKeyCaseTransform("camel", "DOCUMENT_LOAD") // we don't care about the case in facets
.collectResult((result, next) => [...result, next["value"]], [])
.process(bodyStream);
const includesPromise = parseDocumentIncludes(bodyStream, conventions);
const restPromise = parseRestOfOutput(bodyStream, /^Results|Includes$/);
const [results, includes, rest] = await Promise.all([resultsPromise, includesPromise, restPromise]);
const rawResult = Object.assign({} as any, rest, { results, includes }) as QueryResult;
const queryResult = conventions.objectMapper.fromObjectLiteral(rawResult, {
typeName: QueryResult.name,
nestedTypes: {
indexTimestamp: "date",
lastQueryTime: "date"
}
defaultTransform: "camel",
ignorePaths: [/\./],
})
.collectResult({
initResult: [] as GetResponse[],
reduceResults: (result: GetResponse[], next) => {
return [...result, next["value"]];
}
})
.process(bodyStream);
const responsesResultsPromise = this._pipeline()
.parseJsonAsync([
pick({ filter: "Results" }),
pick({ filter: /^\d+\.Result\b/i }),
streamValues()
])
.collectResult({
initResult: [] as string[],
reduceResults: (result: string[], next) => {
// TODO try read it another way
const resResult = JSON.stringify(next["value"]);
return [...result, resResult];
}
})
.process(bodyStream);
const [responses, responsesResults] = await Promise.all([responsesPromise, responsesResultsPromise]);
for (let i = 0; i < responses.length; i++) {
const res = responses[i];
res.result = responsesResults[i];
const command = this._commands[i];
const server = http.createServer((req, res) => {
if (req.method === 'POST') {
// messages TO the target
Asm.connectTo(
pump(req, jsonParser())
).on('done', ({current: object}) => {
this.trackRequest(object);
});
}
if (!ws) {
proxy.web(req, res);
}
});
const server = http.createServer((req, res) => {
if (req.method === 'POST') {
// messages TO the target
Asm.connectTo(
pump(req, jsonParser())
).on('done', ({current: object}) => {
this.trackRequest({ ws: false, data: object});
});
}
if (!ws) {
proxy.web(req, res);
}
});
const server = http.createServer((req, res) => {
if (req.method === 'POST') {
// messages TO the target
Asm.connectTo(
pump(req, jsonParser())
).on('done', ({current: object}) => {
this.trackRequest({ ws: false, data: object});
});
}
if (!ws) {
proxy.web(req, res);
}
});
const server = http.createServer((req, res) => {
if (req.method === 'POST') {
// messages TO the target
Asm.connectTo(
pump(req, jsonParser())
).on('done', ({current: object}) => {
this.trackRequest({ ws: false, data: object});
});
}
if (!ws) {
proxy.web(req, res);
}
});