Categorygithub.com/navikt/go-leesah
modulepackage
0.7.1
Repository: https://github.com/navikt/go-leesah.git
Documentation: pkg.go.dev

# README

Go LEESAH

Leesah-game er et hendelsedrevet applikasjonsutviklingspill som utfordrer spillerne til å bygge en hendelsedrevet applikasjon. Applikasjonen håndterer forskjellige typer oppgaver som den mottar som hendelser på en Kafka-basert hendelsestrøm. Oppgavene varierer fra veldig enkle til mer komplekse.

Go-bibliotek for å spille LEESAH!

Kom i gang

Det finnes to versjoner av Leesah-game! En hvor man lager en applikasjon som kjører på Nais, og en hvor man spiller lokalt direkte fra terminalen sin. Dette biblioteket kan brukes i begge versjoner, men denne dokumentasjonen dekker kun lokal spilling.

Vi har et eget template-repo som ligger under navikt/leesah-game-template-go for å spille Nais-versjonen.

Sett opp lokalt miljø

Du trenger Go for å bruke biblioteket, sjekk ut go.dev/learn for å komme i gang.

Installer biblioteket

Det er kun en ekstern avhengighet du trenger, og det er biblioteket go-leesah.

go get github.com/navikt/go-leesah

Hent Kafkasertifakt

Sertifikater for å koble seg på Kafka ligger tilgjengelig på leesah-game-cert.ekstern.dev.nav.no/certs, brukernavn og passord skal du få utdelt.

Du kan også bruke kommandoen nedenfor:

curl -u leesah-game:<se presentasjon> -o leesah-certs.zip https://leesah-certs.ekstern.dev.nav.no && unzip leesah-certs.zip

Eksempelkode

Nedenfor er det et fungerende eksempel som svarer på spørsmålet om lagregistrerings med et navn, og en farge (hex-kode):

package main

import (
	"fmt"
	"log/slog"

	"github.com/navikt/go-leesah"
)

// 1. Ensure credential files are in the certs directory
// 2. Set `teamName` to your preferred team name
// 3. Set `teamColor` to your preferred team color

const (
    teamName  = "CHANGE ME"
    teamColor = "CHANGE ME"
)

func main() {
    log := slog.Default()
	ignoredCategories := []string{
		// "team-registration",
	}

	rapid, err := leesah.NewLocalRapid(teamName, log, ignoredCategories)
	if err != nil {
		log.Error("failed to create rapid", "error", err)
		return
	}
	defer rapid.Close()

	for {
		question, err := rapid.GetQuestion()
		if err != nil {
			slog.Error("can't get new question", "error", err)
		}

		var answer string
		switch question.Category {
		case "team-registration":
			answer = handleTeamRegistration(question)
		}

		if answer != "" {
			if err := rapid.Answer(answer); err != nil {
				log.Error("can't post answer", "error", err)
			}
		}
	}
}

func handleTeamRegistration(question leesah.Question) string {
	return teamColor
}

Kjør lokalt

Først må du sette opp avhengigheten:

go get github.com/navikt/go-leesah

Så kan du kjøre det:

go run .

# Functions

NewLocalRapid creates a new Rapid instance with a local configuration.
NewRapid creates a new Rapid instance with the given configuration.

# Constants

LeesahTimeformat is Python's time format for Leesah messages, which is a form of RFC3339.
No description provided by the author
No description provided by the author

# Structs

Message is a struct that represents a message in the Leesah Kafka topic.
Question is a simplified version of a Message with just the category, question, and answer format.
RapidConfig is a struct that represents the configuration for a Rapid instance This is used when creating a new Rapid instance on the NAIS platform.

# Type aliases

MessageType is an enum for the type of message in the Leesah Kafka topic.