Documentation
¶
Index ¶
- type AdminRoutes
- type AppCommitResp
- type ApplicationMeta
- type ApplicationRoutes
- type AppspaceBackupRoutes
- type AppspaceLoginRoutes
- type AppspaceMeta
- type AppspaceRestoreRoutes
- type AppspaceRoutes
- type AppspaceUserRoutes
- type AuthRoutes
- type BackupFile
- type ContactResp
- type ContactRoutes
- type CreateContactPostReq
- type DomainNameRoutes
- type DropIDRoutes
- type FilesUploadResp
- type GetAppsResp
- type InProcessResp
- type MigrationJobRoutes
- type NewAppResp
- type PatchPasswordReq
- type PostAppspacePauseReq
- type PostAppspaceReq
- type PostAppspaceResp
- type PostAppspaceUser
- type PostAppspaceVersionReq
- type PostInvitation
- type RemoteAppspaceMeta
- type RemoteAppspacePost
- type RemoteAppspacePostRet
- type RemoteAppspaceRoutes
- type RestoreData
- type RestoreError
- type SelectBackup
- type SettingsResp
- type UserData
- type UserRoutes
- type VersionMeta
- type Versions
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type AdminRoutes ¶
type AdminRoutes struct {
UserModel interface {
GetAll() ([]domain.User, error)
IsAdmin(userID domain.UserID) bool
GetAllAdmins() ([]domain.UserID, error)
} `checkinject:"required"`
SettingsModel interface {
Get() (domain.Settings, error)
Set(domain.Settings) error
} `checkinject:"required"`
UserInvitationModel interface {
GetAll() ([]domain.UserInvitation, error)
Get(email string) (domain.UserInvitation, error)
Create(email string) error
Delete(email string) error
} `checkinject:"required"`
}
AdminRoutes handles routes for applications uploading, creating, deleting.
type AppCommitResp ¶
type ApplicationMeta ¶
type ApplicationMeta struct {
AppID int `json:"app_id"`
AppName string `json:"name"`
Created time.Time `json:"created_dt"`
Versions []VersionMeta `json:"versions"`
}
ApplicationMeta is an application's metadata
type ApplicationRoutes ¶
type ApplicationRoutes struct {
AppGetter interface {
FromRaw(userID domain.UserID, fileData *map[string][]byte, appIDs ...domain.AppID) (domain.AppGetKey, error)
GetUser(key domain.AppGetKey) (domain.UserID, bool)
GetLocationKey(key domain.AppGetKey) (string, bool)
GetLastEvent(key domain.AppGetKey) (domain.AppGetEvent, bool)
GetResults(domain.AppGetKey) (domain.AppGetMeta, bool)
Commit(domain.AppGetKey) (domain.AppID, domain.Version, error)
Delete(domain.AppGetKey)
} `checkinject:"required"`
DeleteApp interface {
Delete(appID domain.AppID) error
DeleteVersion(appID domain.AppID, version domain.Version) error
} `checkinject:"required"`
AppModel interface {
GetFromID(domain.AppID) (*domain.App, error)
GetForOwner(domain.UserID) ([]*domain.App, error)
GetVersion(domain.AppID, domain.Version) (*domain.AppVersion, error)
GetVersionsForApp(domain.AppID) ([]*domain.AppVersion, error)
} `checkinject:"required"`
AppLogger interface {
Get(locationKey string) domain.LoggerI
} `checkinject:"required"`
}
ApplicationRoutes handles routes for applications uploading, creating, deleting.
type AppspaceBackupRoutes ¶
type AppspaceBackupRoutes struct {
Config *domain.RuntimeConfig `checkinject:"required"`
AppspaceFilesModel interface {
GetBackups(locationKey string) ([]string, error)
DeleteBackup(locationKey string, filename string) error
} `checkinject:"required"`
BackupAppspace interface {
CreateBackup(appspaceID domain.AppspaceID) (string, error)
} `checkinject:"required"`
}
type AppspaceLoginRoutes ¶
type AppspaceLoginRoutes struct {
Config *domain.RuntimeConfig `checkinject:"required"`
AppspaceModel interface {
GetFromDomain(dom string) (*domain.Appspace, error)
} `checkinject:"required"`
RemoteAppspaceModel interface {
Get(userID domain.UserID, domainName string) (domain.RemoteAppspace, error)
} `checkinject:"required"`
DS2DS interface {
GetRemoteAPIVersion(domainName string) (int, error)
} `checkinject:"required"`
V0RequestToken interface {
RequestToken(ctx context.Context, userID domain.UserID, appspaceDomain string, sessionID string) (string, error)
} `checkinject:"required"`
V0TokenManager interface {
GetForOwner(appspaceID domain.AppspaceID, dropID string) (string, error)
} `checkinject:"required"`
}
AppspaceLoginRoutes handle
type AppspaceMeta ¶
type AppspaceMeta struct {
AppspaceID int `json:"appspace_id"`
AppID int `json:"app_id"`
AppVersion domain.Version `json:"app_version"`
DomainName string `json:"domain_name"`
NoTLS bool `json:"no_tls"`
PortString string `json:"port_string"`
DropID string `json:"dropid"`
Created time.Time `json:"created_dt"`
Paused bool `json:"paused"`
Upgrade *VersionMeta `json:"upgrade,omitempty"`
}
AppspaceMeta is
type AppspaceRestoreRoutes ¶
type AppspaceRestoreRoutes struct {
RestoreAppspace interface {
Prepare(reader io.Reader) (string, error)
PrepareBackup(appspaceID domain.AppspaceID, backupFile string) (string, error)
CheckAppspaceDataValid(tok string) error
GetMetaInfo(tok string) (domain.AppspaceMetaInfo, error)
ReplaceData(tok string, appspaceID domain.AppspaceID) error
} `checkinject:"required"`
}
type AppspaceRoutes ¶
type AppspaceRoutes struct {
Config domain.RuntimeConfig `checkinject:"required"`
AppspaceUserRoutes subRoutes `checkinject:"required"`
AppspaceExportRoutes subRoutes `checkinject:"required"`
AppspaceRestoreRoutes subRoutes `checkinject:"required"`
AppModel interface {
GetFromID(domain.AppID) (*domain.App, error)
GetVersion(domain.AppID, domain.Version) (*domain.AppVersion, error)
} `checkinject:"required"`
AppspaceFilesModel interface {
CreateLocation() (string, error)
} `checkinject:"required"`
AppspaceModel interface {
GetForOwner(domain.UserID) ([]*domain.Appspace, error)
GetFromID(domain.AppspaceID) (*domain.Appspace, error)
GetForApp(appID domain.AppID) ([]*domain.Appspace, error)
Create(domain.Appspace) (*domain.Appspace, error)
GetFromDomain(string) (*domain.Appspace, error)
} `checkinject:"required"`
PauseAppspace interface {
Pause(appspaceID domain.AppspaceID, pause bool) error
} `checkinject:"required"`
DeleteAppspace interface {
Delete(domain.Appspace) error
} `checkinject:"required"`
AppspaceLogger interface {
Open(appspaceID domain.AppspaceID) domain.LoggerI
} `checkinject:"required"`
SandboxRunsModel interface {
AppsaceSums(ownerID domain.UserID, appspaceID domain.AppspaceID, from time.Time, to time.Time) (domain.SandboxRunData, error)
} `checkinject:"required"`
AppspaceUsersModelV0 interface {
Create(appspaceID domain.AppspaceID, authType string, authID string) (domain.ProxyID, error)
} `checkinject:"required"`
DomainController interface {
CheckAppspaceDomain(userID domain.UserID, dom string, subdomain string) (domain.DomainCheckResult, error)
} `checkinject:"required"`
DropIDModel interface {
Get(handle string, dom string) (domain.DropID, error)
} `checkinject:"required"`
MigrationMinder interface {
GetForAppspace(domain.Appspace) (domain.AppVersion, bool, error)
} `checkinject:"required"`
AppspaceMetaDB interface {
Create(domain.AppspaceID, int) error
} `checkinject:"required"`
MigrationJobModel interface {
Create(domain.UserID, domain.AppspaceID, domain.Version, bool) (*domain.MigrationJob, error)
} `checkinject:"required"`
MigrationJobController interface {
WakeUp()
} `checkinject:"required"`
}
AppspaceRoutes handles routes for appspace uploading, creating, deleting.
type AppspaceUserRoutes ¶
type AppspaceUserRoutes struct {
AppspaceUsersModelV0 interface {
Get(appspaceID domain.AppspaceID, proxyID domain.ProxyID) (domain.AppspaceUser, error)
GetAll(appspaceID domain.AppspaceID) ([]domain.AppspaceUser, error)
Create(appspaceID domain.AppspaceID, authType string, authID string) (domain.ProxyID, error)
UpdateAuth(appspaceID domain.AppspaceID, proxyID domain.ProxyID, authType string, authID string) error
UpdateMeta(appspaceID domain.AppspaceID, proxyID domain.ProxyID, displayName string, avatar string, permissions []string) error
Delete(appspaceID domain.AppspaceID, proxyID domain.ProxyID) error
} `checkinject:"required"`
Avatars interface {
Save(locationKey string, proxyID domain.ProxyID, img io.Reader) (string, error)
Remove(locationKey string, fn string) error
} `checkinject:"required"`
Config *domain.RuntimeConfig `checkinject:"required"`
}
AppspaceUserRoutes handles routes for getting and mainpulating appspace users
type AuthRoutes ¶
type AuthRoutes struct {
Views interface {
Login(http.ResponseWriter, domain.LoginViewData)
Signup(http.ResponseWriter, domain.SignupViewData)
} `checkinject:"required"`
SettingsModel interface {
Get() (domain.Settings, error)
} `checkinject:"required"`
UserModel interface {
Create(email, password string) (domain.User, error)
GetFromEmailPassword(email, password string) (domain.User, error)
} `checkinject:"required"`
UserInvitationModel interface {
Get(email string) (domain.UserInvitation, error)
} `checkinject:"required"`
Authenticator interface {
SetForAccount(http.ResponseWriter, domain.UserID) error
Unset(http.ResponseWriter, *http.Request)
} `checkinject:"required"`
}
AuthRoutes handles all routes related to authentication
type BackupFile ¶
type BackupFile struct {
Filename string `json:"filename"`
}
type ContactResp ¶
type ContactResp struct {
UserID domain.UserID `json:"user_id"`
ContactID domain.ContactID `json:"contact_id"`
Name string `json:"name"`
DisplayName string `json:"display_name"`
Created time.Time `json:"created_dt"`
}
ContactResp is the contact data sent to client as json
type ContactRoutes ¶
type ContactRoutes struct {
ContactModel interface {
Create(userID domain.UserID, name string, displayName string) (domain.Contact, error)
Update(userID domain.UserID, contactID domain.ContactID, name string, displayName string) error
Delete(userID domain.UserID, contactID domain.ContactID) error
Get(contactID domain.ContactID) (domain.Contact, error)
GetForUser(userID domain.UserID) ([]domain.Contact, error)
} `checkinject:"required"`
}
ContactRoutes serves routes related to user's contacts
type CreateContactPostReq ¶
type CreateContactPostReq struct {
Name string `json:"name" validate:"nonzero,max=100"`
DisplayName string `json:"display_name" validate:"nonzero,max=100"`
}
CreateContactPostReq is incoming json for creating a contact
type DomainNameRoutes ¶
type DomainNameRoutes struct {
DomainController interface {
GetDomains(userID domain.UserID) ([]domain.DomainData, error)
CheckAppspaceDomain(userID domain.UserID, dom string, subdomain string) (domain.DomainCheckResult, error)
} `checkinject:"required"`
}
DomainNameRoutes is currently just functional enough to support creating drop ids Ultimately adding domains and setting what they're for is a whole thing that will take place here.
type DropIDRoutes ¶
type DropIDRoutes struct {
DomainController interface {
GetDropIDDomains(userID domain.UserID) ([]domain.DomainData, error)
} `checkinject:"required"`
DropIDModel interface {
Create(userID domain.UserID, handle string, dom string, displayName string) (domain.DropID, error)
Update(userID domain.UserID, handle string, dom string, displayName string) (domain.DropID, error)
Get(handle string, dom string) (domain.DropID, error)
GetForUser(userID domain.UserID) ([]domain.DropID, error)
} `checkinject:"required"`
}
type FilesUploadResp ¶
type InProcessResp ¶
type InProcessResp struct {
LastEvent domain.AppGetEvent `json:"last_event"`
Meta domain.AppGetMeta `json:"meta"`
}
type MigrationJobRoutes ¶
type MigrationJobRoutes struct {
AppModel interface {
GetVersion(domain.AppID, domain.Version) (*domain.AppVersion, error)
} `checkinject:"required"`
AppspaceModel interface {
GetFromID(domain.AppspaceID) (*domain.Appspace, error)
} `checkinject:"required"`
MigrationJobModel interface {
Create(ownerID domain.UserID, appspaceID domain.AppspaceID, toVersion domain.Version, priority bool) (*domain.MigrationJob, error)
GetJob(jobID domain.JobID) (*domain.MigrationJob, error)
GetForAppspace(appspaceID domain.AppspaceID) ([]*domain.MigrationJob, error)
} `checkinject:"required"`
MigrationJobController interface {
WakeUp()
} `checkinject:"required"`
}
MigrationJobRoutes can initiate and return appspace migration jobs
type NewAppResp ¶
type NewAppResp struct {
App domain.App `json:"app"`
Version domain.AppVersion `json:"app_version"`
}
NewAppResp returns the new app and nversion metadata
type PatchPasswordReq ¶
PatchPasswordReq is
type PostAppspacePauseReq ¶
type PostAppspacePauseReq struct {
Pause bool `json:"pause"`
}
PostAppspacePauseReq is
type PostAppspaceReq ¶
type PostAppspaceReq struct {
AppID domain.AppID `json:"app_id"`
Version domain.Version `json:"app_version"`
DomainName string `json:"domain_name"`
Subdomain string `json:"subdomain"`
DropID string `json:"dropid"`
}
PostAppspaceReq is sent when creating a new appspace
type PostAppspaceResp ¶
type PostAppspaceResp struct {
AppspaceID domain.AppspaceID `json:"appspace_id"`
}
PostAppspaceResp is the return data after creating a new appspace
type PostAppspaceUser ¶
type PostAppspaceVersionReq ¶
type PostAppspaceVersionReq struct {
AppspaceID domain.AppspaceID `json:"appspace_id"`
Version domain.Version `json:"to_version"` // could include app_id to future proof and to verify apples-apples
}
PostAppspaceVersionReq is Later include the date time for scheduling the job
type PostInvitation ¶
type PostInvitation struct {
Email string `json:"email"`
}
PostInvitation is for incoming post requests to create invitation
type RemoteAppspaceMeta ¶
type RemoteAppspacePost ¶
type RemoteAppspacePostRet ¶
type RemoteAppspaceRoutes ¶
type RemoteAppspaceRoutes struct {
Config domain.RuntimeConfig `checkinject:"required"`
RemoteAppspaceModel interface {
Get(userID domain.UserID, domainName string) (domain.RemoteAppspace, error)
GetForUser(userID domain.UserID) ([]domain.RemoteAppspace, error)
Create(userID domain.UserID, domainName string, ownerDropID string, dropID string) error
Delete(userID domain.UserID, domainName string) error
} `checkinject:"required"`
AppspaceModel interface {
GetForOwner(domain.UserID) ([]*domain.Appspace, error)
} `checkinject:"required"`
DropIDModel interface {
Get(handle string, dom string) (domain.DropID, error)
} `checkinject:"required"`
}
type RestoreData ¶
type RestoreData struct {
Token string `json:"token"`
Error *RestoreError `json:"err"`
Schema int `json:"schema"`
}
RestoreData is the response to the selection / upload of an appspace archive
type RestoreError ¶
type RestoreError struct {
// MissingFiles is top-level files missing from the zip file we are attempting to restore
MissingFiles []string `json:"missing_files"`
// ZipFiles is the set of files in the top level of the zip
// provided for convenience to the user so they may find their mistake
ZipFiles []string `json:"zip_files"`
}
type SelectBackup ¶
type SelectBackup struct {
BackupFilename string `json:"backup_file"`
}
type SettingsResp ¶
type SettingsResp struct {
RegistrationOpen bool `json:"registration_open"`
}
SettingsResp represents admin settings
type UserData ¶
type UserData struct {
Email string `json:"email"`
UserID int `json:"user_id"`
IsAdmin bool `json:"is_admin"`
}
UserData is single user
type UserRoutes ¶
type UserRoutes struct {
Config *domain.RuntimeConfig `checkinject:"required"`
Authenticator interface {
AccountUser(http.Handler) http.Handler
} `checkinject:"required"`
Views interface {
GetStaticFS() fs.FS
} `checkinject:"required"`
AuthRoutes routeGroup `checkinject:"required"`
AppspaceLoginRoutes routeGroup `checkinject:"required"`
ApplicationRoutes subRoutes `checkinject:"required"`
AppspaceRoutes subRoutes `checkinject:"required"`
RemoteAppspaceRoutes subRoutes `checkinject:"required"`
ContactRoutes subRoutes `checkinject:"required"`
DomainRoutes subRoutes `checkinject:"required"`
DropIDRoutes subRoutes `checkinject:"required"`
MigrationJobRoutes subRoutes `checkinject:"required"`
AdminRoutes subRoutes `checkinject:"required"`
AppspaceStatusTwine domain.TwineService `checkinject:"required"`
MigrationJobTwine domain.TwineService2 `checkinject:"required"`
AppGetterTwine domain.TwineService `checkinject:"required"`
UserModel interface {
GetFromID(userID domain.UserID) (domain.User, error)
UpdatePassword(userID domain.UserID, password string) error
GetFromEmailPassword(email, password string) (domain.User, error)
IsAdmin(userID domain.UserID) bool
} `checkinject:"required"`
// contains filtered or unexported fields
}
UserRoutes handles routes for appspaces.
func (*UserRoutes) DumpRoutes ¶
func (u *UserRoutes) DumpRoutes(dumpRoutes string)
func (*UserRoutes) Init ¶
func (u *UserRoutes) Init()
func (*UserRoutes) ServeHTTP ¶
func (u *UserRoutes) ServeHTTP(res http.ResponseWriter, req *http.Request)
ServeHTTP handles http traffic to the user routes
type VersionMeta ¶
type VersionMeta struct {
AppID domain.AppID `json:"app_id"`
AppName string `json:"app_name"`
Version domain.Version `json:"version"`
APIVersion domain.APIVersion `json:"api_version"`
Schema int `json:"schema"`
Created time.Time `json:"created_dt"`
}
VersionMeta is for listing versions of application code
type Versions ¶
type Versions struct {
AppVersions []VersionMeta `json:"app_versions"`
}
Versions should be embedded in application meta?