diff --git a/main.go b/main.go index 3fcdcedcaadcdbd064b302d3abb97180a3c4a62b..a0a988c371ec053a44b43d8900a918eb83eb4645 100644 --- a/main.go +++ b/main.go @@ -1,15 +1,15 @@ package main import ( + "encoding/json" "flag" "fmt" - "time" + "io/ioutil" "net/http" "net/url" - "io/ioutil" "strconv" "strings" - "encoding/json" + "time" ) var ( @@ -17,21 +17,21 @@ var ( ) type TokenResponse struct { - AccessToken string `json:"access_token"` - TokenType string `json:"token_type"` - ExpiresIn int `json:"expires_in"` - RefreshToken string `json:"refresh_token"` - Scope string `json:"scope"` - RefreshTokenIssuedAt string `json:"refresh_token_issued_at"` - IssueAt string `json:"issued_at"` - UsagePointId string `json:"usage_points_id"` + AccessToken string `json:"access_token"` + TokenType string `json:"token_type"` + ExpiresIn int `json:"expires_in"` + RefreshToken string `json:"refresh_token"` + Scope string `json:"scope"` + RefreshTokenIssuedAt string `json:"refresh_token_issued_at"` + IssueAt string `json:"issued_at"` + UsagePointId string `json:"usage_points_id"` } func main() { // Parse the flags flag.Parse() mux := http.NewServeMux() - fmt.Println("Server started") + fmt.Println("Server started") mux.HandleFunc("/auth", func(w http.ResponseWriter, r *http.Request) { fmt.Println("*******************") @@ -43,14 +43,14 @@ func main() { state := query.Get("state") cozyOrigin := query.Get("redirect_uri") // here we use the redirect_uri param to transmit our stack url redirectUri := "https://oauth-proxy.wf.alpha.grandlyon.com/redirect" - responseType := "code" + responseType := "code" // DEV API // authURL := "https://gw.hml.api.enedis.fr/dataconnect/v1/oauth2/authorize" // PROD API authURL := "https://mon-compte-particulier.enedis.fr/dataconnect/v1/oauth2/authorize" - redirectUrl := authURL +"?client_id="+ clientId +"&duration=P6M&redirect_uri="+ redirectUri +"&response_type="+ responseType +"&state="+ state +"-"+ cozyOrigin + redirectUrl := authURL + "?client_id=" + clientId + "&duration=P6M&redirect_uri=" + redirectUri + "&response_type=" + responseType + "&state=" + state + "-" + cozyOrigin fmt.Println(time.Now().Format("2006-01-02 15:04:05"), "- Redirect to - ", redirectUrl) http.Redirect(w, r, redirectUrl, 302) @@ -70,18 +70,18 @@ func main() { fmt.Println("No host found") } state := req_state[0:splitIndex] - host := req_state[splitIndex+1:len(req_state)] + host := req_state[splitIndex+1:] usagePointId := query.Get("usage_point_id") - redir := host + "?code=" + code + "&state="+ state +"&usage_point_id=" + usagePointId + redir := host + "?code=" + code + "&state=" + state + "&usage_point_id=" + usagePointId fmt.Println(time.Now().Format("2006-01-02 15:04:05"), "- Redirect to -", redir) http.Redirect(w, r, redir, 302) }) mux.HandleFunc("/token", func(w http.ResponseWriter, r *http.Request) { fmt.Println("*******************") - fmt.Println(time.Now().Format("2006-01-02 15:04:05"), "- New token request") + fmt.Println(time.Now().Format("2006-01-02 15:04:05"), "- New token request") query := r.URL.Query() fmt.Println(query) @@ -106,7 +106,7 @@ func main() { http.Error(w, http.StatusText(500), 500) } clientIdStartIndex += 10 - clientId = pageContent[clientIdStartIndex:clientIdStartIndex + 36] + clientId = pageContent[clientIdStartIndex : clientIdStartIndex+36] //Check for client_secret clientSecretStartIndex := strings.Index(pageContent, "client_secret=") if clientSecretStartIndex == -1 { @@ -114,14 +114,14 @@ func main() { http.Error(w, http.StatusText(500), 500) } clientSecretStartIndex += 14 - clientSecret = pageContent[clientSecretStartIndex:clientSecretStartIndex + 36] + clientSecret = pageContent[clientSecretStartIndex : clientSecretStartIndex+36] //Check for code codeStartIndex := strings.Index(pageContent, "code=") if codeStartIndex == -1 { fmt.Println(time.Now().Format("2006-01-02 15:04:05"), " - Info - No code found (optionnal param)") } else { codeStartIndex += 5 - code = pageContent[codeStartIndex:codeStartIndex + 30] + code = pageContent[codeStartIndex : codeStartIndex+30] } //Check for grant_type grandTypeStartIndex := strings.Index(pageContent, "grant_type=") @@ -130,7 +130,7 @@ func main() { http.Error(w, http.StatusText(500), 500) } grandTypeStartIndex += 11 - tempGrandTypeString := pageContent[grandTypeStartIndex:len(pageContent)] + tempGrandTypeString := pageContent[grandTypeStartIndex:] grandTypeEndIndex := strings.Index(tempGrandTypeString, "&") if grandTypeEndIndex == -1 { fmt.Println(time.Now().Format("2006-01-02 15:04:05"), " - Error - No closing tag for grant_type found") @@ -144,7 +144,7 @@ func main() { http.Error(w, http.StatusText(500), 500) } refershTokenStartIndex += 14 - refreshToken = pageContent[refershTokenStartIndex:refershTokenStartIndex + 46] + refreshToken = pageContent[refershTokenStartIndex : refershTokenStartIndex+46] } else { // Retrieve params from query clientId = query.Get("client_id") @@ -159,12 +159,12 @@ func main() { fmt.Printf("code: %s\n", code) fmt.Printf("grant_type: %s\n", grantType) fmt.Printf("refresh_token: %s\n", refreshToken) - + // DEV API // tokenUrl := "https://gw.hml.api.enedis.fr/v1/oauth2/token" // PROD API tokenUrl := "https://gw.prd.api.enedis.fr/v1/oauth2/token" - + data := url.Values{} data.Set("client_id", clientId) data.Set("client_secret", clientSecret) @@ -193,7 +193,7 @@ func main() { http.Error(w, decodeError.Error(), 500) return } - + // Response with json data jsonError := json.NewEncoder(w).Encode(data) if jsonError != nil {