Skip to content

andmos/BikeshareFunction

Repository files navigation

BikeshareFunction

OpenFaaS function for BikeshareClient access. Provides a simple serverless GBFS status system.

gbfs-systems-function parses the GBFS Systems CSV to JSON, providing API for systems overview.

faas-cli template pull https://github.com/burtonr/csharp-kestrel-template
faas-cli build -f bikeshare-function.yml

faas-cli deploy -f bikeshare-function.yml

echo "skansen" |faas-cli invoke bikeshare-function |jq
# {
#  "Name: "skansen",
#  "BikesAvailable": 18,
#  "LocksAvailable": 0
# }

echo |faas-cli invoke gbfs-systems-function |jq
#{
#    "CountryCode": "US",
#    "Name": "Sobi Long Beach",
#    "Location": "Long Beach, NY",
#    "Id": "sobi_long_beach",
#    "Url": "http://sobilongbeach.com/",
#    "GBFSFileUrl": "http://sobilongbeach.com/opendata/gbfs.json"
#  }

Change GBFS system by updating the GBFSAddress variable:

faas-cli deploy -f bikeshare-function.yml --env=GBFSAddress=https://gbfs.urbansharing.com/oslobysykkel.no/gbfs.json update=true
echo "Diakonhjemmet" |faas-cli invoke bikeshare-function
# {
#  "Name: "Diakonhjemmet",
#  "BikesAvailable": 9,
#  "LocksAvailable": 5
# }

This project also contains function to post from bikeshare-function to Slack. Add a new bot named bikesharebot to a Slack workspace, and update the variable under bikeshare-slack-function: in bikeshare-function.yml with the location of the OpenFaaS gateway:

environment:
    gateway_hostname: http://gateway:8080/

Add the bot's OAUTH token to OpenFaaS secrets:

faas-cli secret create bikebotslacktoken --from-file=slackbot-key.txt

and initialize the bot by trigging the function after deploy:

echo "init" |faas-cli invoke bikeshare-slack-function
# Bot initializing

Now simply ask the bot for a station:

andmos [8:40 PM]
@BikeshareBot Lerkendal
BikeshareBot APP [8:40 PM]
Lerkendal: :bike:: 17 :unlock:: 3

To run OpenFaaS, look at the guides for Docker Swarm, Kubernetes or OpenShift.

Build Status

Dependabot Status

Releases

No releases published

Packages

No packages published

Languages