DockerCLI/vendor/github.com/docker/licensing/model/users.go

96 lines
2.5 KiB
Go

package model
import (
"fmt"
"time"
"github.com/docker/licensing/lib/errors"
)
// User details a Docker user
type User struct {
ID string `json:"id"`
Username string `json:"username"`
DateJoined time.Time `json:"date_joined"`
// The user type. Is either 'User' or 'Organization'
Type string `json:"type"`
FullName string `json:"full_name,omitempty"`
Location string `json:"location,omitempty"`
Company string `json:"company,omitempty"`
ProfileURL string `json:"profile_url,omitempty"`
GravatarURL string `json:"gravatar_url,omitempty"`
Email string `json:"email"`
Primary bool `json:"primary"`
Verified bool `json:"verified"`
}
// Org details a Docker organization
type Org struct {
ID string `json:"id"`
Orgname string `json:"orgname"`
DateJoined time.Time `json:"date_joined"`
Type string `json:"type"`
FullName string `json:"full_name,omitempty"`
Location string `json:"location,omitempty"`
Company string `json:"company,omitempty"`
ProfileURL string `json:"profile_url,omitempty"`
GravatarURL string `json:"gravatar_url,omitempty"`
}
// PaginationParams is used for specifying pagination in requests to accounts
type PaginationParams struct {
PageSize int
Page int
}
// PaginatedMeta describes fields contained in a paginated response body
type PaginatedMeta struct {
Count int `json:"count"`
PageSize int `json:"page_size,omitempty"`
Next *string `json:"next,omitempty"`
Previous *string `json:"previous,omitempty"`
}
// LoginResult holds the response of the login endpoint
type LoginResult struct {
// JWT associated with the authenticated user
Token string `json:"token"`
}
// LoginRequest holds a hub user's username and password
type LoginRequest struct {
Username string `json:"username"`
Password string `json:"password"`
}
// LoginError wraps both the http error and raw hub login error
type LoginError struct {
*errors.HTTPError
// Raw is the raw error from Accounts service
Raw *RawLoginError
}
var _ error = (*LoginError)(nil)
func (e *LoginError) Error() string {
msg := e.HTTPError.Error()
if e.Raw != nil {
msg = fmt.Sprintf("%s (raw: %+v)", msg, e.Raw)
}
return msg
}
// RawLoginError is the raw format of errors returned from the Accounts service.
type RawLoginError struct {
Detail string `json:"detail,omitempty"`
// These fields wil be populated if it's a validation error
Username []string `json:"username,omitempty"`
Password []string `json:"password,omitempty"`
}