Home

Awesome

Crystal OpenFaaS Template Runs on Crystal

Inofficial OpenFaaS template for the crystal programming language 🎉

To find out more about the OpenFaaS templates see the faas templates and faas-cli.

Usage

Go to your openFaaS project and execute:

faas-cli template pull https://github.com/TPei/crystal_faas_template

Alternatively, the template is also available via the OpenFaaS template store

faas-cli template store pull crystal

This will pull the template into your directory and allow you to use

faas-cli new --lang crystal my_function

to create a new crystal function

See crystal_faas_whalesay_demo for an implementation example.

Which version of crystal is this running?

It installs the latest version available on alpine.

Development

General

As with all OpenFaaS templates, this template creates a my_function/handler.cr file, as well as a my_function.yml. In addition to this, a my_function/shard.yml is created for your dependencies.

When building your function with faas-cli build -f my_function.yml your dependencies will be resolved according to your shard file.

Code

Hander#run gets passed a req String, if you want to handle json, simply do JSON.parse(req) and do your thing :)

Your function always needs to return JSON, like so: return JSON::Any.new("Just a String, but JSON!")

require "json"

class Handler
  def run(req : String)
    whale = <<-WHALE
     #{"-" * req.size}
    < #{req} >
     #{"-" * req.size}
           \\
            \\
             \\
              \\       ##               .
               \\## ## ##             ==
              ## ## ## ## ##         ===
           /"""""""""""""""""\\___/ ====
    ~~~ ~~{~ ~~~  ~~~~~ ~~~~~ ~~~/~~====-~ ~~~~
           \\______ O           __/
            \\    \\         __/
             \\____\\_______/
    WHALE
    return JSON::Any.new(whale)
  end
end

Templates Developers / Contributors

See contributing guide.

License

This project is licensed under the MIT License.