Skip to content
Snippets Groups Projects
Commit a9f924b0 authored by Marcus Schiesser's avatar Marcus Schiesser
Browse files

added goproxy implementation

parent 26beeaec
No related branches found
No related tags found
No related merge requests found
package handlers
import (
"io"
"log"
"net/http"
"github.com/gorilla/mux"
)
func Proxy(upstream string) func(w http.ResponseWriter, r *http.Request) {
return func(w http.ResponseWriter, r *http.Request) {
vars := mux.Vars(r)
url := upstream + "/" + vars["req"]
log.Printf("Calling upstream url: %s\n", url)
resp, err := http.Get(url)
if err != nil {
handleError(w, url, err)
return
}
defer resp.Body.Close()
_, err = io.Copy(w, resp.Body)
if err != nil {
handleError(w, url, err)
return
}
log.Printf("Successfully read request from %s\n", url)
}
}
func handleError(w http.ResponseWriter, url string, err error) {
log.Printf("Error reading from %s - %v\n", url, err)
io.WriteString(w, "can't read from upstream")
}
package main
import (
"log"
"net/http"
"github.com/gorilla/mux"
"github.com/turngeek/examples-go/src/goproxy/handlers"
)
func main() {
log.Println("Starting My-Aktion API server")
router := mux.NewRouter()
router.HandleFunc("/google/{req}", handlers.Proxy("https://www.google.com")).Methods("GET")
router.HandleFunc("/fb/{req}", handlers.Proxy("https://www.facebook.com")).Methods("GET")
router.HandleFunc("/fb", handlers.Proxy("https://www.facebook.com")).Methods("GET")
if err := http.ListenAndServe(":8000", router); err != nil {
log.Fatal(err)
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment