package router

import (
	"net/http"
)

type route struct {
	Pattern string
	Handler http.Handler
}

//Routes array of route
type Routes []route

func (routes *Routes) add(pattern string, handler http.Handler) {
	append(routes, route[
		pattern,
		handler,
	])
}

// func findURLMatch(data urls, url string) string {
// 	for _, element := range data {
// 		when := element.When
// 		pattern := toRegex(when)

// 		items := regexSubmatch(pattern, url)

// 		if items[0] == url {
// 			urlProxy := replaceStringsURL(items, element.To)
// 			return urlProxy
// 		}
// 	}

// 	return ""
// }

// func readFile(filePath string) urls {
// 	file, err1 := ioutil.ReadFile(filePath)
// 	if err1 != nil {
// 		fmt.Printf("Error while reading file %s\n", filePath)
// 		fmt.Printf("File error: %v\n", err1)
// 		os.Exit(1)
// 	}

// 	var urls []urlObject

// 	err2 := json.Unmarshal(file, &urls)
// 	if err2 != nil {
// 		fmt.Println("error:", err2)
// 		os.Exit(1)
// 	}

// 	return urls
// }

// //PatternURL coloca barra no final de url se não tiver
// func patternURL(url string) string {
// 	lastChar := url[len(url)-1:]
// 	if lastChar != "/" {
// 		url = url + "/"
// 	}

// 	return url
// }

// //ToRegex converte uma expressao imputada em expressão do go
// func toRegex(regex string) *regexp.Regexp {
// 	return regexp.MustCompile(`(?m)` + regex)
// }

// //RegexSubmatch cria os matches aplicando a padrão de regex inputado
// func regexSubmatch(pattern *regexp.Regexp, str string) []string {
// 	data := []string{""}

// 	items := pattern.FindAllStringSubmatch(str, -1)
// 	if len(items) > 0 {
// 		data = items[0]
// 	}

// 	return data
// }

// //ReplaceStringsURL alterar a url imputada colocando as variaveis da url inserida
// func replaceStringsURL(items []string, urlPattern string) string {
// 	for index, element := range items {
// 		urlPattern = strings.Replace(urlPattern, "$"+strconv.Itoa(index), element, -1)
// 	}

// 	return urlPattern
// }
