good morning!!!!

Skip to content
Snippets Groups Projects
route.go 834 B
Newer Older
Garet Halliday's avatar
Garet Halliday committed
package gat

import (
	"encoding/json"
	"fmt"

	"github.com/caddyserver/caddy/v2"
)

type RouteConfig struct {
Garet Halliday's avatar
Garet Halliday committed
	Match  json.RawMessage `json:"match,omitempty" caddy:"namespace=pggat.matchers inline_key=matcher"`
	Handle json.RawMessage `json:"handle,omitempty" caddy:"namespace=pggat.handlers inline_key=handler"`
Garet Halliday's avatar
Garet Halliday committed
}

type Route struct {
	RouteConfig

Garet Halliday's avatar
Garet Halliday committed
	match  Matcher
	handle Handler
Garet Halliday's avatar
Garet Halliday committed
}

func (T *Route) Provision(ctx caddy.Context) error {
	if T.Match != nil {
		val, err := ctx.LoadModule(T, "Match")
		if err != nil {
			return fmt.Errorf("loading matcher module: %v", err)
		}
		T.match = val.(Matcher)
	}
Garet Halliday's avatar
Garet Halliday committed
	if T.Handle != nil {
		val, err := ctx.LoadModule(T, "Handle")
Garet Halliday's avatar
Garet Halliday committed
		if err != nil {
Garet Halliday's avatar
Garet Halliday committed
			return fmt.Errorf("loading handle module: %v", err)
Garet Halliday's avatar
Garet Halliday committed
		}
Garet Halliday's avatar
Garet Halliday committed
		T.handle = val.(Handler)
Garet Halliday's avatar
Garet Halliday committed
	}
	return nil
}

var _ caddy.Provisioner = (*Route)(nil)