move datatypes to separate endpoint
This commit is contained in:
+70
-45
@@ -123,6 +123,28 @@ paths:
|
||||
500:
|
||||
description: Circuit or message not found.
|
||||
content: { }
|
||||
/datatypes:
|
||||
get:
|
||||
summary: Get all known field data types.
|
||||
responses:
|
||||
200:
|
||||
description: Success.
|
||||
content:
|
||||
application/json;charset=utf-8:
|
||||
schema:
|
||||
$ref: '#/components/schemas/DataTypes'
|
||||
400:
|
||||
description: Invalid request parameters.
|
||||
content: { }
|
||||
403:
|
||||
description: User not authorized.
|
||||
content: { }
|
||||
404:
|
||||
description: Circuit or message not found.
|
||||
content: { }
|
||||
500:
|
||||
description: General error.
|
||||
content: { }
|
||||
/{file}:
|
||||
get:
|
||||
summary: Retrieve a particular file.
|
||||
@@ -289,51 +311,6 @@ components:
|
||||
type: integer
|
||||
description: the time in UTC seconds of the last update of any message.
|
||||
example: 1493483370
|
||||
types:
|
||||
type: array
|
||||
description: the known field data types (only with definition and without since).
|
||||
items:
|
||||
type: object
|
||||
properties:
|
||||
type:
|
||||
type: string
|
||||
description: the type name.
|
||||
example: UCH
|
||||
isbits:
|
||||
type: boolean
|
||||
description: true when the length is in bits.
|
||||
isadjustable:
|
||||
type: boolean
|
||||
description: whether the length is adjustable.
|
||||
isignored:
|
||||
type: boolean
|
||||
description: whether the result is ignored.
|
||||
length:
|
||||
type: number
|
||||
minimum: -1
|
||||
maximum: 31
|
||||
description: the field length in bytes (-1 for remainder, number
|
||||
of bits when isbits is true).
|
||||
result:
|
||||
enum:
|
||||
- void
|
||||
- string
|
||||
- number
|
||||
- date
|
||||
- time
|
||||
- datetime
|
||||
description: the result type.
|
||||
divisor:
|
||||
type: number
|
||||
description: the divisor for numeric types (only if applicable, positive
|
||||
for divisor, negative for reciprocal i.e. 1/-divisor).
|
||||
precision:
|
||||
type: number
|
||||
description: the precision (number of fraction digits) when divisor is >1.
|
||||
required:
|
||||
- type
|
||||
- isbits
|
||||
- length
|
||||
Circuit:
|
||||
type: object
|
||||
properties:
|
||||
@@ -497,6 +474,54 @@ components:
|
||||
comment:
|
||||
type: string
|
||||
description: the field comment.
|
||||
DataType:
|
||||
description: a known field data type.
|
||||
type: object
|
||||
properties:
|
||||
type:
|
||||
type: string
|
||||
description: the type name.
|
||||
example: UCH
|
||||
isbits:
|
||||
type: boolean
|
||||
description: true when the length is in bits.
|
||||
isadjustable:
|
||||
type: boolean
|
||||
description: whether the length is adjustable.
|
||||
isignored:
|
||||
type: boolean
|
||||
description: whether the result is ignored.
|
||||
length:
|
||||
type: number
|
||||
minimum: -1
|
||||
maximum: 31
|
||||
description: the field length in bytes (-1 for remainder, number
|
||||
of bits when isbits is true).
|
||||
result:
|
||||
enum:
|
||||
- void
|
||||
- string
|
||||
- number
|
||||
- date
|
||||
- time
|
||||
- datetime
|
||||
description: the result type.
|
||||
divisor:
|
||||
type: number
|
||||
description: the divisor for numeric types (only if applicable, positive
|
||||
for divisor, negative for reciprocal i.e. 1/-divisor).
|
||||
precision:
|
||||
type: number
|
||||
description: the precision (number of fraction digits) when divisor is >1.
|
||||
required:
|
||||
- type
|
||||
- isbits
|
||||
- length
|
||||
DataTypes:
|
||||
type: array
|
||||
description: the known field data types.
|
||||
items:
|
||||
$ref: '#/components/schemas/DataType'
|
||||
Data:
|
||||
required:
|
||||
- global
|
||||
|
||||
+16
-11
@@ -2000,10 +2000,6 @@ bool parseBoolQuery(const string& value) {
|
||||
}
|
||||
|
||||
result_t MainLoop::executeGet(const vector<string>& args, bool* connected, ostringstream* ostream) {
|
||||
bool required = false, full = false, withWrite = false, raw = false;
|
||||
bool withDefinition = false;
|
||||
string newDefinition;
|
||||
OutputFormat verbosity = OF_NAMES;
|
||||
time_t maxAge = -1;
|
||||
size_t argPos = 1;
|
||||
string uri = args[argPos++];
|
||||
@@ -2018,6 +2014,10 @@ result_t MainLoop::executeGet(const vector<string>& args, bool* connected, ostri
|
||||
circuit = uri.substr(6, pos - 6);
|
||||
name = uri.substr(pos + 1);
|
||||
}
|
||||
bool required = false, full = false, withWrite = false, raw = false;
|
||||
bool withDefinition = false;
|
||||
string newDefinition;
|
||||
OutputFormat verbosity = OF_NAMES;
|
||||
time_t since = 0;
|
||||
size_t pollPriority = 0;
|
||||
bool exact = false;
|
||||
@@ -2199,13 +2199,8 @@ result_t MainLoop::executeGet(const vector<string>& args, bool* connected, ostri
|
||||
*ostream << ",\n \"reconnects\": " << m_reconnectCount
|
||||
<< ",\n \"masters\": " << m_busHandler->getMasterCount()
|
||||
<< ",\n \"messages\": " << m_messages->size()
|
||||
<< ",\n \"lastup\": " << static_cast<unsigned>(maxLastUp);
|
||||
if (withDefinition && since <= 0) {
|
||||
*ostream << ",\n \"types\": [";
|
||||
DataTypeList::getInstance()->dump(verbosity, true, ostream);
|
||||
*ostream << "\n ]";
|
||||
}
|
||||
*ostream << "\n }"
|
||||
<< ",\n \"lastup\": " << static_cast<unsigned>(maxLastUp)
|
||||
<< "\n }"
|
||||
<< "\n}";
|
||||
type = 6;
|
||||
}
|
||||
@@ -2213,6 +2208,16 @@ result_t MainLoop::executeGet(const vector<string>& args, bool* connected, ostri
|
||||
return formatHttpResult(ret, type, ostream);
|
||||
} // request for "/data..."
|
||||
|
||||
if (uri == "/datatypes") {
|
||||
*ostream << "[";
|
||||
OutputFormat verbosity = OF_NAMES|OF_JSON|OF_ALL_ATTRS;
|
||||
DataTypeList::getInstance()->dump(verbosity, true, ostream);
|
||||
*ostream << "\n]";
|
||||
type = 6;
|
||||
*connected = false;
|
||||
return formatHttpResult(ret, type, ostream);
|
||||
}
|
||||
|
||||
if (uri.length() < 1 || uri[0] != '/' || uri.find("//") != string::npos || uri.find("..") != string::npos) {
|
||||
ret = RESULT_ERR_INVALID_ARG;
|
||||
} else {
|
||||
|
||||
@@ -1125,7 +1125,7 @@ void DataTypeList::dump(OutputFormat outputFormat, bool appendDivisor, ostream*
|
||||
continue;
|
||||
}
|
||||
if (json) {
|
||||
*output << sep << " {";
|
||||
*output << sep << " {";
|
||||
}
|
||||
if ((dataType->getBitCount() % 8) != 0) {
|
||||
dataType->dump(outputFormat, dataType->getBitCount(), appendDivisor, output);
|
||||
|
||||
Reference in New Issue
Block a user