Blame internal/common/states.go

Packit 63bb0d
package common
Packit 63bb0d
Packit 63bb0d
import (
Packit 63bb0d
	"encoding/json"
Packit 63bb0d
)
Packit 63bb0d
Packit 63bb0d
func getStateMapping() []string {
Packit 63bb0d
	return []string{"WAITING", "RUNNING", "FINISHED", "FAILED"}
Packit 63bb0d
}
Packit 63bb0d
Packit 63bb0d
type ImageBuildState int
Packit 63bb0d
Packit 63bb0d
const (
Packit 63bb0d
	IBWaiting ImageBuildState = iota
Packit 63bb0d
	IBRunning
Packit 63bb0d
	IBFinished
Packit 63bb0d
	IBFailed
Packit 63bb0d
)
Packit 63bb0d
Packit 63bb0d
// CustomJsonConversionError is thrown when parsing strings into enumerations
Packit 63bb0d
type CustomJsonConversionError struct {
Packit 63bb0d
	reason string
Packit 63bb0d
}
Packit 63bb0d
Packit 63bb0d
// Error returns the error as a string
Packit 63bb0d
func (err *CustomJsonConversionError) Error() string {
Packit 63bb0d
	return err.reason
Packit 63bb0d
}
Packit 63bb0d
Packit 63bb0d
// CustomTypeError is thrown when parsing strings into enumerations
Packit 63bb0d
type CustomTypeError struct {
Packit 63bb0d
	reason string
Packit 63bb0d
}
Packit 63bb0d
Packit 63bb0d
// Error returns the error as a string
Packit 63bb0d
func (err *CustomTypeError) Error() string {
Packit 63bb0d
	return err.reason
Packit 63bb0d
}
Packit 63bb0d
Packit 63bb0d
// ToString converts ImageBuildState into a human readable string
Packit 63bb0d
func (ibs ImageBuildState) ToString() string {
Packit 63bb0d
	return getStateMapping()[int(ibs)]
Packit 63bb0d
}
Packit 63bb0d
Packit 63bb0d
func unmarshalStateHelper(data []byte, mapping []string) (int, error) {
Packit 63bb0d
	var stringInput string
Packit 63bb0d
	err := json.Unmarshal(data, &stringInput)
Packit 63bb0d
	if err != nil {
Packit 63bb0d
		return 0, err
Packit 63bb0d
	}
Packit 63bb0d
	for n, str := range getStateMapping() {
Packit 63bb0d
		if str == stringInput {
Packit 63bb0d
			return n, nil
Packit 63bb0d
		}
Packit 63bb0d
	}
Packit 63bb0d
	return 0, &CustomJsonConversionError{"invalid image build status:" + stringInput}
Packit 63bb0d
}
Packit 63bb0d
Packit 63bb0d
// UnmarshalJSON converts a JSON string into an ImageBuildState
Packit 63bb0d
func (ibs *ImageBuildState) UnmarshalJSON(data []byte) error {
Packit 63bb0d
	val, err := unmarshalStateHelper(data, getStateMapping())
Packit 63bb0d
	if err != nil {
Packit 63bb0d
		return err
Packit 63bb0d
	}
Packit 63bb0d
	*ibs = ImageBuildState(val)
Packit 63bb0d
	return nil
Packit 63bb0d
}
Packit 63bb0d
Packit 63bb0d
func (ibs ImageBuildState) MarshalJSON() ([]byte, error) {
Packit 63bb0d
	return json.Marshal(getStateMapping()[ibs])
Packit 63bb0d
}