Minimum viable
This commit is contained in:
51
IPInfo.go
Normal file
51
IPInfo.go
Normal file
@@ -0,0 +1,51 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
"io/ioutil"
|
||||
"net/http"
|
||||
"strings"
|
||||
)
|
||||
|
||||
// IPAddressInfo is the IP Address information from API
|
||||
type IPAddressInfo struct {
|
||||
Status string `json:"status"`
|
||||
Country string `json:"country"`
|
||||
CountryCode string `json:"countryCode"`
|
||||
Region string `json:"region"`
|
||||
RegionName string `json:"regionName"`
|
||||
City string `json:"city"`
|
||||
ZIP string `json:"zip"`
|
||||
Latitude float32 `json:"lat"`
|
||||
Longitude float32 `json:"lon"`
|
||||
Timezone string `json:"timezone"`
|
||||
ISP string `json:"isp"`
|
||||
Organisation string `json:"org"`
|
||||
AS string `json:"as"`
|
||||
IPAddress string `json:"query"`
|
||||
}
|
||||
|
||||
func getIPInfo(ipaddress string) IPAddressInfo {
|
||||
apiEndpoint := "http://ip-api.com/json/" + ipaddress
|
||||
resp, _ := http.Get(apiEndpoint)
|
||||
body, _ := ioutil.ReadAll(resp.Body)
|
||||
// fmt.Print(string(body))
|
||||
infoString := string(body)
|
||||
var info IPAddressInfo
|
||||
err := json.Unmarshal([]byte(infoString), &info)
|
||||
if err != nil {
|
||||
fmt.Println(err)
|
||||
}
|
||||
return info
|
||||
}
|
||||
|
||||
func printIPInfo(input string) {
|
||||
var IPInfo IPAddressInfo = getIPInfo(input)
|
||||
var location string = IPInfo.Country + "/" + IPInfo.RegionName + "/" + IPInfo.City
|
||||
fmt.Println("IP Address: ", IPInfo.IPAddress)
|
||||
fmt.Println("Location: ", location)
|
||||
fmt.Println("Timezone: ", IPInfo.Timezone)
|
||||
fmt.Println("ISP: ", IPInfo.ISP)
|
||||
fmt.Println("BGP AS: ", strings.Fields(IPInfo.AS)[0])
|
||||
}
|
||||
Reference in New Issue
Block a user