mirror of
https://github.com/wahyd4/loginsrv.git
synced 2026-08-09 04:46:29 +10:00
47 lines
1.7 KiB
Go
47 lines
1.7 KiB
Go
package osiam
|
|
|
|
import (
|
|
"fmt"
|
|
"strconv"
|
|
"time"
|
|
)
|
|
|
|
// Token represents an osiam auth token
|
|
type Token struct {
|
|
TokenType string `json:"token_type"` // example "bearer"
|
|
AccessToken string `json:"access_token"` // example "79f479c2-c0d7-458a-8464-7eb887dbc943"
|
|
RefreshToken string `json:"refresh_token"` // example "3c7c4a87-dc91-4dd0-8ec8-d229a237a47c"
|
|
ClientID string `json:"client_id"` // example "example-client"
|
|
UserName string `json:"user_name"` // example "admin"
|
|
Userid string `json:"user_id"` // example "84f6cffa-4505-48ec-a851-424160892283"
|
|
Scope string `json:"scope"` // example "ME"
|
|
RefreshTokenExpiresAt Timestamp `json:"refresh_token_expires_at"` // example 1479309001813
|
|
ExpiresAt Timestamp `json:"expires_at"` // example 1479251401814
|
|
ExpiresIn int `json:"expires_in"` // example 28795
|
|
}
|
|
|
|
// Timestamp is a helper class for json handling ht the timestamp
|
|
type Timestamp struct {
|
|
T time.Time
|
|
}
|
|
|
|
// UnmarshalJSON does the unmarshaling
|
|
func (timestamp *Timestamp) UnmarshalJSON(b []byte) (err error) {
|
|
i, err := strconv.ParseInt(string(b), 10, 64)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
timestamp.T = time.Unix(i, 0)
|
|
return nil
|
|
}
|
|
|
|
// MarshalJSON does the marshaling
|
|
func (timestamp *Timestamp) MarshalJSON() ([]byte, error) {
|
|
if timestamp.T.UnixNano() == nilTime {
|
|
return []byte("null"), nil
|
|
}
|
|
return []byte(fmt.Sprintf("%d", timestamp.T.Unix())), nil
|
|
}
|
|
|
|
var nilTime = (time.Time{}).UnixNano()
|