34 lines
526 B
Go
34 lines
526 B
Go
|
// Copyright © 2023 Roberto Hidalgo <event-gateway@un.rob.mx>
|
||
|
// SPDX-License-Identifier: Apache-2.0
|
||
|
package types
|
||
|
|
||
|
import (
|
||
|
"encoding/json"
|
||
|
"errors"
|
||
|
)
|
||
|
|
||
|
var ErrInvalid = errors.New("invalid source.kind provided")
|
||
|
|
||
|
type Kind string
|
||
|
|
||
|
const (
|
||
|
HTTP Kind = "http"
|
||
|
Consul Kind = "consul"
|
||
|
)
|
||
|
|
||
|
func (k *Kind) UnmarshalJSON(raw []byte) error {
|
||
|
var data string
|
||
|
if err := json.Unmarshal(raw, &data); err != nil {
|
||
|
return err
|
||
|
}
|
||
|
|
||
|
nk := Kind(data)
|
||
|
switch nk {
|
||
|
case HTTP, Consul:
|
||
|
*k = nk
|
||
|
return nil
|
||
|
}
|
||
|
|
||
|
return ErrInvalid
|
||
|
}
|