package config import ( "os" "golang.org/x/oauth2" "golang.org/x/oauth2/google" "google.golang.org/api/gmail/v1" ) type Oauth2Inbox struct { Google *oauth2.Config Outlook *oauth2.Config } func GoogleOauth2Inbox(baseURL string) *oauth2.Config { return &oauth2.Config{ ClientID: os.Getenv("BOX_GOOGLE_CLIENT_ID"), ClientSecret: os.Getenv("BOX_GOOGLE_CLIENT_SECRET"), RedirectURL: baseURL + "/addresses/google/callback", Scopes: []string{ gmail.GmailComposeScope, gmail.GmailMetadataScope, gmail.GmailModifyScope, gmail.GmailSendScope, gmail.GmailSettingsBasicScope, gmail.GmailReadonlyScope, }, Endpoint: google.Endpoint, } } func OutlookOauth2Inbox(baseURL string) *oauth2.Config { return &oauth2.Config{ ClientID: os.Getenv("BOX_OUTLOOK_CLIENT_ID"), ClientSecret: os.Getenv("BOX_OUTLOOK_CLIENT_SECRET"), RedirectURL: baseURL + "/addresses/outlook/callback", Scopes: []string{ "openid", "email", "profile", "https://outlook.office.com/IMAP.AccessAsUser.All", "https://outlook.office.com/SMTP.Send", "https://outlook.office.com/Mail.Send", "offline_access", }, Endpoint: oauth2.Endpoint{ AuthURL: "https://login.microsoftonline.com/common/oauth2/v2.0/authorize", TokenURL: "https://login.microsoftonline.com/common/oauth2/v2.0/token", }, } }