Ctrl K
ComunidadGuías…

tariff/corrently/tokensource.go

Rama master · réplica de lectura del repositorio original.

Archivo original ↗Preguntar a KiBot
package corrently

import (
	"net/http"
	"time"

	"github.com/evcc-io/evcc/util"
	"github.com/evcc-io/evcc/util/oauth"
	"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, oauth.Redacted(log, &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
}