diff options
| author | Jeroen Wijenbergh <jeroenwijenbergh@protonmail.com> | 2022-03-07 15:43:07 +0100 |
|---|---|---|
| committer | jwijenbergh <jeroenwijenbergh@protonmail.com> | 2022-04-05 12:26:13 +0200 |
| commit | 56548c511163b4dd22d9a96a2f5ae647f1627a7b (patch) | |
| tree | 20ebfa8641840cd09e026a960e1eca6b60976381 /cli | |
| parent | b2228bda5528ad69d0d915e4dc9a15e2291818c8 (diff) | |
Refactor: Simplify API by using a state as context
Diffstat (limited to 'cli')
| -rw-r--r-- | cli/main.go | 78 |
1 files changed, 15 insertions, 63 deletions
diff --git a/cli/main.go b/cli/main.go index fe7dc1d..4d334ac 100644 --- a/cli/main.go +++ b/cli/main.go @@ -3,10 +3,7 @@ package main import ( "flag" eduvpn "github.com/jwijenbergh/eduvpn-common/src" - "golang.org/x/oauth2" - "io/ioutil" "log" - "net/http" "os/exec" "strings" ) @@ -17,64 +14,6 @@ func openBrowser(urlString string) { exec.Command("xdg-open", urlString).Start() } -func constructConfig(urlString string) (*oauth2.Config, string) { - // Get the endpoints - endpoints, err := eduvpn.APIGetEndpoints(urlString) - if err != nil { - log.Fatal("Error API: cannot get endpoints. Message: ", err) - } - log.Printf("API: Got endpoints:\n- V3 API %s\n- V3 Authorization %s\n- V3 Token %s\n", endpoints.API.V3.Endpoint, endpoints.API.V3.AuthorizationEndpoint, endpoints.API.V3.TokenEndpoint) - - // Start the OAuth procedure - config := &oauth2.Config{ - RedirectURL: "http://127.0.0.1:8000/callback", - ClientID: "org.eduvpn.app.linux", - Scopes: []string{"config"}, - Endpoint: oauth2.Endpoint{ - AuthURL: endpoints.API.V3.AuthorizationEndpoint, - TokenURL: endpoints.API.V3.TokenEndpoint, - }, - } - return config, endpoints.API.V3.Endpoint -} - -func auth(urlString string) (*http.Client, string) { - // Get the config - oauthConfig, apiString := constructConfig(urlString) - - // Initialize oauth with the config - eduOAuth, err := eduvpn.InitializeOAuth(oauthConfig) - if err != nil { - log.Fatal("Error OAuth: cannot initialize OAuth. Message: ", err) - } - - // Open the browser - openBrowser(eduOAuth.AuthURL) - - // Get and return authenticated client - client, err := eduOAuth.GetHTTPTokenClient() - if err != nil { - log.Fatal("Error OAUth: cannot get authenticated HTTP client. Message: ", err) - } - return client, apiString -} - -func show_info(client *http.Client, apiString string) { - log.Println("OAUth: Got authenticated HTTP client") - - resp, err := client.Get(apiString + "/info") - if err != nil { - panic(err) - } - defer resp.Body.Close() - - bodyBytes, err := ioutil.ReadAll(resp.Body) - if err != nil { - panic(err) - } - log.Println(string(bodyBytes)) -} - func main() { urlArg := flag.String("url", "", "The url of the vpn") flag.Parse() @@ -89,6 +28,19 @@ func main() { urlString = "https://" + urlString } - client, apiString := auth(urlString) - show_info(client, apiString) + state := eduvpn.Register("org.eduvpn.app.linux", urlString) + authURL, err := eduvpn.InitializeOAuth(state) + if err != nil { + log.Fatal(err) + } + openBrowser(authURL) + oauthErr := eduvpn.FinishOAuth(state) + if oauthErr != nil { + log.Fatal(oauthErr) + } + infoString, infoErr := eduvpn.APIAuthenticatedInfo(state) + if infoErr != nil { + log.Fatal(infoErr) + } + log.Println(infoString) } |
