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 { 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"` AppspaceLocation2Path interface { Backup(string, string) string } `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"` AppspaceModel interface { GetForOwner(domain.UserID) ([]*domain.Appspace, error) GetFromID(domain.AppspaceID) (*domain.Appspace, error) GetForApp(appID domain.AppID) ([]*domain.Appspace, error) } `checkinject:"required"` CreateAppspace interface { Create(domain.DropID, domain.AppVersion, string, string) (domain.AppspaceID, 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"` 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"` }
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"` AppspaceLocation2Path interface { Avatar(string, string) string } `checkinject:"required"` }
AppspaceUserRoutes handles routes for getting and mainpulating appspace users
type AuthRoutes ¶
type AuthRoutes struct { SetupKey interface { Has() (bool, error) Get() (string, error) Delete() error } `checkinject:"required"` 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) MakeAdmin(userID domain.UserID) 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?