mirror of
https://github.com/chatmail/core.git
synced 2026-04-18 05:56:31 +03:00
WebSocket support is not used and is not maintained. It still uses outdated axum 0.7 version and does not have any authentication. Delta Chat Desktop has a new browser target that implements WebSocket support on top of stdio server, supports blobs and is tested in CI.
72 lines
2.5 KiB
Markdown
72 lines
2.5 KiB
Markdown
# deltachat-jsonrpc
|
|
|
|
This crate provides a [JSON-RPC 2.0](https://www.jsonrpc.org/specification) interface to DeltaChat.
|
|
|
|
The JSON-RPC API is exposed in two fashions:
|
|
|
|
* A executable `deltachat-rpc-server` that exposes the JSON-RPC API through stdio.
|
|
* The JSON-RPC API can also be called through the [C FFI](../deltachat-ffi). It exposes the functions `dc_jsonrpc_init`, `dc_jsonrpc_request`, `dc_jsonrpc_next_response` and `dc_jsonrpc_unref`. See the docs in the [header file](../deltachat-ffi/deltachat.h) for details.
|
|
|
|
We also include a JavaScript and TypeScript client for the JSON-RPC API. The source for this is in the [`typescript`](typescript) folder.
|
|
|
|
## Usage
|
|
|
|
#### Using the TypeScript/JavaScript client
|
|
|
|
The package includes a JavaScript/TypeScript client which is partially auto-generated through the JSON-RPC library used by this crate ([yerpc](https://github.com/chatmail/yerpc)). Find the source in the [`typescript`](typescript) folder.
|
|
|
|
To use it locally, first install the dependencies and compile the TypeScript code to JavaScript:
|
|
```sh
|
|
cd typescript
|
|
npm install
|
|
npm run build
|
|
```
|
|
|
|
The JavaScript client is [published on NPM](https://www.npmjs.com/package/@deltachat/jsonrpc-client).
|
|
|
|
A script is included to build autogenerated documentation, which includes all RPC methods:
|
|
```sh
|
|
cd typescript
|
|
npm run docs
|
|
```
|
|
Then open the [`typescript/docs`](typescript/docs) folder in a web browser.
|
|
|
|
## Development
|
|
|
|
#### Running the example app
|
|
|
|
### Testing
|
|
|
|
The crate includes both a basic Rust smoke test and more featureful integration tests that use the TypeScript client.
|
|
|
|
#### Rust tests
|
|
|
|
To run the Rust test, use this command:
|
|
|
|
```
|
|
cargo test
|
|
```
|
|
|
|
#### TypeScript tests
|
|
|
|
```
|
|
cd typescript
|
|
npm run test
|
|
```
|
|
|
|
This will build the `deltachat-jsonrpc-server` binary and then run a test suite.
|
|
|
|
The test suite includes some tests that need online connectivity and a way to create test email accounts. To run these tests, set the `CHATMAIL_DOMAIN` environment variable to your testing email server domain.
|
|
|
|
```
|
|
CHATMAIL_DOMAIN=ci-chatmail.testrun.org npm run test
|
|
```
|
|
|
|
#### Test Coverage
|
|
|
|
Running `npm run test` will report test coverage. For the coverage to be accurate the online tests need to be run.
|
|
|
|
> If you are offline and want to see the coverage results anyway (even though they are inaccurate), you can bypass the errors of the online tests by setting the `COVERAGE_OFFLINE=1` environment variable.
|
|
|
|
A summary of the coverage will be reported in the terminal after the test run. Open `coverage/index.html` in a web browser for a detailed report.
|