39 lines
888 B
Go
39 lines
888 B
Go
package corrently
|
|
|
|
import (
|
|
"net/http"
|
|
"time"
|
|
|
|
"github.com/evcc-io/evcc/util"
|
|
"github.com/evcc-io/evcc/util/request"
|
|
"golang.org/x/oauth2"
|
|
)
|
|
|
|
type tokenSource struct {
|
|
log *util.Logger
|
|
}
|
|
|
|
func TokenSource(log *util.Logger, token *oauth2.Token) oauth2.TokenSource {
|
|
return oauth2.ReuseTokenSource(token, &tokenSource{log})
|
|
}
|
|
|
|
func (ts *tokenSource) Token() (*oauth2.Token, error) {
|
|
// "Content-Type: application/json" \
|
|
// --request POST \
|
|
// https://console.corrently.io/v2.0/auth/requestToken
|
|
|
|
var res struct {
|
|
Token string `json:"token"`
|
|
Expires int64 `json:"expires"`
|
|
}
|
|
|
|
req, _ := request.New(http.MethodPost, "https://console.corrently.io/v2.0/auth/requestToken", nil, request.JSONEncoding)
|
|
err := request.NewHelper(ts.log).DoJSON(req, &res)
|
|
|
|
token := &oauth2.Token{
|
|
AccessToken: res.Token,
|
|
Expiry: time.UnixMilli(res.Expires),
|
|
}
|
|
|
|
return token, err
|
|
}
|