package storage

import (
	"net/url"
	"strings"

	"github.com/pingcap/errors"
	"github.com/tidbcloud/dataflow-service/pkg/azblob"
)

func ParseUri(uri string) (bucket string, pathPrefix string, err error) {

	uri = strings.TrimSpace(uri)
	u, err := url.Parse(uri)
	if err != nil {
		return "", "", errors.AddStack(err)
	}

	if azblob.IsAzureScheme(u.Scheme) {
		var azurl *azblob.AzblobURL
		azurl, err = azblob.ParseAzblobURL(uri)
		if err != nil {
			return
		}
		bucket = azurl.Container()
		pathPrefix = strings.TrimLeft(azurl.BlobPath(), "/")
		return
	}

	return u.Host, strings.TrimLeft(u.Path, "/"), nil
}
