本文整理汇总了Golang中net/http.Request.ASN方法的典型用法代码示例。如果您正苦于以下问题:Golang Request.ASN方法的具体用法?Golang Request.ASN怎么用?Golang Request.ASN使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类net/http.Request
的用法示例。
在下文中一共展示了Request.ASN方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Golang代码示例。
示例1: ApiHandler
func ApiHandler(w http.ResponseWriter, r *http.Request) {
w.Header().Set("Content-Type", "text/json")
w.Header().Set("Access-Control-Allow-Origin", "*")
vars := mux.Vars(r)
neighbors_lock.RLock()
defer neighbors_lock.RUnlock()
type ipasnResult struct {
ASN ASN
ASPath ASPath `json:",omitempty"`
Name string `json:",omitempty"`
Prefix string `json:",omitempty"`
}
switch vars["method"] {
case "ipasn":
_ = r.ParseForm()
ip := net.ParseIP(r.Form.Get("ip"))
if ip == nil {
w.WriteHeader(400)
fmt.Fprintln(w, "Bad IP address")
return
}
result := make(map[string]*ipasnResult)
for neighbor, data := range neighbors {
data.lock.RLock()
defer data.lock.RUnlock()
node := data.FindNode(&ip)
if node.Bits() > 0 {
result[neighbor] = new(ipasnResult)
route := node.Value.(*Route)
r := result[neighbor]
r.ASN = ASN(route.PrimaryASN)
r.ASPath = route.ASPath
r.Name = ""
r.Prefix = nodeToIPNet(node).String()
}
}
json, err := json.Marshal(map[string]interface{}{"result": result})
if err != nil {
w.WriteHeader(500)
log.Println("Error generating json", err)
fmt.Fprintln(w, "Could not generate JSON")
}
fmt.Fprint(w, string(json), "\n")
default:
w.WriteHeader(404)
return
}
}