cinderguard
Содержание

Примеры

Небольшие законченные программы. Каждую можно скопировать и запустить как есть.

Validate и Fields

Проверяет JSON-документ и возвращает список ошибок.

Возвращает пути всех объявленных полей.

package main

import (
	"context"
	"fmt"
	"log"

	"github.com/cinderguardhq/cinderguard"
)

func main() {
	ctx := context.Background()

	v, err := cinderguard.New(cinderguard.Options{
		AllowUnknown: false,
		Locale:       "ru",
	})
	if err != nil {
		log.Fatal(err)
	}
	defer v.Close()

	items, err := v.Validate(ctx, []byte("{"email":"ada@example.com"}"))
	if err != nil {
		log.Fatal(err)
	}
	fmt.Println(items)

	items, err := v.Fields(ctx)
	if err != nil {
		log.Fatal(err)
	}
	fmt.Println(items)
}

IsValid и Field

Сообщает, проходит ли документ проверку, не собирая сообщений об ошибках.

Добавляет правила для поля.

package main

import (
	"context"
	"fmt"
	"log"

	"github.com/cinderguardhq/cinderguard"
)

func main() {
	ctx := context.Background()

	v, err := cinderguard.New(cinderguard.Options{
		AllowUnknown: false,
		TrimStrings:  true,
	})
	if err != nil {
		log.Fatal(err)
	}
	defer v.Close()

	ok, err := v.IsValid(ctx, []byte("{"email":"ada@example.com"}"))
	if err != nil {
		log.Fatal(err)
	}
	fmt.Println(ok)

	if err := v.Field(ctx, "email", "required|email"); err != nil {
		log.Fatal(err)
	}
}