package client import ( "fmt" "io/ioutil" "net/http" log "github.com/sirupsen/logrus" ) type Config struct { Token string } // Authenticate using OAuth2 password credentials func GetAccessToken(c *Config) (string, error) { // // Setup OAuth2 authentication. // conf := oauth2.Config{ // ClientID: c.ClientID, // ClientSecret: "", // Endpoint: oauth2.Endpoint{ // TokenURL: "https://" + c.Hostname + "/oidc-token-service/" + c.ClientID + "/token", // }, // Scopes: []string{"em_api_access"}, // } // log.WithFields(log.Fields{"conf": fmt.Sprintf("%+v", conf)}).Debug() // token, err := conf.PasswordCredentialsToken(context.TODO(), c.Username, c.Password) // if err != nil { // log.Error("Error retrieving AccessToken. Check configuration, username and password") // return "", err // } // log.WithFields(log.Fields{"token": fmt.Sprintf("%+v", token.AccessToken)}).Debug() // return token.AccessToken, nil return c.Token, nil } func GetOpportunities(c *Config, url string) (string, error) { accessToken, err := GetAccessToken(c) if err != nil { log.Error(err) return "", err } if url == "" { url = "https://verint-my.sharepoint.com/personal/peter_morton_verint_com/_api/web/lists/GetByTitle('DFE Focus Opportunities')/items?%24select=Title%2CStatus%2CSolutionConsultantId" } method := "GET" client := &http.Client{} req, err := http.NewRequest(method, url, nil) if err != nil { fmt.Println(err) return "", err } req.Header.Add("Content-Type", "application/json") req.Header.Add("Prefer", "apiversion=2.1") req.Header.Add("Accept", "application/json;odata=verbose") req.Header.Add("Authorization", "Bearer "+accessToken) res, err := client.Do(req) if err != nil { fmt.Println(err) return "", err } defer res.Body.Close() body, err := ioutil.ReadAll(res.Body) if err != nil { fmt.Println(err) return "", err } log.WithFields(log.Fields{"result.body": fmt.Sprintf("%+v", string(body))}).Debug() return string(body), nil }