Skip to content

Repository files navigation

GOuda Matrix

Rust License: MIT

A Matrix client for the GONICUS GOuda API.

Architecture

GOuda Matrix acts as a bridge between a GOuda application (e.g. GOnnect) and the Matrix protocol, implementing all Matrix specific operations including authentication, messaging, room management and end-to-end encryption.

GOuda Matrix and the application communicate through two local sockets, one for receiving requests from the application and one for sending responses and events back. For both sockets the application acts as the server, while GOuda Matrix is the client connecting to the local socket.

flowchart LR

A["GOuda Application<br/>e.g. GOnnect"]
B["GOuda Matrix"]
C["Matrix"]

A -- "Local Socket for Requests" --> B
B -- "Local Socket for Responses" --> A
B <--> C
Loading

Getting Started

Prerequisites

  • Rust (latest stable)
  • just (optional, for running commands via the justfile)

Building

git clone https://github.com/gonicus/gouda-matrix.git
cd gouda-matrix
cargo build

Running Tests

just test

Code Quality Checks

# Run all checks (clippy, fmt, tests, unused deps, typos)
just check

# Format code
just fmt

Usage

Argument Description
<request_socket> Path to the socket for receiving requests from the application
<response_socket> Path to the socket for sending responses and events back to the application
Flag Default Description
--log-level WARN Log level: OFF, ERROR, WARN, INFO, DEBUG, or TRACE
--log-file-path gouda_client.log Path to the log file

Quick Start

First, start a GOuda application that creates the local sockets. For development and testing, gouda_sandbox can be used.

Once the GOuda app is started, connect GOuda Matrix to the sockets:

cargo run /tmp/gouda-request-socket /tmp/gouda-response-socket

About

Matrix implementation for the GOuda API

Topics

Resources

Stars

1 star

Watchers

1 watching

Forks

Releases

Contributors

Languages