sdk

module
v1.0.0-rc8 Latest Latest
Warning

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

Go to latest
Published: Aug 20, 2025 License: MIT

README

sdk

Software Development Kit written in Go for seamless integration with microservices built on the Flash Framework. Designed to accelerate development, promote consistency, and simplify communication between distributed services.

config

Create config
package main

import "github.com/flash-go/sdk/config"

func main() {
	// Create state service
	stateService := {...}

	// Set service name
	serviceName := "name"

	// Create config
	cfg := config.New(stateService, serviceName)
}
Get service name
package main

func main() {
	// Create config
	cfg := {...}

	// Get service name
	value := cfg.GetService()
}
Get string value by key
package main

func main() {
	// Create config
	cfg := {...}

	// Get string value by key
	value := cfg.Get("host")
}
Get int value by key
package main

func main() {
	// Create config
	cfg := {...}

	// Get int value by key
	value := cfg.GetInt("host")
}
Get bytes from Base64 value by key
package main

func main() {
	// Create config
	cfg := {...}

	// Get bytes from Base64 value by key
	value := cfg.GetBase64("host")
}
Set value by key
package main

func main() {
	// Create config
	cfg := {...}

	// Set value by key
	err := cfg.Set("key", "value")
}
Set env map
package main

func main() {
	// Create config
	cfg := {...}

	var envMap = map[string]string{
		"ENV_KEY": "CONSUL_KV_KEY",
	}

	// Set env map
	err := cfg.SetEnvMap(envMap)
}
Get env bool var
package main

import "github.com/flash-go/sdk/config"

func main() {
	value := config.GetEnvBool("key")
}
Get env int var
package main

import "github.com/flash-go/sdk/config"

func main() {
	value := config.GetEnvInt("key")
}
Get env bytes from Base64 var
package main

import "github.com/flash-go/sdk/config"

func main() {
	value := config.GetEnvBase64("key")
}

errors

Types
Type Message
ErrBadRequest bad_request
ErrUnauthorized unauthorized
ErrForbidden forbidden
ErrServiceUnavailable service_unavailable
ErrNotFound not_found
Create error
package main

import "github.com/flash-go/sdk/errors"

func main() {
	// Create error
	err := errors.New(errors.ErrUnauthorized, "invalid_credentials")
}

infra

Get Postgres KV keys
package main

import "github.com/flash-go/sdk/infra"

func main() {
	infra.PostgresHostOptKey
	infra.PostgresPortOptKey
	infra.PostgresUserOptKey
	infra.PostgresPasswordOptKey
	infra.PostgresDbOptKey
}
Create Postgres client
package main

import "github.com/flash-go/sdk/infra"

func main() {
	// Create config
	cfg := {...}

	// Create postgres client
	postgresClient := infra.NewPostgresClient(
		&infra.PostgresClientConfig{
			Cfg:        cfg,
			Telemetry:  nil,
			Migrations: nil,
		},
	)
}
Get Redis KV keys
package main

import "github.com/flash-go/sdk/infra"

func main() {
	infra.RedisHostOptKey
	infra.RedisPortOptKey
	infra.RedisPasswordOptKey
	infra.RedisDbOptKey
}
Create Redis client
package main

import "github.com/flash-go/sdk/infra"

func main() {
	// Create config
	cfg := {...}

	// Create redis client
	redisClient := infra.NewRedisClient(
		&infra.RedisClientConfig{
			Cfg:       cfg,
			Telemetry: nil,
		},
	)
}

logger

Create console logger
package main

import "github.com/flash-go/sdk/logger"

func main() {
	// Create logger service
	loggerService := logger.NewConsole()
}

state

Create insecure state service without auth token
package main

import "github.com/flash-go/sdk/state"

func main() {
	// Full address (host:port) of the Consul agent (e.g., `localhost:8500`)
	consulAddress := "localhost:8501"

	// Create state service
	stateService := state.NewWithoutAuth(consulAddress)
}
Create insecure state service with auth token
package main

import "github.com/flash-go/sdk/state"

func main() {
	// Full address (host:port) of the Consul agent (e.g., `localhost:8500`)
	consulAddress := "localhost:8501"

	// Consul ACL token for authenticating requests to the Consul agent or server
	authToken := "secret"

	// Create state service
	stateService := state.NewWithInsecureAuth(
		&state.InsecureAuthConfig{
			Address: consulAddress,
			Token: authToken,
		},
	)
}
Create secure state service with auth token
package main

import "github.com/flash-go/sdk/state"

func main() {
	// Full address (host:port) of the Consul agent (e.g., `localhost:8500`)
	consulAddress := "localhost:8501"

	// Base64 CA certificate file used to verify the Consul server's TLS certificate
	ca := "secret"

	// Base64 client certificate file used for mTLS authentication with Consul
	cert := "secret"

	// Base64 private key corresponding to `CONSUL_CLIENT_CRT` for mTLS authentication
	key := "secret"

	// If set to `true`, disables TLS certificate verification (not recommended for production)
	insecureSkipVerify := false

	// Consul ACL token for authenticating requests to the Consul agent or server
	authToken := "secret"

	// Create state service
	stateService := state.NewWithSecureAuth(
		&state.SecureAuthConfig{
			Address: consulAddress,
			CAPem: ca,
			CertPEM: cert,
			KeyPEM: key,
			InsecureSkipVerify: insecureSkipVerify,
			Token: authToken,
		},
	)
}
Create custom state
package main

import (
	"github.com/flash-go/sdk/state"
	"github.com/hashicorp/consul/api"
)

func main() {
	// Create state service
	stateService := state.New(
		&api.Config{...},
	)
}

telemetry

Get telemetry KV keys
package main

import "github.com/flash-go/sdk/telemetry"

func main() {
	telemetry.OtelCollectorGrpcOptKey
	telemetry.OtelCollectorCaCrtOptKey
	telemetry.OtelCollectorClientCrtOptKey
	telemetry.OtelCollectorClientKeyOptKey
}
Create insecure grpc telemetry service
package main

import "github.com/flash-go/sdk/telemetry"

func main() {
	// Create config
	cfg := {...}

	// Create telemetry service
	telemetryService := telemetry.NewInsecureGrpc(cfg)
}
Create secure grpc telemetry service
package main

import "github.com/flash-go/sdk/telemetry"

func main() {
	// Create config
	cfg := {...}

	// Create telemetry service
	telemetryService := telemetry.NewSecureGrpc(cfg)
}

services

users
Create JWT key
package main

import "github.com/flash-go/sdk/services/users"

func main() {
	// Key size
	size := 64

	// Create key
	key := users.NewJwtKey(size)
}
Use users middleware
package main

import "github.com/flash-go/sdk/services/users"

func main() {
	// Create http client
	httpClient := {...}

	// Create http server
	httpServer := {...}

	// Set users service
	usersService := "users-service"

	// Create users middleware
	usersMiddleware := users.NewMiddleware(
		&users.MiddlewareConfig{
			UsersService: usersService,
			HttpClient:  httpClient,
		},
	)

	// Set roles
	roles := []string{"admin"}

	// Use auth middleware
	httpServer.AddRoute(
		http.MethodGet,
		"/",
		func(ctx server.ReqCtx) {
			ctx.WriteString("Hello")
		},
		usersMiddleware.Auth(
			// Restrict access based on roles (optional)
			users.WithAuthRolesOption(roles),
			// Disable MFA validation (optional)
			users.WithoutAuthMfaOption(),
		),
	)
}

Directories

Path Synopsis
http
services

Jump to

Keyboard shortcuts

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