package utils

import (
	"errors"
	"strings"

	"cloud.o-forge.io/core/oc-lib/tools"
)

func ExtractMethod(relation string, internal bool) (tools.METHOD, error) {
	meths := []tools.METHOD{tools.GET, tools.PUT, tools.POST, tools.DELETE}
	if internal {
		meths = append(meths, []tools.METHOD{tools.STRICT_INTERNAL_GET, tools.STRICT_INTERNAL_POST, tools.STRICT_INTERNAL_POST, tools.STRICT_INTERNAL_DELETE}...)
	}
	for _, method := range meths {
		if (!internal && strings.Contains(strings.ToUpper(relation), strings.ToUpper(method.String()))) || (internal && strings.ToUpper(relation) == strings.ToUpper(method.String())) {
			return method, nil
		}
	}
	return tools.GET, errors.New("method not found")
}
