leesah

package module
v0.0.0-...-02946ff Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Feb 22, 2024 License: MIT Imports: 12 Imported by: 0

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.

Hent credentials

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:

wget --user <username> --password <password> -O leesah-creds.zip https://leesah-game-cert.ekstern.dev.nav.no/certs && unzip leesah-creds.zip 
Eksempelkode

Nedenfor er det et fungerende eksempel som svarer på lagregistreringsspørsmålet med et navn du velger, og en farge du velger:

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  = "my-go-team"
    teamColor = "00ADD8"
)

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

	if err := rapid.Run(Answer); err != nil {
		slog.Error("failed to run rapid", "error", err)
	}
}

func Answer(question leesah.Question, log *slog.Logger) (string, bool) {
	slog.Info(fmt.Sprintf("%+v", question))

	switch question.Category {
	case "team-registration":
		return teamColor, true
	}

	return "", false
}
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 .

Documentation

Index

Constants

View Source
const (
	MessageTypeQuestion MessageType = "QUESTION"
	MessageTypeAnswer               = "ANSWER"

	LeesahTimeformat = "2006-01-02T15:04:05.999999"
)

Variables

This section is empty.

Functions

This section is empty.

Types

type Message

type Message struct {
	Answer     string      `json:"answer"`
	Category   string      `json:"category"`
	Created    string      `json:"created"`
	MessageID  string      `json:"messageId"`
	Question   string      `json:"question,omitempty"`
	QuestionID string      `json:"questionId"`
	TeamName   string      `json:"teamName"`
	Type       MessageType `json:"type"`
}

func (Message) ToQuestion

func (m Message) ToQuestion() Question

type MessageType

type MessageType string

type MinimalMessage

type MinimalMessage struct {
	Type MessageType `json:"type"`
}

type Question

type Question struct {
	Category string
	Question string
}

type Rapid

type Rapid struct {
	// contains filtered or unexported fields
}

func NewLocalRapid

func NewLocalRapid(teamName string, log *slog.Logger) (*Rapid, error)

NewLocalRapid creates a new Rapid instance with a local configuration. The local configuration is read from "certs/student-creds.yaml".

func NewRapid

func NewRapid(teamName string, config RapidConfig) (*Rapid, error)

NewRapid creates a new Rapid instance with the given configuration. It is used when playing the Nais-edition of Leesah.

func (*Rapid) Close

func (r *Rapid) Close()

Close closes the Kafka writer and reader

func (*Rapid) Run

func (r *Rapid) Run(answerQuestion func(Question, *slog.Logger) (string, bool)) error

type RapidConfig

type RapidConfig struct {
	Brokers             string
	Topic               string
	GroupID             string
	KafkaCertPath       string
	KafkaPrivateKeyPath string
	KafkaCAPath         string
	Log                 *slog.Logger
	// contains filtered or unexported fields
}

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL