summaryrefslogtreecommitdiff
path: root/cli
diff options
context:
space:
mode:
authorJeroen Wijenbergh <jeroenwijenbergh@protonmail.com>2022-03-07 15:43:07 +0100
committerjwijenbergh <jeroenwijenbergh@protonmail.com>2022-04-05 12:26:13 +0200
commit56548c511163b4dd22d9a96a2f5ae647f1627a7b (patch)
tree20ebfa8641840cd09e026a960e1eca6b60976381 /cli
parentb2228bda5528ad69d0d915e4dc9a15e2291818c8 (diff)
Refactor: Simplify API by using a state as context
Diffstat (limited to 'cli')
-rw-r--r--cli/main.go78
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)
}