Skip to content
Snippets Groups Projects
main.go 1.53 KiB
Newer Older
  • Learn to ignore specific revisions
  • Nicolas PERNOUD's avatar
    Nicolas PERNOUD committed
    package main
    
    import (
    	"flag"
    
    Nicolas PERNOUD's avatar
    Nicolas PERNOUD committed
    	"net/http"
    
    Nicolas PERNOUD's avatar
    Nicolas PERNOUD committed
    	"strconv"
    
    	// "strings"
    
    Nicolas PERNOUD's avatar
    Nicolas PERNOUD committed
    )
    
    var (
    	httpPort = flag.Int("http_port", 80, "HTTP port to serve on (defaults to 80)")
    )
    
    func main() {
    	// Parse the flags
    	flag.Parse()
    	mux := http.NewServeMux()
    
    	mux.HandleFunc("/auth", func(w http.ResponseWriter, r *http.Request) {
    
    Nicolas PERNOUD's avatar
    Nicolas PERNOUD committed
    		query := r.URL.Query()
    
    Hugo NOUTS's avatar
    Hugo NOUTS committed
    		// host := strings.Split(query.Get("state"), "-")[1]
    
    		clientId := query.Get("client_id")
    		cozyOrigin := query.Get("redirect_uri") // here we use the redirect_uri param to transmit our stack url
    
    		state := query.Get("state")
    
    		response, err := http.Get("https://gw.hml.api.enedis.fr/group/espace-particuliers/consentement-linky/oauth2/authorize?client_id="+ clientId +"&duration=P6M&redirect_uri=https://oauth-proxy.wf.alpha.grandlyon.com/redirect&response_type=code&state="+ state +"-"+ cozyOrigin)
    		if err != nil {
    			fmt.Printf("%s", err)
    		} else {
    			defer response.Body.Close()
    			contents, err := ioutil.ReadAll(response.Body)
    			fmt.Printf("%s\n", string(contents))
    		}
    	
    	})
    
    	mux.HandleFunc("/redirect", func(w http.ResponseWriter, r *http.Request) {
    		query := r.URL.Query()
    		state := strings.Split(query.Get("state"), "-")[0]
    		host := strings.Split(query.Get("state"), "-")[1]
    
    		usagePointId := query.Get("usage_point_id")
    
    Hugo SUBTIL's avatar
    Hugo SUBTIL committed
    		code := query.Get("code")
    
    Hugo NOUTS's avatar
    Hugo NOUTS committed
    		redir := "https://" + host + "/accounts/enedisoauth/redirect?code=" + code + "&state="+ state +"&usage_point_id=" + usagePointId
    
    		fmt.Println(redir)
    
    Nicolas PERNOUD's avatar
    Nicolas PERNOUD committed
    		http.Redirect(w, r, redir, 302)
    	})
    
    	http.ListenAndServe(":"+strconv.Itoa(*httpPort), mux)
    }