本文整理匯總了Golang中net/url.URL.IsAbs方法的典型用法代碼示例。如果您正苦於以下問題:Golang URL.IsAbs方法的具體用法?Golang URL.IsAbs怎麽用?Golang URL.IsAbs使用的例子?那麽, 這裏精選的方法代碼示例或許可以為您提供幫助。您也可以進一步了解該方法所在類net/url.URL
的用法示例。
在下文中一共展示了URL.IsAbs方法的15個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的Golang代碼示例。
示例1: validateDomain
func validateDomain(base *url.URL, link *url.URL) error {
if !link.IsAbs() {
return fmt.Errorf("Validated domain error: url is not absolute: %s", link)
}
if base.Host == "" {
return fmt.Errorf("Validated domain error: empty domain: %s", link)
}
/*
if (base.Host != link.Host) {
return fmt.Errorf("Validated domain error: different domain: %s", link)
}*/
err := isDomainBlacklisted(link)
if err != nil {
return err
}
err = isExtenstionBlacklisted(link)
if err != nil {
return err
}
return nil
}
示例2: parseLinks
func parseLinks(urlToGet *url.URL, content string) ([]string, error) {
var (
err error
links []string = make([]string, 0)
matches [][]string
findLinks = regexp.MustCompile("<a.*?href=\"(.*?)\"")
) //var
// Retrieve all anchor tag URLs from string
matches = findLinks.FindAllStringSubmatch(content, -1)
for _, val := range matches {
var linkUrl *url.URL
// Parse the anchr tag URL
if linkUrl, err = url.Parse(val[1]); err != nil {
return links, err
} //if
// If the URL is absolute, add it to the slice
// If the URL is relative, build an absolute URL
if linkUrl.IsAbs() {
links = append(links, linkUrl.String())
} else {
links = append(links, urlToGet.Scheme+"://"+urlToGet.Host+linkUrl.String())
} //else
} //for
return links, err
} //parseImages
示例3: parseImages
func parseImages(urlToGet *url.URL, content string) ([]string, error) {
var (
err error
imgs []string
matches [][]string
findImages = regexp.MustCompile("<img.*?src=\"(.*?)\"")
) //var
// Retrieve all image URLs from string
matches = findImages.FindAllStringSubmatch(content, -1)
for _, val := range matches {
var imgUrl *url.URL
// Parse the image URL
if imgUrl, err = url.Parse(val[1]); err != nil {
return imgs, err
} //if
// If the URL is absolute, add it to the slice
// If the URL is relative, build an absolute URL
if imgUrl.IsAbs() {
imgs = append(imgs, imgUrl.String())
} else {
imgs = append(imgs, urlToGet.Scheme+"://"+urlToGet.Host+imgUrl.String())
} //else
} //for
return imgs, err
} //parseImages
示例4: ParseSource
// ParseSource -
func ParseSource(value string) (*Source, error) {
var (
alias string
srcURL *url.URL
)
parts := strings.SplitN(value, "=", 2)
if len(parts) == 1 {
f := parts[0]
alias = strings.SplitN(value, ".", 2)[0]
if path.Base(f) != f {
err := fmt.Errorf("Invalid datasource (%s). Must provide an alias with files not in working directory.", value)
return nil, err
}
srcURL = absURL(f)
} else if len(parts) == 2 {
alias = parts[0]
var err error
srcURL, err = url.Parse(parts[1])
if err != nil {
return nil, err
}
if !srcURL.IsAbs() {
srcURL = absURL(parts[1])
}
}
s := NewSource(alias, srcURL)
return s, nil
}
示例5: addFeeds
func addFeeds(user content.User, fm *readeef.FeedManager, links []string) (resp responseError) {
resp = newResponse()
var err error
errs := make([]addFeedError, 0, len(links))
for _, link := range links {
var u *url.URL
if u, err = url.Parse(link); err != nil {
resp.err = err
errs = append(errs, addFeedError{Link: link, Error: "Error parsing link"})
continue
} else if !u.IsAbs() {
resp.err = errors.New("Feed has no link")
errs = append(errs, addFeedError{Link: link, Error: resp.err.Error()})
continue
} else {
var f content.Feed
if f, err = fm.AddFeedByLink(link); err != nil {
resp.err = err
errs = append(errs, addFeedError{Link: link, Error: "Error adding feed to the database"})
continue
}
uf := user.AddFeed(f)
if uf.HasErr() {
resp.err = f.Err()
errs = append(errs, addFeedError{Link: link, Title: f.Data().Title, Error: "Error adding feed to the database"})
continue
}
tags := strings.SplitN(u.Fragment, ",", -1)
if u.Fragment != "" && len(tags) > 0 {
repo := uf.Repo()
tf := repo.TaggedFeed(user)
tf.Data(uf.Data())
t := make([]content.Tag, len(tags))
for i := range tags {
t[i] = repo.Tag(user)
t[i].Data(data.Tag{Value: data.TagValue(tags[i])})
}
tf.Tags(t)
if tf.UpdateTags(); tf.HasErr() {
resp.err = tf.Err()
errs = append(errs, addFeedError{Link: link, Title: f.Data().Title, Error: "Error adding feed to the database"})
continue
}
}
}
}
resp.val["Errors"] = errs
resp.val["Success"] = len(errs) < len(links)
return
}
示例6: debugUrl
func debugUrl(u *url.URL) {
logger.Println("Host:", u.Host)
logger.Println("Path:", u.Path)
logger.Println("Request URI:", u.RequestURI())
logger.Println("Scheme:", u.Scheme)
logger.Println("Query:", u.RawQuery)
logger.Println("Fragment:", u.Fragment)
logger.Println("IsAbs:", u.IsAbs())
}
示例7: addFeed
func addFeed(user content.User, fm *readeef.FeedManager, links []string) (resp responseError) {
resp = newResponse()
success := false
for _, link := range links {
var u *url.URL
if u, resp.err = url.Parse(link); resp.err != nil {
/* TODO: non-fatal error */
return
} else if !u.IsAbs() {
/* TODO: non-fatal error */
resp.err = errors.New("Feed has no link")
return
} else {
var f content.Feed
if f, resp.err = fm.AddFeedByLink(link); resp.err != nil {
return
}
uf := user.AddFeed(f)
if uf.HasErr() {
resp.err = f.Err()
return
}
tags := strings.SplitN(u.Fragment, ",", -1)
if u.Fragment != "" && len(tags) > 0 {
repo := uf.Repo()
tf := repo.TaggedFeed(user)
tf.Data(uf.Data())
t := make([]content.Tag, len(tags))
for i := range tags {
t[i] = repo.Tag(user)
t[i].Value(data.TagValue(tags[i]))
}
tf.Tags(t)
if tf.UpdateTags(); tf.HasErr() {
resp.err = tf.Err()
return
}
}
success = true
}
}
resp.val["Success"] = success
return
}
示例8: endpointIds
func endpointIds(uri *url.URL) (deviceId, channelId string, ok bool) {
if !uri.IsAbs() {
ok = false
return
}
pathPrefix := "/update/"
i := strings.Index(uri.Path, pathPrefix)
if i < 0 {
ok = false
return
}
key := strings.SplitN(uri.Path[i+len(pathPrefix):], ".", 2)
if len(key) < 2 {
ok = false
return
}
return key[0], key[1], true
}
示例9: makeURLAbs
// Combine a URL and Request to make the URL absolute
func makeURLAbs(url *url.URL, request *http.Request) {
if !url.IsAbs() {
url.Host = request.Host
if request.TLS != nil || request.Header.Get("X-Forwarded-Proto") == "https" {
url.Scheme = "https"
} else {
url.Scheme = "http"
}
}
}
示例10: makeURLAbs
// Combine a URL and Request to make the URL absolute
func makeURLAbs(url *url.URL, request *http.Request) {
if !url.IsAbs() {
url.Host = request.Host
if strings.HasPrefix(request.Proto, "HTTP/") {
url.Scheme = "http"
} else {
url.Scheme = "https"
}
}
}
示例11: IpOutsideOfRanges
func IpOutsideOfRanges(testURL url.URL, ranges []IPRange) (bool, error) {
if !testURL.IsAbs() {
return false, errors.New(fmt.Sprintf("Missing protocol for url: %s", testURL))
}
host := strings.Split(testURL.Host, ":")[0]
ipAddress := net.ParseIP(host)
if ipAddress == nil {
ipAddr, err := net.ResolveIPAddr("ip", host)
if err != nil {
return false, errors.New(fmt.Sprintf("Resolving host failed: %s", err))
}
ipAddress = net.ParseIP(ipAddr.String())
}
for _, ipRange := range ranges {
if bytes.Compare(ipAddress, net.ParseIP(ipRange.Start)) >= 0 && bytes.Compare(ipAddress, net.ParseIP(ipRange.End)) <= 0 {
return false, nil
}
}
return true, nil
}
示例12: resolveXSDExternals
// add in any schemas that have any includes
func (g *GoWSDL) resolveXSDExternals(schema *XSDSchema, url *url.URL) error {
for _, incl := range schema.Includes {
log.Println("resolving: ", incl.SchemaLocation)
location, err := url.Parse(incl.SchemaLocation)
if err != nil {
return err
}
_, schemaName := filepath.Split(location.Path)
log.Println("resolving schema name: ", schemaName)
if g.resolvedXSDExternals[schemaName] { // memoisation
continue
}
schemaLocation := location.String()
if !location.IsAbs() {
if !url.IsAbs() {
return fmt.Errorf("Unable to resolve external schema %s through WSDL URL %s", schemaLocation, url)
}
schemaLocation = url.Scheme + "://" + url.Host + schemaLocation
}
log.Println("Downloading external schema", "location", schemaLocation)
data, err := downloadFile(schemaLocation, g.ignoreTLS, g.localRoot)
newschema := new(XSDSchema)
err = xml.Unmarshal(data, newschema)
if err != nil {
log.Println(err)
return err
}
if len(newschema.Includes) > 0 &&
maxRecursion > g.currentRecursionLevel {
g.currentRecursionLevel++
log.Printf("Entering recursion %d\n", g.currentRecursionLevel)
g.resolveXSDExternals(newschema, url)
}
g.wsdl.Types.Schemas = append(g.wsdl.Types.Schemas, newschema)
if g.resolvedXSDExternals == nil {
g.resolvedXSDExternals = make(map[string]bool, maxRecursion)
}
g.resolvedXSDExternals[schemaName] = true
}
return nil
}
示例13: generateURL
func generateURL(URL *url.URL, host string) *url.URL {
if !URL.IsAbs() {
return nil
}
if URL.Scheme != _URL_REQUIRED_SCHEME {
return nil
}
if URL.Host != _URL_REQUIRED_HOST {
if URL.Host != _URL_REQUIRED_ALIAS_HOST {
return nil
}
}
if path, ok := Paths[URL.Path]; ok {
URL.Path = path
} else {
return nil
}
vals := URL.Query()
if URL.Path == _URL_REQUIRED_QUICK_SEARCH_PATH {
vals.Set("quickSearch", "true")
} else {
vals.Set("quickSearch", "false")
}
vals.Set("sortBy", _URL_REQUIRED_SORTING_TYPE)
vals.Set("sortDirection", _URL_REQUIRED_SORTING_DIRECTION)
vals.Set("userId", "null")
vals.Set("conf", "true;true;true;true;true;true;true;true;"+
"true;true;true;true;true;true;true;true;true;true;")
URL.RawQuery = vals.Encode()
return &url.URL{
Scheme: "http",
Host: host,
Path: "/rss",
RawQuery: url.Values{
"url": {URL.String()},
}.Encode(),
}
}
示例14: resolveXsdExternals
func (g *GoWsdl) resolveXsdExternals(schema *XsdSchema, url *url.URL) error {
for _, incl := range schema.Includes {
location, err := url.Parse(incl.SchemaLocation)
if err != nil {
return err
}
_, schemaName := filepath.Split(location.Path)
if g.resolvedXsdExternals[schemaName] {
continue
}
schemaLocation := location.String()
if !location.IsAbs() {
if !url.IsAbs() {
return errors.New(fmt.Sprintf("Unable to resolve external schema %s through WSDL URL %s", schemaLocation, url))
}
schemaLocation = url.Scheme + "://" + url.Host + schemaLocation
}
Log.Info("Downloading external schema", "location", schemaLocation)
data, err := downloadFile(schemaLocation, g.ignoreTls)
newschema := &XsdSchema{}
err = xml.Unmarshal(data, newschema)
if err != nil {
return err
}
if len(newschema.Includes) > 0 &&
maxRecursion > g.currentRecursionLevel {
g.currentRecursionLevel++
//log.Printf("Entering recursion %d\n", g.currentRecursionLevel)
g.resolveXsdExternals(newschema, url)
}
g.wsdl.Types.Schemas = append(g.wsdl.Types.Schemas, newschema)
if g.resolvedXsdExternals == nil {
g.resolvedXsdExternals = make(map[string]bool, maxRecursion)
}
g.resolvedXsdExternals[schemaName] = true
}
return nil
}
示例15: urlIsAbs
func urlIsAbs(u *url.URL) lua.Function {
return func(l *lua.State) int {
l.PushBoolean(u.IsAbs())
return 1
}
}