diff --git a/pkg/extension/extension.go b/pkg/extension/extension.go index 5277dd50ffe748595aa744773770117f6cb214b2..f824e327273c3c8aa5ad2906540b558b858ce411 100644 --- a/pkg/extension/extension.go +++ b/pkg/extension/extension.go @@ -130,23 +130,25 @@ func (p *ParsedActionURL) GetScheme() string { return p.scheme } -func (p *ParsedActionURL) Parse(action string) error { +func ParseActionURL(action string) (*ParsedActionURL, error) { + u, err := url.Parse(action) if err != nil { - return err + return nil, err } - p.scheme = u.Scheme - if p.GetScheme() == "grpc" { + parsed := &ParsedActionURL{} + parsed.scheme = u.Scheme + if parsed.GetScheme() == "grpc" { path := u.Path if strings.HasPrefix(u.Path, "/") { path = u.Path[1:] } splitPath := strings.Split(path, "/") if len(splitPath) < 2 { - return errors.Errorf("incorrect action URL, no action id: '%s'", action) + return nil, errors.Errorf("incorrect action URL, no action id: '%s'", action) } - p.extensionID = splitPath[0] - p.actionID = splitPath[1] + parsed.extensionID = splitPath[0] + parsed.actionID = splitPath[1] } - return nil + return nil, nil }