Compare commits
5 Commits
Author | SHA1 | Date | |
---|---|---|---|
12c700a5c5 | |||
db413ce145 | |||
12e379ab62 | |||
3949597e01 | |||
f732d0ed44 |
@ -27,7 +27,7 @@ func (api *Api) GetApInfo(siteID model.SiteID, macAddress string) (*model.ApInfo
|
|||||||
}
|
}
|
||||||
defer resp.Body.Close()
|
defer resp.Body.Close()
|
||||||
|
|
||||||
response, err := ezhttp.ParseJsonResponse[model.Response[model.ApInfo]](resp.Body)
|
response, err := ezhttp.ParseJsonResponse[model.Response[model.ApInfo]](resp)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
22
api.go
22
api.go
@ -67,7 +67,7 @@ func NewApi(config ApiConfig) (*Api, error) {
|
|||||||
return nil, fmt.Errorf("auth token request failed: %s", authTokenResponse.Message)
|
return nil, fmt.Errorf("auth token request failed: %s", authTokenResponse.Message)
|
||||||
}
|
}
|
||||||
|
|
||||||
api.expiration = time.Now().Add(time.Duration(authTokenResponse.Result.ExpiresIn-1) * time.Second)
|
api.expiration = time.Now().Add(time.Duration(authTokenResponse.Result.ExpiresIn) * time.Second)
|
||||||
api.accessToken = authTokenResponse.Result.AccessToken
|
api.accessToken = authTokenResponse.Result.AccessToken
|
||||||
api.refreshToken = authTokenResponse.Result.RefreshToken
|
api.refreshToken = authTokenResponse.Result.RefreshToken
|
||||||
|
|
||||||
@ -102,7 +102,7 @@ func (api *Api) Login() (*model.LoginResponse, error) {
|
|||||||
}
|
}
|
||||||
defer resp.Body.Close()
|
defer resp.Body.Close()
|
||||||
|
|
||||||
response, err := ezhttp.ParseJsonResponse[model.LoginResponse](resp.Body)
|
response, err := ezhttp.ParseJsonResponse[model.LoginResponse](resp)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
@ -128,7 +128,7 @@ func (api *Api) AuthCode(csrfToken, sessionID string) (*model.AuthCodeResponse,
|
|||||||
}
|
}
|
||||||
defer resp.Body.Close()
|
defer resp.Body.Close()
|
||||||
|
|
||||||
response, err := ezhttp.ParseJsonResponse[model.AuthCodeResponse](resp.Body)
|
response, err := ezhttp.ParseJsonResponse[model.AuthCodeResponse](resp)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
@ -158,7 +158,7 @@ func (api *Api) AuthToken(authCode string) (*model.AuthTokenResponse, error) {
|
|||||||
}
|
}
|
||||||
defer resp.Body.Close()
|
defer resp.Body.Close()
|
||||||
|
|
||||||
response, err := ezhttp.ParseJsonResponse[model.AuthTokenResponse](resp.Body)
|
response, err := ezhttp.ParseJsonResponse[model.AuthTokenResponse](resp)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
@ -166,12 +166,18 @@ func (api *Api) AuthToken(authCode string) (*model.AuthTokenResponse, error) {
|
|||||||
return response, nil
|
return response, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (api *Api) AutoRefresh(ctx context.Context) error {
|
func (api *Api) MustAutoRefresh(ctx context.Context, refreshBeforeExpiration time.Duration) {
|
||||||
|
if err := api.AutoRefresh(ctx, refreshBeforeExpiration); err != nil {
|
||||||
|
panic(err)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (api *Api) AutoRefresh(ctx context.Context, refreshBeforeExpiration time.Duration) error {
|
||||||
for {
|
for {
|
||||||
select {
|
select {
|
||||||
case <-ctx.Done():
|
case <-ctx.Done():
|
||||||
return nil
|
return nil
|
||||||
case <-time.After(time.Until(api.expiration)):
|
case <-time.After(time.Until(api.expiration.Add(-refreshBeforeExpiration))):
|
||||||
if err := api.Refresh(); err != nil {
|
if err := api.Refresh(); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
@ -201,12 +207,12 @@ func (api *Api) Refresh() error {
|
|||||||
}
|
}
|
||||||
defer resp.Body.Close()
|
defer resp.Body.Close()
|
||||||
|
|
||||||
response, err := ezhttp.ParseJsonResponse[model.AuthTokenResponse](resp.Body)
|
response, err := ezhttp.ParseJsonResponse[model.AuthTokenResponse](resp)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
api.expiration = time.Now().Add(time.Duration(response.Result.ExpiresIn-1) * time.Second)
|
api.expiration = time.Now().Add(time.Duration(response.Result.ExpiresIn) * time.Second)
|
||||||
api.accessToken = response.Result.AccessToken
|
api.accessToken = response.Result.AccessToken
|
||||||
api.refreshToken = response.Result.RefreshToken
|
api.refreshToken = response.Result.RefreshToken
|
||||||
|
|
||||||
|
@ -8,15 +8,18 @@ import (
|
|||||||
"git.tordarus.net/tordarus/omada-api/model"
|
"git.tordarus.net/tordarus/omada-api/model"
|
||||||
)
|
)
|
||||||
|
|
||||||
func (api *Api) GetClients(siteID model.SiteID) <-chan *model.Client {
|
func (api *Api) GetClients(siteID model.SiteID) (<-chan *model.Client, <-chan error) {
|
||||||
out := make(chan *model.Client, 1000)
|
out := make(chan *model.Client, 1000)
|
||||||
|
errChan := make(chan error)
|
||||||
|
|
||||||
go func() {
|
go func() {
|
||||||
defer close(out)
|
defer close(out)
|
||||||
|
defer close(errChan)
|
||||||
|
|
||||||
for page := 1; ; page++ {
|
for page := 1; ; page++ {
|
||||||
resp, err := api.getClients(page, siteID)
|
resp, err := api.getClients(page, siteID)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
errChan <- err
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -30,7 +33,7 @@ func (api *Api) GetClients(siteID model.SiteID) <-chan *model.Client {
|
|||||||
}
|
}
|
||||||
}()
|
}()
|
||||||
|
|
||||||
return out
|
return out, errChan
|
||||||
}
|
}
|
||||||
|
|
||||||
func (api *Api) getClients(page int, siteID model.SiteID) (*model.PagedResponse[model.Client], error) {
|
func (api *Api) getClients(page int, siteID model.SiteID) (*model.PagedResponse[model.Client], error) {
|
||||||
@ -53,7 +56,7 @@ func (api *Api) getClients(page int, siteID model.SiteID) (*model.PagedResponse[
|
|||||||
}
|
}
|
||||||
defer resp.Body.Close()
|
defer resp.Body.Close()
|
||||||
|
|
||||||
response, err := ezhttp.ParseJsonResponse[model.PagedResponse[model.Client]](resp.Body)
|
response, err := ezhttp.ParseJsonResponse[model.PagedResponse[model.Client]](resp)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
@ -8,15 +8,18 @@ import (
|
|||||||
"git.tordarus.net/tordarus/omada-api/model"
|
"git.tordarus.net/tordarus/omada-api/model"
|
||||||
)
|
)
|
||||||
|
|
||||||
func (api *Api) GetDevices(siteID model.SiteID) <-chan *model.Device {
|
func (api *Api) GetDevices(siteID model.SiteID) (<-chan *model.Device, <-chan error) {
|
||||||
out := make(chan *model.Device, 1000)
|
out := make(chan *model.Device, 1000)
|
||||||
|
errChan := make(chan error)
|
||||||
|
|
||||||
go func() {
|
go func() {
|
||||||
defer close(out)
|
defer close(out)
|
||||||
|
defer close(errChan)
|
||||||
|
|
||||||
for page := 1; ; page++ {
|
for page := 1; ; page++ {
|
||||||
resp, err := api.getDevices(page, siteID)
|
resp, err := api.getDevices(page, siteID)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
errChan <- err
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -30,7 +33,7 @@ func (api *Api) GetDevices(siteID model.SiteID) <-chan *model.Device {
|
|||||||
}
|
}
|
||||||
}()
|
}()
|
||||||
|
|
||||||
return out
|
return out, errChan
|
||||||
}
|
}
|
||||||
|
|
||||||
func (api *Api) getDevices(page int, siteID model.SiteID) (*model.PagedResponse[model.Device], error) {
|
func (api *Api) getDevices(page int, siteID model.SiteID) (*model.PagedResponse[model.Device], error) {
|
||||||
@ -53,7 +56,7 @@ func (api *Api) getDevices(page int, siteID model.SiteID) (*model.PagedResponse[
|
|||||||
}
|
}
|
||||||
defer resp.Body.Close()
|
defer resp.Body.Close()
|
||||||
|
|
||||||
response, err := ezhttp.ParseJsonResponse[model.PagedResponse[model.Device]](resp.Body)
|
response, err := ezhttp.ParseJsonResponse[model.PagedResponse[model.Device]](resp)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
2
go.mod
2
go.mod
@ -2,4 +2,4 @@ module git.tordarus.net/tordarus/omada-api
|
|||||||
|
|
||||||
go 1.23.0
|
go 1.23.0
|
||||||
|
|
||||||
require git.tordarus.net/tordarus/ezhttp v0.0.3
|
require git.tordarus.net/tordarus/ezhttp v0.0.5
|
||||||
|
4
go.sum
4
go.sum
@ -1,2 +1,2 @@
|
|||||||
git.tordarus.net/tordarus/ezhttp v0.0.3 h1:K6IlLmqkAFUF68HJsOTKcP3ejco7qfm+MuEagohoouo=
|
git.tordarus.net/tordarus/ezhttp v0.0.5 h1:pxfEdfDeOHT/ATXYy5OQHmeBIho121SBuFvU4ISQ7w0=
|
||||||
git.tordarus.net/tordarus/ezhttp v0.0.3/go.mod h1:Zq9o0Hibny61GqSCwJHa0PfGjVoUFv/zt2PjiQHXvmY=
|
git.tordarus.net/tordarus/ezhttp v0.0.5/go.mod h1:Zq9o0Hibny61GqSCwJHa0PfGjVoUFv/zt2PjiQHXvmY=
|
||||||
|
9
site.go
9
site.go
@ -8,15 +8,18 @@ import (
|
|||||||
"git.tordarus.net/tordarus/omada-api/model"
|
"git.tordarus.net/tordarus/omada-api/model"
|
||||||
)
|
)
|
||||||
|
|
||||||
func (api *Api) GetSites() <-chan *model.Site {
|
func (api *Api) GetSites() (<-chan *model.Site, <-chan error) {
|
||||||
out := make(chan *model.Site, 1000)
|
out := make(chan *model.Site, 1000)
|
||||||
|
errChan := make(chan error)
|
||||||
|
|
||||||
go func() {
|
go func() {
|
||||||
defer close(out)
|
defer close(out)
|
||||||
|
defer close(errChan)
|
||||||
|
|
||||||
for page := 1; ; page++ {
|
for page := 1; ; page++ {
|
||||||
resp, err := api.getSites(page)
|
resp, err := api.getSites(page)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
errChan <- err
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -30,7 +33,7 @@ func (api *Api) GetSites() <-chan *model.Site {
|
|||||||
}
|
}
|
||||||
}()
|
}()
|
||||||
|
|
||||||
return out
|
return out, errChan
|
||||||
}
|
}
|
||||||
|
|
||||||
func (api *Api) getSites(page int) (*model.PagedResponse[model.Site], error) {
|
func (api *Api) getSites(page int) (*model.PagedResponse[model.Site], error) {
|
||||||
@ -53,7 +56,7 @@ func (api *Api) getSites(page int) (*model.PagedResponse[model.Site], error) {
|
|||||||
}
|
}
|
||||||
defer resp.Body.Close()
|
defer resp.Body.Close()
|
||||||
|
|
||||||
response, err := ezhttp.ParseJsonResponse[model.PagedResponse[model.Site]](resp.Body)
|
response, err := ezhttp.ParseJsonResponse[model.PagedResponse[model.Site]](resp)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user