exframe-api
Advanced tools
Comparing version 0.4.9 to 0.4.10
{ | ||
"name": "exframe-api", | ||
"version": "0.4.9", | ||
"version": "0.4.10", | ||
"description": "exframe-api", | ||
@@ -48,3 +48,3 @@ "main": "index.js", | ||
}, | ||
"gitHead": "717928dc42e073c76c1df1edcff6801ba09e8fd3" | ||
"gitHead": "eaba2b1077a6fdbe2c786237bbaafbb2e6cc7543" | ||
} |
@@ -14,6 +14,7 @@ const Content = require('./Content'); | ||
* @param {*} schema | ||
* @param {string} responseType | ||
*/ | ||
response(statusCode, description, schema) { | ||
response(statusCode, description, schema, responseType = 'application/json') { | ||
const content = new Content(); | ||
content.mediaType('application/json', schema); | ||
content.mediaType(responseType, responseType === 'application/json' ? schema : undefined); | ||
const response = new Response(description, { content }); | ||
@@ -24,3 +25,2 @@ this.set(statusCode, response); | ||
/** | ||
* | ||
* @param {*} schema | ||
@@ -30,7 +30,8 @@ * @param {{ | ||
* description?: string | ||
* responseType?: string | ||
* }} param1 | ||
* @returns | ||
*/ | ||
success(schema, { statusCode = '200', description = 'OK' } = {}) { | ||
this.response(statusCode, description, schema); | ||
success(schema, { statusCode = '200', description = 'OK', responseType = 'application/json' } = {}) { | ||
this.response(statusCode, description, schema, responseType); | ||
@@ -37,0 +38,0 @@ return this; |
@@ -56,2 +56,16 @@ { | ||
}, | ||
"/resources/stream": { | ||
"get": { | ||
"summary": "returns a data stream", | ||
"description": "returns a data stream", | ||
"responses": { | ||
"200": { | ||
"description": "OK", | ||
"content": { | ||
"application/octet-stream": {} | ||
} | ||
} | ||
} | ||
} | ||
}, | ||
"/resources/{id}": { | ||
@@ -58,0 +72,0 @@ "parameters": [ |
'use strict'; | ||
const { Readable } = require('stream'); | ||
const schema = require('exframe-model'); | ||
@@ -26,2 +27,8 @@ const { components, content } = require('../../../index'); | ||
const addStreamResponse = (responses, result) => { | ||
responses.success(result, { | ||
responseType: 'application/octet-stream' | ||
}); | ||
}; | ||
const Errors = Object.freeze({ | ||
@@ -65,2 +72,18 @@ 400: 'Invalid Parameters', | ||
api.paths | ||
.path('/resources/stream') | ||
.get( | ||
{ | ||
summary: 'returns a data stream', | ||
description: 'returns a data stream', | ||
configureSchema: (({ responses }) => { | ||
addStreamResponse(responses); | ||
}) | ||
}, | ||
(request, response) => { | ||
const stream = Readable.from(['some value']); | ||
stream.pipe(response); | ||
} | ||
); | ||
api.paths | ||
.path('/resources/{id}') | ||
@@ -67,0 +90,0 @@ .get( |
37279
1209