Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
U
uniset2
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
1
Issues
1
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
UniSet project repositories
uniset2
Commits
aabc49af
Commit
aabc49af
authored
Oct 31, 2016
by
Pavel Vainerman
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
(UHttp): добавил обработку команд вида ObjectName/cmd
parent
d373cbe2
Show whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
58 additions
and
9 deletions
+58
-9
UHttpRequestHandler.h
include/UHttpRequestHandler.h
+5
-2
UniSetActivator.h
include/UniSetActivator.h
+1
-0
UniSetObject.h
include/UniSetObject.h
+2
-1
UHttpRequestHandler.cc
src/Communications/Http/UHttpRequestHandler.cc
+6
-1
UniSetActivator.cc
src/ObjectRepository/UniSetActivator.cc
+16
-2
UniSetObject.cc
src/ObjectRepository/UniSetObject.cc
+12
-2
uhttp-test.cc
tests/UHttpTest/uhttp-test.cc
+16
-1
No files found.
include/UHttpRequestHandler.h
View file @
aabc49af
...
...
@@ -32,12 +32,14 @@
*
* Пока поддерживается только метод GET
* Ответ в формате JSON
* В текущем API не подразумеваются запросы глубже '/api/version/ObjectName/xxxx'
*
* Версия API: v01
* /api/version/list - Получение списка доступных объектов
* /api/version/help - Получение списка доступных команд
* /api/version/ObjectName - получение информации об объекте ObjectName
* /api/version/ObjectName/help - получение списка доступных команд для объекта ObjectName
* /api/version/ObjectName/xxxx - 'xxx' запрос к объекту ObjectName
*
* \todo подумать над /api/version/tree - получение "дерева" объектов (древовидный список с учётом подчинения Manager/Objects)
*/
...
...
@@ -58,7 +60,8 @@ namespace UniSetTypes
// throw SystemError
virtual
nlohmann
::
json
getData
(
const
Poco
::
URI
::
QueryParameters
&
p
)
=
0
;
virtual
nlohmann
::
json
help
(
const
Poco
::
URI
::
QueryParameters
&
p
)
=
0
;
virtual
nlohmann
::
json
httpHelp
(
const
Poco
::
URI
::
QueryParameters
&
p
)
=
0
;
virtual
nlohmann
::
json
request
(
const
std
::
string
&
req
,
const
Poco
::
URI
::
QueryParameters
&
p
)
=
0
;
};
// -------------------------------------------------------------------------
/*! интерфейс для обработки запросов к объектам */
...
...
@@ -73,8 +76,8 @@ namespace UniSetTypes
// throw SystemError
virtual
nlohmann
::
json
getObjectsList
(
const
Poco
::
URI
::
QueryParameters
&
p
)
=
0
;
virtual
nlohmann
::
json
helpByName
(
const
std
::
string
&
name
,
const
Poco
::
URI
::
QueryParameters
&
p
)
=
0
;
virtual
nlohmann
::
json
requestByName
(
const
std
::
string
&
name
,
const
std
::
string
&
req
,
const
Poco
::
URI
::
QueryParameters
&
p
)
=
0
;
};
// -------------------------------------------------------------------------
...
...
include/UniSetActivator.h
View file @
aabc49af
...
...
@@ -89,6 +89,7 @@ class UniSetActivator:
virtual
nlohmann
::
json
getDataByName
(
const
std
::
string
&
name
,
const
Poco
::
URI
::
QueryParameters
&
p
)
override
;
virtual
nlohmann
::
json
getObjectsList
(
const
Poco
::
URI
::
QueryParameters
&
p
)
override
;
virtual
nlohmann
::
json
helpByName
(
const
std
::
string
&
name
,
const
Poco
::
URI
::
QueryParameters
&
p
)
override
;
virtual
nlohmann
::
json
requestByName
(
const
std
::
string
&
name
,
const
std
::
string
&
req
,
const
Poco
::
URI
::
QueryParameters
&
p
)
override
;
protected
:
...
...
include/UniSetObject.h
View file @
aabc49af
...
...
@@ -103,7 +103,8 @@ class UniSetObject:
// HTTP API
virtual
nlohmann
::
json
getData
(
const
Poco
::
URI
::
QueryParameters
&
p
)
override
;
virtual
nlohmann
::
json
help
(
const
Poco
::
URI
::
QueryParameters
&
p
)
override
;
virtual
nlohmann
::
json
httpHelp
(
const
Poco
::
URI
::
QueryParameters
&
p
)
override
;
virtual
nlohmann
::
json
request
(
const
std
::
string
&
req
,
const
Poco
::
URI
::
QueryParameters
&
p
)
override
;
// -------------- вспомогательные --------------
/*! получить ссылку (на себя) */
...
...
src/Communications/Http/UHttpRequestHandler.cc
View file @
aabc49af
...
...
@@ -109,11 +109,16 @@ void UHttpRequestHandler::handleRequest( Poco::Net::HTTPServerRequest& req, Poco
auto
json
=
registry
->
getObjectsList
(
qp
);
out
<<
json
.
dump
();
}
else
if
(
seg
.
size
()
>=
4
&&
seg
[
3
]
==
"help"
)
// /api/version/ObjectName/help
else
if
(
seg
.
size
()
==
4
&&
seg
[
3
]
==
"help"
)
// /api/version/ObjectName/help
{
auto
json
=
registry
->
helpByName
(
objectName
,
qp
);
out
<<
json
.
dump
();
}
else
if
(
seg
.
size
()
>=
4
)
// /api/version/ObjectName/xxx..
{
auto
json
=
registry
->
requestByName
(
objectName
,
seg
[
3
],
qp
);
out
<<
json
.
dump
();
}
else
{
auto
json
=
registry
->
getDataByName
(
objectName
,
qp
);
...
...
src/ObjectRepository/UniSetActivator.cc
View file @
aabc49af
...
...
@@ -896,11 +896,25 @@ nlohmann::json UniSetActivator::getObjectsList( const Poco::URI::QueryParameters
nlohmann
::
json
UniSetActivator
::
helpByName
(
const
string
&
name
,
const
Poco
::
URI
::
QueryParameters
&
p
)
{
if
(
name
==
myname
)
return
help
(
p
);
return
h
ttpH
elp
(
p
);
auto
obj
=
deepFindObject
(
name
);
if
(
obj
)
return
obj
->
help
(
p
);
return
obj
->
httpHelp
(
p
);
ostringstream
err
;
err
<<
"Object '"
<<
name
<<
"' not found"
;
throw
UniSetTypes
::
NameNotFound
(
err
.
str
());
}
// ------------------------------------------------------------------------------------------
nlohmann
::
json
UniSetActivator
::
requestByName
(
const
string
&
name
,
const
std
::
string
&
req
,
const
Poco
::
URI
::
QueryParameters
&
p
)
{
if
(
name
==
myname
)
return
request
(
req
,
p
);
auto
obj
=
deepFindObject
(
name
);
if
(
obj
)
return
obj
->
request
(
req
,
p
);
ostringstream
err
;
err
<<
"Object '"
<<
name
<<
"' not found"
;
...
...
src/ObjectRepository/UniSetObject.cc
View file @
aabc49af
...
...
@@ -390,16 +390,26 @@ nlohmann::json UniSetObject::getData( const Poco::URI::QueryParameters& p )
jdata
[
"isActive"
]
=
isActive
();
jdata
[
"objectType"
]
=
getType
();
return
jdata
;
nlohmann
::
json
ret
;
ret
[
myname
]
=
jdata
;
return
ret
;
}
// ------------------------------------------------------------------------------------------
nlohmann
::
json
UniSetObject
::
help
(
const
Poco
::
URI
::
QueryParameters
&
p
)
nlohmann
::
json
UniSetObject
::
h
ttpH
elp
(
const
Poco
::
URI
::
QueryParameters
&
p
)
{
nlohmann
::
json
jdata
;
jdata
[
myname
][
"help"
]
=
{};
return
jdata
;
}
// ------------------------------------------------------------------------------------------
nlohmann
::
json
UniSetObject
::
request
(
const
string
&
req
,
const
Poco
::
URI
::
QueryParameters
&
p
)
{
//!\todo Подумать может возвращать getData() типа стандартный ответ..
nlohmann
::
json
jdata
;
jdata
[
myname
][
req
]
=
""
;
return
jdata
;
}
// ------------------------------------------------------------------------------------------
ObjectPtr
UniSetObject
::
getRef
()
const
{
UniSetTypes
::
uniset_rwmutex_rlock
lock
(
refmutex
);
...
...
tests/UHttpTest/uhttp-test.cc
View file @
aabc49af
...
...
@@ -23,7 +23,7 @@ class UTestSupplier:
return
j
;
}
virtual
nlohmann
::
json
help
(
const
Poco
::
URI
::
QueryParameters
&
p
)
override
virtual
nlohmann
::
json
h
ttpH
elp
(
const
Poco
::
URI
::
QueryParameters
&
p
)
override
{
nlohmann
::
json
j
;
j
[
"test"
][
"help"
]
=
{
...
...
@@ -33,6 +33,13 @@ class UTestSupplier:
return
j
;
}
virtual
nlohmann
::
json
request
(
const
std
::
string
&
req
,
const
Poco
::
URI
::
QueryParameters
&
p
)
override
{
nlohmann
::
json
j
;
j
[
req
]
=
"OK"
;
return
j
;
}
};
// --------------------------------------------------------------------------
class
UTestRequestRegistry
:
...
...
@@ -70,6 +77,14 @@ class UTestRequestRegistry:
return
j
;
}
virtual
nlohmann
::
json
requestByName
(
const
std
::
string
&
name
,
const
std
::
string
&
req
,
const
Poco
::
URI
::
QueryParameters
&
p
)
override
{
nlohmann
::
json
j
;
j
[
name
][
req
]
=
"OK"
;
return
j
;
}
private
:
UTestSupplier
sup
;
};
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment