pip install -r requirements.txt
- Use black as formatter with line-length=120 option
- Use Pylint as linter
All Moffi-related functions are under moffi_sdk/
See tooling files to get an example of usage
All tools can take this configuration on 3 way, by priority :
- From command line args (see
--help
) - From
--config
command line argument - From default config file located at
~/.config/moffi.ini
moffics is a simple proxy for Moffi.io API that return the list of your in progress and future reservations as ICS Calendar
python3 moffics.py -h
python3 moffics.py -l 0.0.0.0 -p 8888 -v
You should considerate use https reverse proxy like Caddy (https://caddyserver.com/)
If your Webcal ics client support basicAuth, like ICSx⁵ (https://f-droid.org/fr/packages/at.bitfire.icsdroid/) for Android
- Add a new Calendar to your API root endpoint
http://127.0.0.1:8888/
with basic authentication as your Moffi credentials
If your client does not support basicAuth
- Start Moffics with a secret key (32 random chars)
python3 moffics.py -s <my 32 chars secret key>
- Uses standard web client to request a token, using basicAuth
curl -u <moffi username> http://127.0.0.1:8888/getToken
{"token":"<my token>"}
- Add your calendar to your Webcal app with url
http://127.0.0.1:8888/token/<my token>
To order a desk for a given date
python order_desk.py -u <moffi username> -p <moffi password> -c <City where to book> -w <Workspace name> -d <Desk full name>
See Moffi web interface to find City, Workspace and Desk names
To order the same desk every possible days, up to 30 days
python auto_reservation.py -u <moffi username> -p <moffi password> -c <City where to book> -w <Workspace name> -d <Desk full name> -t <Date on isoformat>
See Moffi web interface to find City, Workspace and Desk names
It does not order a desk if there is already a reservation for a date, even if reservation is cancelled.
You can define working days to reserve desk only on some days in the week. Define day of week number (Monday is 1) or literral day (eg. Mon, Tue) separated by commas or spaces.