An open API service indexing awesome lists of open source software.

https://github.com/oestrich/gossip-elixir

An Elixir client for Grapevine
https://github.com/oestrich/gossip-elixir

chat elixir gossip

Last synced: 10 months ago
JSON representation

An Elixir client for Grapevine

Awesome Lists containing this project

README

          

# Gossip

A client for connecting to the Gossip MUD chat network. See [https://grapevine.haus/docs](https://grapevine.haus/docs) for more information.

## Installation

The package can be installed by adding `gossip` to your list of dependencies in `mix.exs`:

```elixir
def deps do
[
{:gossip, "~> 0.6"},
]
end
```

## Configuration

Set the following in your mix project's configuration. **Do not commit the client id and secret.** These should be in a `prod.secret.exs` file or similar that is ignored from your repo.

```elixir
config :gossip, :client_id, "CLIENT ID"
config :gossip, :client_secret, "CLIENT SECRET"
config :gossip, :callback_modules,
core: Callbacks.Core,
players: Callbacks.Players,
tells: Callbacks.Tells,
games: Callbacks.Games
```

## Callback Modules

You can opt into specific support flags on Gossip by configuring callback modules that follow the specific behaviours.

See a sample set of callbacks by viewing the `TestCallback` module for this client, [here](https://github.com/oestrich/gossip-elixir/blob/master/lib/gossip/test_callback.ex).

### Core/Channels

The `channels` flag *must* be supported and can be set up by providing a callback module that has the `Gossip.Client.Core` behaviour.

### Players

The `players` flag can be set up by providing a callback module that has the `Gossip.Client.Players` behaviour.

### Tells

The `tells` flag can be set up by providing a callback module that has the `Gossip.Client.Tells` behaviour.

### Games

the `games` flag can be set up by providing a callback module that has the `gossip.client.games` behaviour.

## Telemetry Events

- `[:gossip, :events, :channels, :broadcast]` - Received a `channels/broadcast` event
- `[:gossip, :events, :channels, :send, :request]` - Sending a `channels/send` event
- `[:gossip, :events, :core, :authenticate, :request]` - Received a response to `authenticate`
- `[:gossip, :events, :core, :authenticate, :response]` - Sending an `authenticate` event
- `[:gossip, :events, :core, :heartbeat, :request]` - Received a `heartbeat` event
- `[:gossip, :events, :core, :restart]` - Received a `restart` event
- `[:gossip, :events, :games, :connect]` - Received a `games/connect` event
- `[:gossip, :events, :games, :disconnect]` - Received a `games/disconnect` event
- `[:gossip, :events, :games, :status, :request]` - Sending a `games/status` event
- `[:gossip, :events, :games, :status, :response]` - Received a response to `games/status`
- `[:gossip, :events, :players, :sign_in]` - Received a `players/sign-in` event
- `[:gossip, :events, :players, :sign_out]` - Received a `players/sign-out` event
- `[:gossip, :events, :players, :status, :request]` - Sending a `players/status` event
- `[:gossip, :events, :players, :status, :response]` - Received a response to `players/status`
- `[:gossip, :events, :tells, :receive]` - Received a `tells/receive` event
- `[:gossip, :events, :tells, :send, :request]` - Sending a `tells/send` event
- `[:gossip, :events, :tells, :send, :response]` - Received a response to `tells/send`