move datatypes to separate endpoint
This commit is contained in:
+70
-45
@@ -123,6 +123,28 @@ paths:
|
|||||||
500:
|
500:
|
||||||
description: Circuit or message not found.
|
description: Circuit or message not found.
|
||||||
content: { }
|
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}:
|
/{file}:
|
||||||
get:
|
get:
|
||||||
summary: Retrieve a particular file.
|
summary: Retrieve a particular file.
|
||||||
@@ -289,51 +311,6 @@ components:
|
|||||||
type: integer
|
type: integer
|
||||||
description: the time in UTC seconds of the last update of any message.
|
description: the time in UTC seconds of the last update of any message.
|
||||||
example: 1493483370
|
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:
|
Circuit:
|
||||||
type: object
|
type: object
|
||||||
properties:
|
properties:
|
||||||
@@ -497,6 +474,54 @@ components:
|
|||||||
comment:
|
comment:
|
||||||
type: string
|
type: string
|
||||||
description: the field comment.
|
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:
|
Data:
|
||||||
required:
|
required:
|
||||||
- global
|
- global
|
||||||
|
|||||||
+16
-11
@@ -2000,10 +2000,6 @@ bool parseBoolQuery(const string& value) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
result_t MainLoop::executeGet(const vector<string>& args, bool* connected, ostringstream* ostream) {
|
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;
|
time_t maxAge = -1;
|
||||||
size_t argPos = 1;
|
size_t argPos = 1;
|
||||||
string uri = args[argPos++];
|
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);
|
circuit = uri.substr(6, pos - 6);
|
||||||
name = uri.substr(pos + 1);
|
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;
|
time_t since = 0;
|
||||||
size_t pollPriority = 0;
|
size_t pollPriority = 0;
|
||||||
bool exact = false;
|
bool exact = false;
|
||||||
@@ -2199,13 +2199,8 @@ result_t MainLoop::executeGet(const vector<string>& args, bool* connected, ostri
|
|||||||
*ostream << ",\n \"reconnects\": " << m_reconnectCount
|
*ostream << ",\n \"reconnects\": " << m_reconnectCount
|
||||||
<< ",\n \"masters\": " << m_busHandler->getMasterCount()
|
<< ",\n \"masters\": " << m_busHandler->getMasterCount()
|
||||||
<< ",\n \"messages\": " << m_messages->size()
|
<< ",\n \"messages\": " << m_messages->size()
|
||||||
<< ",\n \"lastup\": " << static_cast<unsigned>(maxLastUp);
|
<< ",\n \"lastup\": " << static_cast<unsigned>(maxLastUp)
|
||||||
if (withDefinition && since <= 0) {
|
<< "\n }"
|
||||||
*ostream << ",\n \"types\": [";
|
|
||||||
DataTypeList::getInstance()->dump(verbosity, true, ostream);
|
|
||||||
*ostream << "\n ]";
|
|
||||||
}
|
|
||||||
*ostream << "\n }"
|
|
||||||
<< "\n}";
|
<< "\n}";
|
||||||
type = 6;
|
type = 6;
|
||||||
}
|
}
|
||||||
@@ -2213,6 +2208,16 @@ result_t MainLoop::executeGet(const vector<string>& args, bool* connected, ostri
|
|||||||
return formatHttpResult(ret, type, ostream);
|
return formatHttpResult(ret, type, ostream);
|
||||||
} // request for "/data..."
|
} // 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) {
|
if (uri.length() < 1 || uri[0] != '/' || uri.find("//") != string::npos || uri.find("..") != string::npos) {
|
||||||
ret = RESULT_ERR_INVALID_ARG;
|
ret = RESULT_ERR_INVALID_ARG;
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
@@ -1125,7 +1125,7 @@ void DataTypeList::dump(OutputFormat outputFormat, bool appendDivisor, ostream*
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
if (json) {
|
if (json) {
|
||||||
*output << sep << " {";
|
*output << sep << " {";
|
||||||
}
|
}
|
||||||
if ((dataType->getBitCount() % 8) != 0) {
|
if ((dataType->getBitCount() % 8) != 0) {
|
||||||
dataType->dump(outputFormat, dataType->getBitCount(), appendDivisor, output);
|
dataType->dump(outputFormat, dataType->getBitCount(), appendDivisor, output);
|
||||||
|
|||||||
Reference in New Issue
Block a user