Skip to content

mszalbach/sirigo

Repository files navigation

Sirigo

build

Sirigo UI

Description

Sirigo is a command-line tool for interacting with SIRI servers. Since the protocols and messages are quite similar, it also works with VDV453 & VDV454 servers.

If you want to learn more about the architecture and framework decisions, check the architecture documentation.

Installation

Download the latest release zip from the releases page. Unzip it and start the sirigo binary in a shell.

Usage

Make sure you have a folder with templates. You can copy them from the templates/ folder.

Here are the possible CLI parameters:

./bin/sirigo --help

Running the TUI:

Configure the URL where the SIRI server is listening and specify which client reference you want to use.

./bin/sirigo --templates ./templates --url https://siri.example.com --clientref myclient

Writing your own templates

Template files are written with Go template and must be stored as .xml files.

Sirigo provides the following variables and functions you can use:

name description example
ClientRef Variable with the configured client reference <ConsumerRef>{{ .ClientRef }}</ConsumerRef>
Now Variable with the current time as a Go time use this with the dateTime function
dateTime Function to convert Go times into xs:dateTime <RequestTimestamp>{{ dateTime .Now }}</RequestTimestamp>
addTime Function to add durations to a time <InitialTerminationTime>{{ dateTime (addTime .Now "2h") }}</InitialTerminationTime>
URL path comment Helper to set the URL path where a client request should be sent to. Add this xml comment in the template <!-- path: /siri/et.xml -->

Support

You can open a GitHub issue.

Roadmap

  • Have a TUI that can communicate with a SIRI/VDV server
  • Log requests and responses

Contributing

This is a test project and contributions are not currently planned. However, contributions are not forbidden — feel free to open an issue to discuss your ideas.

Development

You need Go 1.25 installed.

For development check the Makefile how to run format, linter and the tests. For the linter you need golangci-lint installed.

TL;DR

docker compose up
make check # fmt, lint, test
go run ./...

SIRI test server

Starting the SIRI server mock:

docker compose up

See the config in the wiremock/ folder if you want to change something.

To simulate a SIRI server request send it via curl:

curl -X POST -H "content-type: text/xml" --data-binary "<xml>Test</xml>" localhost:8000

License

This project is licensed under Mozilla Public License 2.0.

See LICENSE.

About

Sirigo is a command line tool for interacting with SIRI servers

Topics

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors