Skip to content

Latest commit

 

History

History
44 lines (31 loc) · 1.31 KB

README.md

File metadata and controls

44 lines (31 loc) · 1.31 KB

go-slack-utils

GoDoc

What this is?

This is a general purpose utility library for using Slack's Block kit UI, with Go structs corresponding to the blocks used to create UI elements. Also included is middleware for validing Slack requests using HMAC-256 and the Slack secret signing key.

What this is not?

A Slack API wrapper. There's plenty of those out there.

Installation

go get -u github.com/chiefy/go-slack-utils

Usage

Middleware

func main() {
     
    r := mux.NewRouter()
    r.HandleFunc("/command", MySlashCommandHandler).Methods(http.MethodPost)
    r.Use(middleware.ValidateTimestamp)

    // It's up to you on how you configure injection of the slack signing secret
    signingSecret := os.Getenv("SLACK_SIGNING_SECRET")
    // Generate the validation middleware by injecting the secret
    validateReq := middleware.ValidateSlackRequest(signingSecret)
    r.Use(validateReq)

    srv := &http.Server{
        Handler:      r,
        Addr:         "127.0.0.1:" + os.Getenv("PORT"),
        WriteTimeout: 15 * time.Second,
        ReadTimeout:  15 * time.Second,
    }
    log.Fatal(srv.ListenAndServe())
}