Selaa lähdekoodia

code refactor

* new json route added
* new remoteAddr func added
tags/v1.0
Ramiro de Zavalia 5 vuotta sitten
vanhempi
commit
da2aebe5d0
1 muutettua tiedostoa jossa 27 lisäystä ja 5 poistoa
  1. 27
    5
      main.go

+ 27
- 5
main.go Näytä tiedosto

@@ -3,19 +3,41 @@ package main
import (
"log"
"net/http"
"strings"
"encoding/json"
)

type output struct{}
type jsonOutput struct {
Ip string `json:"ip"`
}

func (o output) ServeHTTP(w http.ResponseWriter, r *http.Request) {
jsonOutput, err := json.MarshalIndent (r.RemoteAddr, "", " ")
func ipJsonOutput (w http.ResponseWriter, r *http.Request) {
var ip jsonOutput
ip.Ip = remoteAddr(r)
output, err := json.Marshal(ip)
if err != nil {
w.Write([]byte(err.Error()))
}
w.Write(jsonOutput)
w.Write([]byte(output))
}

func ipOutput (w http.ResponseWriter, r *http.Request) {
ip := remoteAddr(r)
w.Write([]byte(ip))
}

func remoteAddr ( r *http.Request) string {
var ip string
if r.RemoteAddr[0] == '[' {
ip = strings.Split(r.RemoteAddr,"]")[0][1:]
} else {
ip = strings.Split(r.RemoteAddr,":")[0]
}
return ip
}

func main() {
log.Fatal(http.ListenAndServe(":8080", output{}))
http.HandleFunc("/",ipOutput)
http.HandleFunc("/json",ipJsonOutput)
log.Fatal(http.ListenAndServe(":8080", nil))
}

Loading…
Peruuta
Tallenna