exp is a simple sticker-only integration manager for riot.im.
Max Reitz 73916c365d Fix Content-Length 3 weeks ago
html Fix sticker picker 6 months ago
.gitignore Move stickers.json to stickers.example.json 8 months ago
README.md README adjustments 7 months ago
exp.rb Fix things for CORS 3 weeks ago
generate-sticker.rb (That’s a bit embarrassing.) 8 months ago
http.rb Fix Content-Length 3 weeks ago
riot-routes.rb Allow enabling/disabling of the picker 8 months ago
scalar-routes.rb Split route handling into own files 8 months ago
stickers.example.json Add another example sticker 8 months ago
widget-routes.rb Split route handling into own files 8 months ago

README.md

Setup

The intention behind this was for the server to be set up easily, so this is what you have to do:

(Note that this will break all of your existing integrations. If you don’t even know what integrations are and just want stickers, that’s probably OK.)

  1. Install prerequistes (should be just ruby).
  2. Write stickers.json as you like (see stickers.example.json for how it works; generate-sticker.rb may help you to speed up the process)
  3. Launch exp.rb with listen host and port, e.g. like so:

    $ screen -m -d ./exp.rb localhost 8184
    

    (Feel free to make another HTTP server on your server act as a proxy so you get e.g. SSL support)

  4. Make the following modifications to your local /etc/riot/config.json:

    "integrations_ui_url": "$HOST/riot",
    "integrations_rest_url": "$HOST/api/v1/scalar",
    "integrations_widgets_urls": [
        "$HOST/widgets"
    ]
    

    Replace $HOST by the base URL of your server, e.g. http://localhost:8184.

  5. Restart Riot, and keep restarting it (wait for about a minute between starting and quitting) until the integrations icon no longer has a red warning sign on it.

  6. Click on the integrations icon and enable the exp sticker picker. Wait for a couple of seconds, and then the sticker picker should work.

Whenever you modify stickers.json, you need to restart both exp.rb and Riot.

TODO list

  • Figure out sticker sending
  • Auto-close picker when sticker is sent
  • Load stickers from “DB” (JSON info suffices)
  • Store user session info in DB
  • Interface for choosing which sticker packs to enable
  • Ability to add sticker packs through Riot
  • Ability to modify sticker packs through Riot
  • Put HTML and stuff into template files
  • Allow installation of the sticker picker into m.widgets