v16.2.0
This commit is contained in:
79
pkg/cloudbroker/session/list.go
Normal file
79
pkg/cloudbroker/session/list.go
Normal file
@@ -0,0 +1,79 @@
|
||||
package session
|
||||
|
||||
import (
|
||||
"context"
|
||||
"encoding/json"
|
||||
"net/http"
|
||||
|
||||
"repository.basistech.ru/BASIS/dynamix-golang-sdk/v16/internal/validators"
|
||||
)
|
||||
|
||||
type ListRequest struct {
|
||||
// Filter by username
|
||||
User string `url:"user,omitempty" json:"user,omitempty"`
|
||||
|
||||
// Filter by authorization system (bvs, decs3o, password)
|
||||
AuthorizeSystem string `url:"authorize_system,omitempty" json:"authorize_system,omitempty"`
|
||||
|
||||
// Filter by public session ID (UUID)
|
||||
PublicSessionID string `url:"public_session_id,omitempty" json:"public_session_id,omitempty"`
|
||||
|
||||
// Filter by sub from JWT
|
||||
Sub string `url:"sub,omitempty" json:"sub,omitempty"`
|
||||
|
||||
// Filter by sid from JWT
|
||||
SID uint64 `url:"sid,omitempty" json:"sid,omitempty"`
|
||||
|
||||
// Filter sessions with login_time >= timestamp (Unix timestamp)
|
||||
TimestampAt uint64 `url:"timestamp_at,omitempty" json:"timestamp_at,omitempty"`
|
||||
|
||||
// Filter sessions with login_time <= timestamp (Unix timestamp)
|
||||
TimestampTo uint64 `url:"timestamp_to,omitempty" json:"timestamp_to,omitempty"`
|
||||
|
||||
// Filter sessions active at this timestamp (login_time <= T < logout_time/expires_at)
|
||||
ActiveAt uint64 `url:"active_at,omitempty" json:"active_at,omitempty"`
|
||||
|
||||
// Page size
|
||||
// Required: false
|
||||
Size uint64 `url:"size,omitempty" json:"size,omitempty"`
|
||||
|
||||
// Page number
|
||||
// Required: false
|
||||
Page uint64 `url:"page,omitempty" json:"page,omitempty"`
|
||||
|
||||
// Sort by one of supported fields, format +|-(field)
|
||||
// Required: false
|
||||
SortBy string `url:"sortBy,omitempty" json:"sortBy,omitempty"`
|
||||
}
|
||||
|
||||
// List gets list of sessions as a ListSession struct
|
||||
func (s Session) List(ctx context.Context, req ListRequest) (*ListSession, error) {
|
||||
|
||||
res, err := s.ListRaw(ctx, req)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
list := ListSession{}
|
||||
|
||||
err = json.Unmarshal(res, &list)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return &list, nil
|
||||
}
|
||||
|
||||
// ListRaw gets list of sessions as an array of bytes
|
||||
func (s Session) ListRaw(ctx context.Context, req ListRequest) ([]byte, error) {
|
||||
|
||||
err := validators.ValidateRequest(req)
|
||||
if err != nil {
|
||||
return nil, validators.ValidationErrors(validators.GetErrors(err))
|
||||
}
|
||||
|
||||
url := "/cloudbroker/session/list"
|
||||
|
||||
res, err := s.client.DecortApiCall(ctx, http.MethodGet, url, req)
|
||||
return res, err
|
||||
}
|
||||
Reference in New Issue
Block a user