RetroShare/libresapi/src/api
2018-08-28 23:57:16 +02:00
..
ApiPluginHandler.cpp added missing license to some libresapi files 2018-05-21 20:17:54 +02:00
ApiPluginHandler.h added missing license to some libresapi files 2018-05-21 20:17:54 +02:00
ApiServer.cpp added missing license to some libresapi files 2018-05-21 20:17:54 +02:00
ApiServer.h added missing license to some libresapi files 2018-05-21 20:17:54 +02:00
ApiServerLocal.cpp added missing license to some libresapi files 2018-05-21 20:17:54 +02:00
ApiServerLocal.h added missing license to some libresapi files 2018-05-21 20:17:54 +02:00
ApiServerMHD.cpp started cleaning the mess with rsAccounts: only exposed useful functionality of rsAccount beyond a static class and removed all references to rsAccounts in the code 2018-07-24 23:47:32 +02:00
ApiServerMHD.h added missing license to some libresapi files 2018-05-21 20:17:54 +02:00
ApiTypes.h added missing license to some libresapi files 2018-05-21 20:17:54 +02:00
ChannelsHandler.cpp Merge branch 'master' into jsonapi 2018-07-23 13:44:01 +02:00
ChannelsHandler.h merged upstream/master 2018-07-08 21:17:48 +02:00
ChatHandler.cpp added missing license to some libresapi files 2018-05-21 20:17:54 +02:00
ChatHandler.h added missing license to some libresapi files 2018-05-21 20:17:54 +02:00
FileSearchHandler.cpp added last relay (a.k.a which direct friend) of search results in sources column 2018-08-28 23:57:16 +02:00
FileSearchHandler.h added last relay (a.k.a which direct friend) of search results in sources column 2018-08-28 23:57:16 +02:00
FileSharingHandler.cpp merged upstream/master 2018-07-08 21:17:48 +02:00
FileSharingHandler.h merged upstream/master 2018-07-08 21:17:48 +02:00
ForumHandler.cpp Merge branch 'master' into jsonapi 2018-07-23 13:44:01 +02:00
ForumHandler.h added missing license to some libresapi files 2018-05-21 20:17:54 +02:00
GetPluginInterfaces.cpp added missing license to some libresapi files 2018-05-21 20:17:54 +02:00
GetPluginInterfaces.h added missing license to some libresapi files 2018-05-21 20:17:54 +02:00
GxsMetaOperators.h added resource_api and rs-nogui-webui (requires libmicrohttpd, Html files are not included) 2015-03-18 18:48:43 +00:00
GxsResponseTask.cpp Merge branch 'master' into jsonapi 2018-07-23 13:44:01 +02:00
GxsResponseTask.h added missing license to some libresapi files 2018-05-21 20:17:54 +02:00
IdentityHandler.cpp Merge branch 'master' into jsonapi 2018-07-23 13:44:01 +02:00
IdentityHandler.h added missing license to some libresapi files 2018-05-21 20:17:54 +02:00
json.cpp added missing license to some libresapi files 2018-05-21 20:17:54 +02:00
json.h updated SuperEasyJSON 2015-03-27 18:43:07 +00:00
JsonStream.cpp added missing license to some libresapi files 2018-05-21 20:17:54 +02:00
JsonStream.h added missing license to some libresapi files 2018-05-21 20:17:54 +02:00
LivereloadHandler.cpp added missing license to some libresapi files 2018-05-21 20:17:54 +02:00
LivereloadHandler.h added missing license to some libresapi files 2018-05-21 20:17:54 +02:00
Operators.cpp added missing license to some libresapi files 2018-05-21 20:17:54 +02:00
Operators.h added missing license to some libresapi files 2018-05-21 20:17:54 +02:00
Pagination.h Disable limit to 20 entries in JSON API pagination 2017-04-03 19:21:54 +02:00
PeersHandler.cpp merged upstream/master 2018-07-08 21:17:48 +02:00
PeersHandler.h added missing license to some libresapi files 2018-05-21 20:17:54 +02:00
README.md added resource_api and rs-nogui-webui (requires libmicrohttpd, Html files are not included) 2015-03-18 18:48:43 +00:00
ResourceRouter.cpp added missing license to some libresapi files 2018-05-21 20:17:54 +02:00
ResourceRouter.h added missing license to some libresapi files 2018-05-21 20:17:54 +02:00
RsControlModule.cpp fixed certificate creation in TorAuto mode 2018-07-27 12:33:06 +02:00
RsControlModule.h added missing license to some libresapi files 2018-05-21 20:17:54 +02:00
ServiceControlHandler.cpp added missing license to some libresapi files 2018-05-21 20:17:54 +02:00
ServiceControlHandler.h added missing license to some libresapi files 2018-05-21 20:17:54 +02:00
SettingsHandler.cpp added missing license to some libresapi files 2018-05-21 20:17:54 +02:00
SettingsHandler.h added missing license to some libresapi files 2018-05-21 20:17:54 +02:00
StateTokenServer.cpp added missing license to some libresapi files 2018-05-21 20:17:54 +02:00
StateTokenServer.h added missing license to some libresapi files 2018-05-21 20:17:54 +02:00
StatsHandler.cpp added missing license to some libresapi files 2018-05-21 20:17:54 +02:00
StatsHandler.h added missing license to some libresapi files 2018-05-21 20:17:54 +02:00
TmpBlobStore.cpp added missing license to some libresapi files 2018-05-21 20:17:54 +02:00
TmpBlobStore.h added missing license to some libresapi files 2018-05-21 20:17:54 +02:00
TransfersHandler.cpp merged upstream/master 2018-07-08 21:17:48 +02:00
TransfersHandler.h merged upstream/master 2018-07-08 21:17:48 +02:00

New programming interface for Retroshare

  • access to libretroshare for webinterfaces, QML and scripting
  • client - server architecture.
  • network friendly: transport messages over high latency and low bandwidth networks
  • multiple clients: can use scripting and webinterface at the same time
  • simple packet format: no special serialiser required
  • simple protocol: one request creates one response. A requets does not depend on a previous request.
  • automatic state change propagation: if a resource on the server changes, the clients will get notified
  • no shared state: Client and server don't have to track what they send each other.
  • works with all programming languages

How does it work?

- Client sends a request: adress of a resource and optional parameters encoded as JSON
{
	"method": "get",
	"resource": ["peers"],
}
- Server sends a Response:
{
	"returncode": "ok",
	"statetoken": "ASDF",
	"data": [...]
}

- Client asks if data is still valid
{
	"method": "exec",
	"resource": "statetokenservice"
	"data": ["ASDF", "GHJK"]
}
- Server answers Client that statetoken "ASDF" expired
{
	"returncode": "ok",
	"data": ["ASDF"]
}

Transport

A transport protocol transports requests and responses between client and server.

  • tracks message boundaries, so messages don't get merged
  • may be able to handle concurrent requests with out of order delivery of responses
  • knows to which request a response belongs to

Transport could do encryption and authentication with a standardized protocol like SSH or TLS.

Ideas:

  • request id + length + request data -> SSH -> TCP -> ...
  • Websockets
  • Retroshare Items
  • Unix domain sockets

Currently only unencrypted http is implemented. libmicrohttpd (short MHD) is used as http server. Can use a proxy to add TLS encryption.

Message encoding

Currently JSON, because it is already available in JavaScript and QML. Other key-value encodings could be used as well. Read more about basic data types of different languages (JavaScript, QML, Lua, C++) in ./ApiServer.cpp.