SYMBOL INDEX (914 symbols across 157 files) FILE: api/application.go type ApplicationDatabase (line 19) | type ApplicationDatabase interface type ApplicationAPI (line 29) | type ApplicationAPI struct method CreateApplication (line 92) | func (a *ApplicationAPI) CreateApplication(ctx *gin.Context) { method GetApplications (line 137) | func (a *ApplicationAPI) GetApplications(ctx *gin.Context) { method DeleteApplication (line 184) | func (a *ApplicationAPI) DeleteApplication(ctx *gin.Context) { method UpdateApplication (line 250) | func (a *ApplicationAPI) UpdateApplication(ctx *gin.Context) { method UploadApplicationImage (line 325) | func (a *ApplicationAPI) UploadApplicationImage(ctx *gin.Context) { method RemoveApplicationImage (line 418) | func (a *ApplicationAPI) RemoveApplicationImage(ctx *gin.Context) { method applicationExists (line 453) | func (a *ApplicationAPI) applicationExists(token string) bool { type ApplicationParams (line 39) | type ApplicationParams struct function withResolvedImage (line 443) | func withResolvedImage(app *model.Application) *model.Application { function exist (line 458) | func exist(path string) bool { function generateNonExistingImageName (line 465) | func generateNonExistingImageName(imgDir string, gen func() string) stri... function ValidApplicationImageExt (line 474) | func ValidApplicationImageExt(ext string) bool { function handleApplicationError (line 483) | func handleApplicationError(ctx *gin.Context, err error) { FILE: api/application_test.go function TestApplicationSuite (line 31) | func TestApplicationSuite(t *testing.T) { type ApplicationSuite (line 35) | type ApplicationSuite struct method BeforeTest (line 48) | func (s *ApplicationSuite) BeforeTest(suiteName, testName string) { method AfterTest (line 61) | func (s *ApplicationSuite) AfterTest(suiteName, testName string) { method Test_CreateApplication_mapAllParameters (line 67) | func (s *ApplicationSuite) Test_CreateApplication_mapAllParameters() { method Test_ensureApplicationHasCorrectJsonRepresentation (line 88) | func (s *ApplicationSuite) Test_ensureApplicationHasCorrectJsonReprese... method Test_CreateApplication_expectBadRequestOnEmptyName (line 103) | func (s *ApplicationSuite) Test_CreateApplication_expectBadRequestOnEm... method Test_CreateApplication_ignoresReadOnlyPropertiesInParams (line 116) | func (s *ApplicationSuite) Test_CreateApplication_ignoresReadOnlyPrope... method Test_DeleteApplication_expectNotFoundOnCurrentUserIsNotOwner (line 147) | func (s *ApplicationSuite) Test_DeleteApplication_expectNotFoundOnCurr... method Test_CreateApplication_onlyRequiredParameters (line 161) | func (s *ApplicationSuite) Test_CreateApplication_onlyRequiredParamete... method Test_CreateApplication_returnsApplicationWithID (line 175) | func (s *ApplicationSuite) Test_CreateApplication_returnsApplicationWi... method Test_CreateApplication_withExistingToken (line 195) | func (s *ApplicationSuite) Test_CreateApplication_withExistingToken() { method Test_Sorting (line 211) | func (s *ApplicationSuite) Test_Sorting() { method Test_GetApplications (line 251) | func (s *ApplicationSuite) Test_GetApplications() { method Test_GetApplications_WithImage (line 267) | func (s *ApplicationSuite) Test_GetApplications_WithImage() { method Test_DeleteApplication_internal_expectBadRequest (line 285) | func (s *ApplicationSuite) Test_DeleteApplication_internal_expectBadRe... method Test_DeleteApplication_expectNotFound (line 297) | func (s *ApplicationSuite) Test_DeleteApplication_expectNotFound() { method Test_DeleteApplication (line 309) | func (s *ApplicationSuite) Test_DeleteApplication() { method Test_UploadAppImage_NoImageProvided_expectBadRequest (line 322) | func (s *ApplicationSuite) Test_UploadAppImage_NoImageProvided_expectB... method Test_UploadAppImage_OtherErrors_expectServerError (line 339) | func (s *ApplicationSuite) Test_UploadAppImage_OtherErrors_expectServe... method Test_UploadAppImage_WithImageFile_expectSuccess (line 356) | func (s *ApplicationSuite) Test_UploadAppImage_WithImageFile_expectSuc... method Test_UploadAppImage_WithImageFile_DeleteExstingImageAndGenerateNewName (line 382) | func (s *ApplicationSuite) Test_UploadAppImage_WithImageFile_DeleteExs... method Test_UploadAppImage_WithImageFile_DeleteExistingImage (line 411) | func (s *ApplicationSuite) Test_UploadAppImage_WithImageFile_DeleteExi... method Test_UploadAppImage_WithTextFile_expectBadRequest (line 433) | func (s *ApplicationSuite) Test_UploadAppImage_WithTextFile_expectBadR... method Test_UploadAppImage_WithHtmlFileHavingImageHeader (line 449) | func (s *ApplicationSuite) Test_UploadAppImage_WithHtmlFileHavingImage... method Test_UploadAppImage_expectNotFound (line 465) | func (s *ApplicationSuite) Test_UploadAppImage_expectNotFound() { method Test_RemoveAppImage_expectNotFound (line 477) | func (s *ApplicationSuite) Test_RemoveAppImage_expectNotFound() { method Test_RemoveAppImage_noCustomizedImage (line 489) | func (s *ApplicationSuite) Test_RemoveAppImage_noCustomizedImage() { method Test_RemoveAppImage_expectSuccess (line 500) | func (s *ApplicationSuite) Test_RemoveAppImage_expectSuccess() { method Test_UpdateApplicationNameAndDescription_expectSuccess (line 518) | func (s *ApplicationSuite) Test_UpdateApplicationNameAndDescription_ex... method Test_UpdateApplicationName_expectSuccess (line 541) | func (s *ApplicationSuite) Test_UpdateApplicationName_expectSuccess() { method Test_UpdateApplicationDefaultPriority_expectSuccess (line 564) | func (s *ApplicationSuite) Test_UpdateApplicationDefaultPriority_expec... method Test_UpdateApplication_preservesImageAndSortKey (line 588) | func (s *ApplicationSuite) Test_UpdateApplication_preservesImageAndSor... method Test_UpdateApplication_setEmptyDescription (line 607) | func (s *ApplicationSuite) Test_UpdateApplication_setEmptyDescription() { method Test_UpdateApplication_expectNotFound (line 624) | func (s *ApplicationSuite) Test_UpdateApplication_expectNotFound() { method Test_UpdateApplication_WithMissingAttributes_expectBadRequest (line 632) | func (s *ApplicationSuite) Test_UpdateApplication_WithMissingAttribute... method Test_UpdateApplication_WithoutPermission_expectNotFound (line 639) | func (s *ApplicationSuite) Test_UpdateApplication_WithoutPermission_ex... method Test_UpdateApplication_duplicateSortKey (line 650) | func (s *ApplicationSuite) Test_UpdateApplication_duplicateSortKey() { method withFormData (line 665) | func (s *ApplicationSuite) withFormData(formData string) { method withJSON (line 670) | func (s *ApplicationSuite) withJSON(value interface{}) { function upload (line 677) | func upload(values map[string]*os.File) (contentType string, buffer byte... function mustOpen (line 694) | func mustOpen(f string) *os.File { function fakeImage (line 702) | func fakeImage(t *testing.T, path string) { FILE: api/client.go type ClientDatabase (line 12) | type ClientDatabase interface type ClientAPI (line 22) | type ClientAPI struct method UpdateClient (line 84) | func (a *ClientAPI) UpdateClient(ctx *gin.Context) { method CreateClient (line 139) | func (a *ClientAPI) CreateClient(ctx *gin.Context) { method GetClients (line 179) | func (a *ClientAPI) GetClients(ctx *gin.Context) { method DeleteClient (line 223) | func (a *ClientAPI) DeleteClient(ctx *gin.Context) { method clientExists (line 238) | func (a *ClientAPI) clientExists(token string) bool { type ClientParams (line 33) | type ClientParams struct FILE: api/client_test.go function TestClientSuite (line 23) | func TestClientSuite(t *testing.T) { type ClientSuite (line 27) | type ClientSuite struct method BeforeTest (line 38) | func (s *ClientSuite) BeforeTest(suiteName, testName string) { method notify (line 50) | func (s *ClientSuite) notify(uint, string) { method AfterTest (line 54) | func (s *ClientSuite) AfterTest(suiteName, testName string) { method Test_ensureClientHasCorrectJsonRepresentation (line 59) | func (s *ClientSuite) Test_ensureClientHasCorrectJsonRepresentation() { method Test_CreateClient_mapAllParameters (line 64) | func (s *ClientSuite) Test_CreateClient_mapAllParameters() { method Test_CreateClient_ignoresReadOnlyPropertiesInParams (line 79) | func (s *ClientSuite) Test_CreateClient_ignoresReadOnlyPropertiesInPar... method Test_CreateClient_expectBadRequestOnEmptyName (line 94) | func (s *ClientSuite) Test_CreateClient_expectBadRequestOnEmptyName() { method Test_DeleteClient_expectNotFoundOnCurrentUserIsNotOwner (line 108) | func (s *ClientSuite) Test_DeleteClient_expectNotFoundOnCurrentUserIsN... method Test_CreateClient_returnsClientWithID (line 122) | func (s *ClientSuite) Test_CreateClient_returnsClientWithID() { method Test_CreateClient_withExistingToken (line 135) | func (s *ClientSuite) Test_CreateClient_withExistingToken() { method Test_GetClients (line 148) | func (s *ClientSuite) Test_GetClients() { method Test_DeleteClient_expectNotFound (line 162) | func (s *ClientSuite) Test_DeleteClient_expectNotFound() { method Test_DeleteClient (line 174) | func (s *ClientSuite) Test_DeleteClient() { method Test_UpdateClient_expectSuccess (line 190) | func (s *ClientSuite) Test_UpdateClient_expectSuccess() { method Test_UpdateClient_expectNotFound (line 211) | func (s *ClientSuite) Test_UpdateClient_expectNotFound() { method Test_UpdateClient_WithMissingAttributes_expectBadRequest (line 219) | func (s *ClientSuite) Test_UpdateClient_WithMissingAttributes_expectBa... method withFormData (line 226) | func (s *ClientSuite) withFormData(formData string) { function withURL (line 231) | func withURL(ctx *gin.Context, scheme, host string) { FILE: api/errorHandling.go function successOrAbort (line 5) | func successOrAbort(ctx *gin.Context, code int, err error) (success bool) { FILE: api/errorHandling_test.go function TestErrorHandling (line 11) | func TestErrorHandling(t *testing.T) { FILE: api/health.go type HealthDatabase (line 9) | type HealthDatabase interface type HealthAPI (line 14) | type HealthAPI struct method Health (line 34) | func (a *HealthAPI) Health(ctx *gin.Context) { FILE: api/health_test.go function TestHealthSuite (line 15) | func TestHealthSuite(t *testing.T) { type HealthSuite (line 19) | type HealthSuite struct method BeforeTest (line 27) | func (s *HealthSuite) BeforeTest(suiteName, testName string) { method AfterTest (line 36) | func (s *HealthSuite) AfterTest(suiteName, testName string) { method TestHealthSuccess (line 40) | func (s *HealthSuite) TestHealthSuccess() { method TestDatabaseFailure (line 45) | func (s *HealthSuite) TestDatabaseFailure() { FILE: api/internalutil.go function withID (line 11) | func withID(ctx *gin.Context, name string, f func(id uint)) { FILE: api/message.go type MessageDatabase (line 18) | type MessageDatabase interface type Notifier (line 33) | type Notifier interface type MessageAPI (line 38) | type MessageAPI struct method GetMessages (line 89) | func (a *MessageAPI) GetMessages(ctx *gin.Context) { method GetMessagesWithApplication (line 180) | func (a *MessageAPI) GetMessagesWithApplication(ctx *gin.Context) { method DeleteMessages (line 220) | func (a *MessageAPI) DeleteMessages(ctx *gin.Context) { method DeleteMessageWithApplication (line 259) | func (a *MessageAPI) DeleteMessageWithApplication(ctx *gin.Context) { method DeleteMessage (line 307) | func (a *MessageAPI) DeleteMessage(ctx *gin.Context) { method CreateMessage (line 364) | func (a *MessageAPI) CreateMessage(ctx *gin.Context) { type pagingParams (line 43) | type pagingParams struct function buildWithPaging (line 101) | func buildWithPaging(ctx *gin.Context, paging *pagingParams, messages []... function withPaging (line 122) | func withPaging(ctx *gin.Context, f func(pagingParams *pagingParams)) { function toInternalMessage (line 391) | func toInternalMessage(msg *model.MessageExternal) *model.Message { function toExternalMessage (line 409) | func toExternalMessage(msg *model.Message) *model.MessageExternal { function toExternalMessages (line 425) | func toExternalMessages(msg []*model.Message) []*model.MessageExternal { FILE: api/message_test.go function TestMessageSuite (line 20) | func TestMessageSuite(t *testing.T) { type MessageSuite (line 24) | type MessageSuite struct method BeforeTest (line 33) | func (s *MessageSuite) BeforeTest(suiteName, testName string) { method AfterTest (line 43) | func (s *MessageSuite) AfterTest(string, string) { method Notify (line 47) | func (s *MessageSuite) Notify(userID uint, msg *model.MessageExternal) { method Test_ensureCorrectJsonRepresentation (line 51) | func (s *MessageSuite) Test_ensureCorrectJsonRepresentation() { method Test_GetMessages (line 67) | func (s *MessageSuite) Test_GetMessages() { method Test_GetMessages_WithLimit_ReturnsNext (line 85) | func (s *MessageSuite) Test_GetMessages_WithLimit_ReturnsNext() { method Test_GetMessages_WithLimit_WithSince_ReturnsNext (line 109) | func (s *MessageSuite) Test_GetMessages_WithLimit_WithSince_ReturnsNex... method Test_GetMessages_BadRequestOnInvalidLimit (line 132) | func (s *MessageSuite) Test_GetMessages_BadRequestOnInvalidLimit() { method Test_GetMessages_BadRequestOnInvalidLimit_Negative (line 141) | func (s *MessageSuite) Test_GetMessages_BadRequestOnInvalidLimit_Negat... method Test_GetMessagesWithToken_InvalidLimit_BadRequest (line 150) | func (s *MessageSuite) Test_GetMessagesWithToken_InvalidLimit_BadReque... method Test_GetMessagesWithToken (line 161) | func (s *MessageSuite) Test_GetMessagesWithToken() { method Test_GetMessagesWithToken_WithLimit_ReturnsNext (line 176) | func (s *MessageSuite) Test_GetMessagesWithToken_WithLimit_ReturnsNext... method Test_GetMessagesWithToken_WithLimit_WithSince_ReturnsNext (line 199) | func (s *MessageSuite) Test_GetMessagesWithToken_WithLimit_WithSince_R... method Test_GetMessagesWithToken_withWrongUser_expectNotFound (line 221) | func (s *MessageSuite) Test_GetMessagesWithToken_withWrongUser_expectN... method Test_DeleteMessage_invalidID (line 232) | func (s *MessageSuite) Test_DeleteMessage_invalidID() { method Test_DeleteMessage_notExistingID (line 240) | func (s *MessageSuite) Test_DeleteMessage_notExistingID() { method Test_DeleteMessage_existingIDButNotOwner (line 249) | func (s *MessageSuite) Test_DeleteMessage_existingIDButNotOwner() { method Test_DeleteMessage (line 260) | func (s *MessageSuite) Test_DeleteMessage() { method Test_DeleteMessageWithID (line 271) | func (s *MessageSuite) Test_DeleteMessageWithID() { method Test_DeleteMessageWithToken_notExistingID (line 282) | func (s *MessageSuite) Test_DeleteMessageWithToken_notExistingID() { method Test_DeleteMessageWithToken_notOwner (line 293) | func (s *MessageSuite) Test_DeleteMessageWithToken_notOwner() { method Test_DeleteMessages (line 305) | func (s *MessageSuite) Test_DeleteMessages() { method Test_CreateMessage_onJson_allParams (line 319) | func (s *MessageSuite) Test_CreateMessage_onJson_allParams() { method Test_CreateMessage_WithDefaultPriority (line 341) | func (s *MessageSuite) Test_CreateMessage_WithDefaultPriority() { method Test_CreateMessage_WithTitle (line 363) | func (s *MessageSuite) Test_CreateMessage_WithTitle() { method Test_CreateMessage_failWhenNoMessage (line 384) | func (s *MessageSuite) Test_CreateMessage_failWhenNoMessage() { method Test_CreateMessage_WithoutTitle (line 400) | func (s *MessageSuite) Test_CreateMessage_WithoutTitle() { method Test_CreateMessage_WithBlankTitle (line 417) | func (s *MessageSuite) Test_CreateMessage_WithBlankTitle() { method Test_CreateMessage_IgnoreID (line 434) | func (s *MessageSuite) Test_CreateMessage_IgnoreID() { method Test_CreateMessage_WithExtras (line 450) | func (s *MessageSuite) Test_CreateMessage_WithExtras() { method Test_CreateMessage_failWhenPriorityNotNumber (line 489) | func (s *MessageSuite) Test_CreateMessage_failWhenPriorityNotNumber() { method Test_CreateMessage_onQueryData (line 505) | func (s *MessageSuite) Test_CreateMessage_onQueryData() { method Test_CreateMessage_onFormData (line 528) | func (s *MessageSuite) Test_CreateMessage_onFormData() { method withURL (line 550) | func (s *MessageSuite) withURL(scheme, host, path, query string) { function intPtr (line 555) | func intPtr(x int) *int { FILE: api/plugin.go type PluginDatabase (line 18) | type PluginDatabase interface type PluginAPI (line 25) | type PluginAPI struct method GetPlugins (line 63) | func (c *PluginAPI) GetPlugins(ctx *gin.Context) { method EnablePlugin (line 124) | func (c *PluginAPI) EnablePlugin(ctx *gin.Context) { method DisablePlugin (line 182) | func (c *PluginAPI) DisablePlugin(ctx *gin.Context) { method GetDisplay (line 242) | func (c *PluginAPI) GetDisplay(ctx *gin.Context) { method GetConfig (line 303) | func (c *PluginAPI) GetConfig(ctx *gin.Context) { method UpdateConfig (line 367) | func (c *PluginAPI) UpdateConfig(ctx *gin.Context) { function isPluginOwner (line 406) | func isPluginOwner(ctx *gin.Context, conf *model.PluginConf) bool { function supportOrAbort (line 410) | func supportOrAbort(ctx *gin.Context, instance compat.PluginInstance, mo... FILE: api/plugin_test.go function TestPluginSuite (line 24) | func TestPluginSuite(t *testing.T) { type PluginSuite (line 28) | type PluginSuite struct method BeforeTest (line 38) | func (s *PluginSuite) BeforeTest(suiteName, testName string) { method getDanglingConf (line 64) | func (s *PluginSuite) getDanglingConf(uid uint) *model.PluginConf { method resetRecorder (line 70) | func (s *PluginSuite) resetRecorder() { method AfterTest (line 75) | func (s *PluginSuite) AfterTest(suiteName, testName string) { method Notify (line 79) | func (s *PluginSuite) Notify(userID uint, msg *model.MessageExternal) { method Test_GetPlugins (line 83) | func (s *PluginSuite) Test_GetPlugins() { method Test_EnableDisablePlugin (line 100) | func (s *PluginSuite) Test_EnableDisablePlugin() { method Test_EnableDisablePlugin_EnableReturnsError_expect500 (line 162) | func (s *PluginSuite) Test_EnableDisablePlugin_EnableReturnsError_expe... method Test_EnableDisablePlugin_DisableReturnsError_expect500 (line 184) | func (s *PluginSuite) Test_EnableDisablePlugin_DisableReturnsError_exp... method Test_EnableDisablePlugin_incorrectUser_expectNotFound (line 207) | func (s *PluginSuite) Test_EnableDisablePlugin_incorrectUser_expectNot... method Test_EnableDisablePlugin_nonExistPlugin_expectNotFound (line 239) | func (s *PluginSuite) Test_EnableDisablePlugin_nonExistPlugin_expectNo... method Test_EnableDisablePlugin_danglingConf_expectNotFound (line 263) | func (s *PluginSuite) Test_EnableDisablePlugin_danglingConf_expectNotF... method Test_GetDisplay (line 289) | func (s *PluginSuite) Test_GetDisplay() { method Test_GetDisplay_NotImplemented_expectEmptyString (line 310) | func (s *PluginSuite) Test_GetDisplay_NotImplemented_expectEmptyString... method Test_GetDisplay_incorrectUser_expectNotFound (line 332) | func (s *PluginSuite) Test_GetDisplay_incorrectUser_expectNotFound() { method Test_GetDisplay_danglingConf_expectNotFound (line 352) | func (s *PluginSuite) Test_GetDisplay_danglingConf_expectNotFound() { method Test_GetDisplay_nonExistPlugin_expectNotFound (line 366) | func (s *PluginSuite) Test_GetDisplay_nonExistPlugin_expectNotFound() { method Test_GetConfig (line 378) | func (s *PluginSuite) Test_GetConfig() { method Test_GetConfg_notImplemeted_expect400 (line 400) | func (s *PluginSuite) Test_GetConfg_notImplemeted_expect400() { method Test_GetConfig_incorrectUser_expectNotFound (line 421) | func (s *PluginSuite) Test_GetConfig_incorrectUser_expectNotFound() { method Test_GetConfig_danglingConf_expectNotFound (line 436) | func (s *PluginSuite) Test_GetConfig_danglingConf_expectNotFound() { method Test_GetConfig_nonExistPlugin_expectNotFound (line 450) | func (s *PluginSuite) Test_GetConfig_nonExistPlugin_expectNotFound() { method Test_UpdateConfig (line 462) | func (s *PluginSuite) Test_UpdateConfig() { method Test_UpdateConfig_invalidConfig_expect400 (line 497) | func (s *PluginSuite) Test_UpdateConfig_invalidConfig_expect400() { method Test_UpdateConfig_malformedYAML_expect400 (line 534) | func (s *PluginSuite) Test_UpdateConfig_malformedYAML_expect400() { method Test_UpdateConfig_ioError_expect500 (line 566) | func (s *PluginSuite) Test_UpdateConfig_ioError_expect500() { method Test_UpdateConfig_notImplemented_expect400 (line 596) | func (s *PluginSuite) Test_UpdateConfig_notImplemented_expect400() { method Test_UpdateConfig_incorrectUser_expectNotFound (line 624) | func (s *PluginSuite) Test_UpdateConfig_incorrectUser_expectNotFound() { method Test_UpdateConfig_danglingConf_expectNotFound (line 660) | func (s *PluginSuite) Test_UpdateConfig_danglingConf_expectNotFound() { method Test_UpdateConfig_nonExistPlugin_expectNotFound (line 681) | func (s *PluginSuite) Test_UpdateConfig_nonExistPlugin_expectNotFound() { FILE: api/stream/client.go constant writeWait (line 12) | writeWait = 2 * time.Second type client (line 23) | type client struct method Close (line 43) | func (c *client) Close() { method NotifyClose (line 51) | func (c *client) NotifyClose() { method startReading (line 61) | func (c *client) startReading(pongWait time.Duration) { method startWriteHandler (line 81) | func (c *client) startWriteHandler(pingPeriod time.Duration) { function newClient (line 32) | func newClient(conn *websocket.Conn, userID uint, token string, onClose ... function printWebSocketError (line 110) | func printWebSocketError(prefix string, err error) { FILE: api/stream/once.go type once (line 14) | type once struct method Do (line 19) | func (o *once) Do(f func()) { method mayExecute (line 28) | func (o *once) mayExecute() bool { FILE: api/stream/once_test.go function Test_Execute (line 10) | func Test_Execute(t *testing.T) { FILE: api/stream/stream.go type API (line 19) | type API struct method CollectConnectedClientTokens (line 41) | func (a *API) CollectConnectedClientTokens() []string { method NotifyDeletedUser (line 54) | func (a *API) NotifyDeletedUser(userID uint) error { method NotifyDeletedClient (line 67) | func (a *API) NotifyDeletedClient(userID uint, token string) { method Notify (line 83) | func (a *API) Notify(userID uint, msg *model.MessageExternal) { method remove (line 93) | func (a *API) remove(remove *client) { method register (line 106) | func (a *API) register(client *client) { method Handle (line 143) | func (a *API) Handle(ctx *gin.Context) { method Close (line 157) | func (a *API) Close() { function New (line 31) | func New(pingPeriod, pongTimeout time.Duration, allowedWebSocketOrigins ... function uniq (line 171) | func uniq[T comparable](s []T) []T { function isAllowedOrigin (line 183) | func isAllowedOrigin(r *http.Request, allowedOrigins []*regexp.Regexp) b... function newUpgrader (line 207) | func newUpgrader(allowedWebSocketOrigins []string) *websocket.Upgrader { function compileAllowedWebSocketOrigins (line 221) | func compileAllowedWebSocketOrigins(allowedOrigins []string) []*regexp.R... FILE: api/stream/stream_test.go function TestFailureOnNormalHttpRequest (line 24) | func TestFailureOnNormalHttpRequest(t *testing.T) { function TestWriteMessageFails (line 39) | func TestWriteMessageFails(t *testing.T) { function TestWritePingFails (line 69) | func TestWritePingFails(t *testing.T) { function TestPing (line 102) | func TestPing(t *testing.T) { function TestCloseClientOnNotReading (line 138) | func TestCloseClientOnNotReading(t *testing.T) { function TestMessageDirectlyAfterConnect (line 160) | func TestMessageDirectlyAfterConnect(t *testing.T) { function TestDeleteClientShouldCloseConnection (line 178) | func TestDeleteClientShouldCloseConnection(t *testing.T) { function TestDeleteMultipleClients (line 201) | func TestDeleteMultipleClients(t *testing.T) { function TestDeleteUser (line 264) | func TestDeleteUser(t *testing.T) { function TestCollectConnectedClientTokens (line 326) | func TestCollectConnectedClientTokens(t *testing.T) { function TestMultipleClients (line 363) | func TestMultipleClients(t *testing.T) { function Test_sameOrigin_returnsTrue (line 440) | func Test_sameOrigin_returnsTrue(t *testing.T) { function Test_sameOrigin_returnsTrue_withCustomPort (line 448) | func Test_sameOrigin_returnsTrue_withCustomPort(t *testing.T) { function Test_isAllowedOrigin_withoutAllowedOrigins_failsWhenNotSameOrigin (line 456) | func Test_isAllowedOrigin_withoutAllowedOrigins_failsWhenNotSameOrigin(t... function Test_isAllowedOriginMatching (line 464) | func Test_isAllowedOriginMatching(t *testing.T) { function Test_emptyOrigin_returnsTrue (line 479) | func Test_emptyOrigin_returnsTrue(t *testing.T) { function Test_otherOrigin_returnsFalse (line 486) | func Test_otherOrigin_returnsFalse(t *testing.T) { function Test_invalidOrigin_returnsFalse (line 494) | func Test_invalidOrigin_returnsFalse(t *testing.T) { function Test_compileAllowedWebSocketOrigins (line 502) | func Test_compileAllowedWebSocketOrigins(t *testing.T) { function clients (line 507) | func clients(api *API, user uint) []*client { function countClients (line 514) | func countClients(a *API) int { function testClient (line 525) | func testClient(t *testing.T, url string) *testingClient { function startReading (line 531) | func startReading(client *testingClient) { function createClient (line 546) | func createClient(t *testing.T, url string) *testingClient { type testingClient (line 555) | type testingClient struct method expectMessage (line 561) | func (c *testingClient) expectMessage(expected *model.MessageExternal) { method expectNoMessage (line 582) | func (c *testingClient) expectNoMessage() { function expectMessage (line 570) | func expectMessage(expected *model.MessageExternal, clients ...*testingC... function expectNoMessage (line 576) | func expectNoMessage(clients ...*testingClient) { function bootTestServer (line 591) | func bootTestServer(handlerFunc gin.HandlerFunc) (*httptest.Server, *API) { function wsURL (line 602) | func wsURL(httpURL string) string { function staticUserID (line 606) | func staticUserID() gin.HandlerFunc { function waitForConnectedClients (line 612) | func waitForConnectedClients(api *API, count int) { FILE: api/tokens_test.go function TestTokenGeneration (line 10) | func TestTokenGeneration(t *testing.T) { FILE: api/user.go type UserDatabase (line 15) | type UserDatabase interface type UserChangeNotifier (line 26) | type UserChangeNotifier struct method OnUserDeleted (line 32) | func (c *UserChangeNotifier) OnUserDeleted(cb func(uid uint) error) { method OnUserAdded (line 37) | func (c *UserChangeNotifier) OnUserAdded(cb func(uid uint) error) { method fireUserDeleted (line 41) | func (c *UserChangeNotifier) fireUserDeleted(uid uint) error { method fireUserAdded (line 50) | func (c *UserChangeNotifier) fireUserAdded(uid uint) error { type UserAPI (line 60) | type UserAPI struct method GetUsers (line 90) | func (a *UserAPI) GetUsers(ctx *gin.Context) { method GetCurrentUser (line 124) | func (a *UserAPI) GetCurrentUser(ctx *gin.Context) { method CreateUser (line 168) | func (a *UserAPI) CreateUser(ctx *gin.Context) { method GetUserByID (line 258) | func (a *UserAPI) GetUserByID(ctx *gin.Context) { method DeleteUserByID (line 306) | func (a *UserAPI) DeleteUserByID(ctx *gin.Context) { method ChangePassword (line 363) | func (a *UserAPI) ChangePassword(ctx *gin.Context) { method UpdateUserByID (line 418) | func (a *UserAPI) UpdateUserByID(ctx *gin.Context) { function toExternalUser (line 455) | func toExternalUser(internal *model.User) *model.UserExternal { FILE: api/user_test.go function TestUserSuite (line 20) | func TestUserSuite(t *testing.T) { type UserSuite (line 24) | type UserSuite struct method BeforeTest (line 35) | func (s *UserSuite) BeforeTest(suiteName, testName string) { method AfterTest (line 54) | func (s *UserSuite) AfterTest(suiteName, testName string) { method Test_GetUsers (line 58) | func (s *UserSuite) Test_GetUsers() { method Test_GetCurrentUser (line 68) | func (s *UserSuite) Test_GetCurrentUser() { method Test_GetUserByID (line 78) | func (s *UserSuite) Test_GetUserByID() { method Test_GetUserByID_InvalidID (line 89) | func (s *UserSuite) Test_GetUserByID_InvalidID() { method Test_GetUserByID_UnknownUser (line 98) | func (s *UserSuite) Test_GetUserByID_UnknownUser() { method Test_DeleteUserByID_LastAdmin_Expect400 (line 108) | func (s *UserSuite) Test_DeleteUserByID_LastAdmin_Expect400() { method Test_DeleteUserByID_InvalidID (line 121) | func (s *UserSuite) Test_DeleteUserByID_InvalidID() { method Test_DeleteUserByID_UnknownUser (line 129) | func (s *UserSuite) Test_DeleteUserByID_UnknownUser() { method Test_DeleteUserByID (line 139) | func (s *UserSuite) Test_DeleteUserByID() { method Test_DeleteUserByID_NotifyFail (line 153) | func (s *UserSuite) Test_DeleteUserByID_NotifyFail() { method Test_CreateUser (line 169) | func (s *UserSuite) Test_CreateUser() { method Test_CreateUser_ByNonAdmin (line 189) | func (s *UserSuite) Test_CreateUser_ByNonAdmin() { method Test_CreateUser_Register_ByNonAdmin (line 200) | func (s *UserSuite) Test_CreateUser_Register_ByNonAdmin() { method Test_CreateUser_Register_Admin_ByNonAdmin (line 215) | func (s *UserSuite) Test_CreateUser_Register_Admin_ByNonAdmin() { method Test_CreateUser_Anonymous (line 228) | func (s *UserSuite) Test_CreateUser_Anonymous() { method Test_CreateUser_Register_Anonymous (line 240) | func (s *UserSuite) Test_CreateUser_Register_Anonymous() { method Test_CreateUser_Register_Admin_Anonymous (line 255) | func (s *UserSuite) Test_CreateUser_Register_Admin_Anonymous() { method Test_CreateUser_NotifyFail (line 268) | func (s *UserSuite) Test_CreateUser_NotifyFail() { method Test_CreateUser_NoPassword (line 289) | func (s *UserSuite) Test_CreateUser_NoPassword() { method Test_CreateUser_NoName (line 300) | func (s *UserSuite) Test_CreateUser_NoName() { method Test_CreateUser_NameAlreadyExists (line 311) | func (s *UserSuite) Test_CreateUser_NameAlreadyExists() { method Test_UpdateUserByID_InvalidID (line 323) | func (s *UserSuite) Test_UpdateUserByID_InvalidID() { method Test_UpdateUserByID_LastAdmin_Expect400 (line 334) | func (s *UserSuite) Test_UpdateUserByID_LastAdmin_Expect400() { method Test_UpdateUserByID_UnknownUser (line 350) | func (s *UserSuite) Test_UpdateUserByID_UnknownUser() { method Test_UpdateUserByID_UpdateNotPassword (line 361) | func (s *UserSuite) Test_UpdateUserByID_UpdateNotPassword() { method Test_UpdateUserByID_UpdatePassword (line 378) | func (s *UserSuite) Test_UpdateUserByID_UpdatePassword() { method Test_UpdatePassword (line 395) | func (s *UserSuite) Test_UpdatePassword() { method Test_UpdatePassword_EmptyPassword (line 411) | func (s *UserSuite) Test_UpdatePassword_EmptyPassword() { method loginAdmin (line 427) | func (s *UserSuite) loginAdmin() { method loginUser (line 432) | func (s *UserSuite) loginUser() { method noLogin (line 437) | func (s *UserSuite) noLogin() { function externalOf (line 441) | func externalOf(user *model.User) *model.UserExternal { FILE: app.go function main (line 26) | func main() { FILE: auth/authentication.go constant headerName (line 14) | headerName = "X-Gotify-Key" type Database (line 18) | type Database interface type Auth (line 29) | type Auth struct method RequireAdmin (line 37) | func (a *Auth) RequireAdmin() gin.HandlerFunc { method RequireClient (line 57) | func (a *Auth) RequireClient() gin.HandlerFunc { method RequireApplicationToken (line 78) | func (a *Auth) RequireApplicationToken() gin.HandlerFunc { method tokenFromQueryOrHeader (line 98) | func (a *Auth) tokenFromQueryOrHeader(ctx *gin.Context) string { method tokenFromQuery (line 109) | func (a *Auth) tokenFromQuery(ctx *gin.Context) string { method tokenFromXGotifyHeader (line 113) | func (a *Auth) tokenFromXGotifyHeader(ctx *gin.Context) string { method tokenFromAuthorizationHeader (line 117) | func (a *Auth) tokenFromAuthorizationHeader(ctx *gin.Context) string { method userFromBasicAuth (line 132) | func (a *Auth) userFromBasicAuth(ctx *gin.Context) (*model.User, error) { method requireToken (line 143) | func (a *Auth) requireToken(auth authenticate) gin.HandlerFunc { method Optional (line 170) | func (a *Auth) Optional() gin.HandlerFunc { type authenticate (line 33) | type authenticate FILE: auth/authentication_test.go function TestSuite (line 17) | func TestSuite(t *testing.T) { type AuthenticationSuite (line 21) | type AuthenticationSuite struct method SetupSuite (line 27) | func (s *AuthenticationSuite) SetupSuite() { method TearDownSuite (line 49) | func (s *AuthenticationSuite) TearDownSuite() { method TestQueryToken (line 53) | func (s *AuthenticationSuite) TestQueryToken() { method assertQueryRequest (line 81) | func (s *AuthenticationSuite) assertQueryRequest(key, value string, f ... method TestNothingProvided (line 90) | func (s *AuthenticationSuite) TestNothingProvided() { method TestHeaderApiKeyToken (line 98) | func (s *AuthenticationSuite) TestHeaderApiKeyToken() { method TestAuthorizationHeaderApiKeyToken (line 126) | func (s *AuthenticationSuite) TestAuthorizationHeaderApiKeyToken() { method TestBasicAuth (line 159) | func (s *AuthenticationSuite) TestBasicAuth() { method TestOptionalAuth (line 185) | func (s *AuthenticationSuite) TestOptionalAuth() { method assertHeaderRequest (line 213) | func (s *AuthenticationSuite) assertHeaderRequest(key, value string, f... type fMiddleware (line 223) | type fMiddleware FILE: auth/cors.go function CorsConfig (line 14) | func CorsConfig(conf *config.Configuration) cors.Config { function headerIgnoreCase (line 46) | func headerIgnoreCase(conf *config.Configuration, search string) (value ... function compileAllowedCORSOrigins (line 55) | func compileAllowedCORSOrigins(allowedOrigins []string) []*regexp.Regexp { FILE: auth/cors_test.go function TestCorsConfig (line 13) | func TestCorsConfig(t *testing.T) { function TestEmptyCorsConfigWithResponseHeaders (line 37) | func TestEmptyCorsConfigWithResponseHeaders(t *testing.T) { function TestDevCorsConfig (line 54) | func TestDevCorsConfig(t *testing.T) { FILE: auth/password/password.go function CreatePassword (line 6) | func CreatePassword(pw string, strength int) []byte { function ComparePassword (line 15) | func ComparePassword(hashedPassword, password []byte) bool { FILE: auth/password/password_test.go function TestPasswordSuccess (line 9) | func TestPasswordSuccess(t *testing.T) { function TestPasswordFailure (line 14) | func TestPasswordFailure(t *testing.T) { function TestBCryptFailure (line 19) | func TestBCryptFailure(t *testing.T) { FILE: auth/token.go function randIntn (line 18) | func randIntn(n int) int { function GenerateNotExistingToken (line 28) | func GenerateNotExistingToken(generateToken func() string, tokenExists f... function GenerateApplicationToken (line 38) | func GenerateApplicationToken() string { function GenerateClientToken (line 43) | func GenerateClientToken() string { function GeneratePluginToken (line 48) | func GeneratePluginToken() string { function GenerateImageName (line 53) | func GenerateImageName() string { function generateRandomToken (line 57) | func generateRandomToken(prefix string) string { function generateRandomString (line 61) | func generateRandomString(length int) string { function init (line 70) | func init() { FILE: auth/token_test.go function TestTokenHavePrefix (line 13) | func TestTokenHavePrefix(t *testing.T) { function TestGenerateNotExistingToken (line 22) | func TestGenerateNotExistingToken(t *testing.T) { function TestBadCryptoReaderPanics (line 33) | func TestBadCryptoReaderPanics(t *testing.T) { FILE: auth/util.go function RegisterAuthentication (line 9) | func RegisterAuthentication(ctx *gin.Context, user *model.User, userID u... function GetUserID (line 16) | func GetUserID(ctx *gin.Context) uint { function TryGetUserID (line 25) | func TryGetUserID(ctx *gin.Context) *uint { function GetTokenID (line 39) | func GetTokenID(ctx *gin.Context) string { FILE: auth/util_test.go function TestUtilSuite (line 14) | func TestUtilSuite(t *testing.T) { type UtilSuite (line 18) | type UtilSuite struct method BeforeTest (line 22) | func (s *UtilSuite) BeforeTest(suiteName, testName string) { method Test_getID (line 26) | func (s *UtilSuite) Test_getID() { method Test_getToken (line 35) | func (s *UtilSuite) Test_getToken() { method expectUserIDWith (line 42) | func (s *UtilSuite) expectUserIDWith(user *model.User, tokenUserID, ex... method expectTryUserIDWith (line 49) | func (s *UtilSuite) expectTryUserIDWith(user *model.User, tokenUserID ... FILE: config/config.go type Configuration (line 12) | type Configuration struct function configFiles (line 60) | func configFiles() []string { function Get (line 68) | func Get() *Configuration { function addTrailingSlashToPaths (line 78) | func addTrailingSlashToPaths(conf *Configuration) { FILE: config/config_test.go function TestConfigEnv (line 12) | func TestConfigEnv(t *testing.T) { function TestAddSlash (line 44) | func TestAddSlash(t *testing.T) { function TestNotAddSlash (line 52) | func TestNotAddSlash(t *testing.T) { function TestFileWithSyntaxErrors (line 60) | func TestFileWithSyntaxErrors(t *testing.T) { function TestConfigFile (line 79) | func TestConfigFile(t *testing.T) { FILE: database/application.go method GetApplicationByToken (line 13) | func (d *GormDatabase) GetApplicationByToken(token string) (*model.Appli... method GetApplicationByID (line 26) | func (d *GormDatabase) GetApplicationByID(id uint) (*model.Application, ... method CreateApplication (line 39) | func (d *GormDatabase) CreateApplication(application *model.Application)... method DeleteApplicationByID (line 58) | func (d *GormDatabase) DeleteApplicationByID(id uint) error { method GetApplicationsByUser (line 64) | func (d *GormDatabase) GetApplicationsByUser(userID uint) ([]*model.Appl... method UpdateApplication (line 74) | func (d *GormDatabase) UpdateApplication(app *model.Application) error { method UpdateApplicationTokenLastUsed (line 79) | func (d *GormDatabase) UpdateApplicationTokenLastUsed(token string, t *t... FILE: database/application_test.go method TestApplication (line 10) | func (s *DatabaseSuite) TestApplication() { method TestDeleteAppDeletesMessages (line 72) | func (s *DatabaseSuite) TestDeleteAppDeletesMessages() { FILE: database/client.go method GetClientByID (line 11) | func (d *GormDatabase) GetClientByID(id uint) (*model.Client, error) { method GetClientByToken (line 24) | func (d *GormDatabase) GetClientByToken(token string) (*model.Client, er... method CreateClient (line 37) | func (d *GormDatabase) CreateClient(client *model.Client) error { method GetClientsByUser (line 42) | func (d *GormDatabase) GetClientsByUser(userID uint) ([]*model.Client, e... method DeleteClientByID (line 52) | func (d *GormDatabase) DeleteClientByID(id uint) error { method UpdateClient (line 57) | func (d *GormDatabase) UpdateClient(client *model.Client) error { method UpdateClientTokensLastUsed (line 62) | func (d *GormDatabase) UpdateClientTokensLastUsed(tokens []string, t *ti... FILE: database/client_test.go method TestClient (line 10) | func (s *DatabaseSuite) TestClient() { FILE: database/database.go function New (line 27) | func New(dialect, connection, defaultUser, defaultPass string, strength ... function fillMissingSortKeys (line 100) | func fillMissingSortKeys(db *gorm.DB) error { function createDirectoryIfSqlite (line 133) | func createDirectoryIfSqlite(dialect, connection string) { type GormDatabase (line 144) | type GormDatabase struct method Close (line 149) | func (d *GormDatabase) Close() { FILE: database/database_test.go function TestDatabaseSuite (line 17) | func TestDatabaseSuite(t *testing.T) { type DatabaseSuite (line 21) | type DatabaseSuite struct method BeforeTest (line 27) | func (s *DatabaseSuite) BeforeTest(suiteName, testName string) { method AfterTest (line 34) | func (s *DatabaseSuite) AfterTest(suiteName, testName string) { function TestInvalidDialect (line 39) | func TestInvalidDialect(t *testing.T) { function TestCreateSqliteFolder (line 46) | func TestCreateSqliteFolder(t *testing.T) { function TestWithAlreadyExistingSqliteFolder (line 56) | func TestWithAlreadyExistingSqliteFolder(t *testing.T) { function TestPanicsOnMkdirError (line 66) | func TestPanicsOnMkdirError(t *testing.T) { function TestMigrateSortKey (line 77) | func TestMigrateSortKey(t *testing.T) { FILE: database/message.go method GetMessageByID (line 9) | func (d *GormDatabase) GetMessageByID(id uint) (*model.Message, error) { method CreateMessage (line 22) | func (d *GormDatabase) CreateMessage(message *model.Message) error { method GetMessagesByUser (line 27) | func (d *GormDatabase) GetMessagesByUser(userID uint) ([]*model.Message,... method GetMessagesByUserSince (line 39) | func (d *GormDatabase) GetMessagesByUserSince(userID uint, limit int, si... method GetMessagesByApplication (line 54) | func (d *GormDatabase) GetMessagesByApplication(tokenID uint) ([]*model.... method GetMessagesByApplicationSince (line 65) | func (d *GormDatabase) GetMessagesByApplicationSince(appID uint, limit i... method DeleteMessageByID (line 79) | func (d *GormDatabase) DeleteMessageByID(id uint) error { method DeleteMessagesByApplication (line 84) | func (d *GormDatabase) DeleteMessagesByApplication(applicationID uint) e... method DeleteMessagesByUser (line 89) | func (d *GormDatabase) DeleteMessagesByUser(userID uint) error { FILE: database/message_test.go method TestMessage (line 12) | func (s *DatabaseSuite) TestMessage() { method TestGetMessagesSince (line 150) | func (s *DatabaseSuite) TestGetMessagesSince() { function hasIDInclusiveBetween (line 226) | func hasIDInclusiveBetween(t *testing.T, msgs []*model.Message, from, to... function assertEquals (line 238) | func assertEquals(t *testing.T, left, right *model.Message) { FILE: database/migration_test.go function TestMigration (line 14) | func TestMigration(t *testing.T) { type MigrationSuite (line 18) | type MigrationSuite struct method BeforeTest (line 23) | func (s *MigrationSuite) BeforeTest(suiteName, testName string) { method AfterTest (line 41) | func (s *MigrationSuite) AfterTest(suiteName, testName string) { method TestMigration (line 45) | func (s *MigrationSuite) TestMigration() { FILE: database/ping.go method Ping (line 4) | func (d *GormDatabase) Ping() error { FILE: database/ping_test.go method TestPing_onValidDB (line 7) | func (s *DatabaseSuite) TestPing_onValidDB() { method TestPing_onClosedDB (line 12) | func (s *DatabaseSuite) TestPing_onClosedDB() { FILE: database/plugin.go method GetPluginConfByUser (line 9) | func (d *GormDatabase) GetPluginConfByUser(userid uint) ([]*model.Plugin... method GetPluginConfByUserAndPath (line 19) | func (d *GormDatabase) GetPluginConfByUserAndPath(userid uint, path stri... method GetPluginConfByApplicationID (line 32) | func (d *GormDatabase) GetPluginConfByApplicationID(appid uint) (*model.... method CreatePluginConf (line 45) | func (d *GormDatabase) CreatePluginConf(p *model.PluginConf) error { method GetPluginConfByToken (line 50) | func (d *GormDatabase) GetPluginConfByToken(token string) (*model.Plugin... method GetPluginConfByID (line 63) | func (d *GormDatabase) GetPluginConfByID(id uint) (*model.PluginConf, er... method UpdatePluginConf (line 76) | func (d *GormDatabase) UpdatePluginConf(p *model.PluginConf) error { method DeletePluginConfByID (line 81) | func (d *GormDatabase) DeletePluginConfByID(id uint) error { FILE: database/plugin_test.go method TestPluginConf (line 9) | func (s *DatabaseSuite) TestPluginConf() { FILE: database/user.go method GetUserByName (line 9) | func (d *GormDatabase) GetUserByName(name string) (*model.User, error) { method GetUserByID (line 22) | func (d *GormDatabase) GetUserByID(id uint) (*model.User, error) { method CountUser (line 35) | func (d *GormDatabase) CountUser(condition ...interface{}) (int64, error) { method GetUsers (line 48) | func (d *GormDatabase) GetUsers() ([]*model.User, error) { method DeleteUserByID (line 55) | func (d *GormDatabase) DeleteUserByID(id uint) error { method UpdateUser (line 72) | func (d *GormDatabase) UpdateUser(user *model.User) error { method CreateUser (line 77) | func (d *GormDatabase) CreateUser(user *model.User) error { FILE: database/user_test.go method TestUser (line 9) | func (s *DatabaseSuite) TestUser() { method TestUserPlugins (line 77) | func (s *DatabaseSuite) TestUserPlugins() { method TestDeleteUserDeletesApplicationsAndClientsAndPluginConfs (line 104) | func (s *DatabaseSuite) TestDeleteUserDeletesApplicationsAndClientsAndPl... FILE: docs/swagger.go function Serve (line 15) | func Serve(ctx *gin.Context) { function getSwaggerJSON (line 23) | func getSwaggerJSON(base string) string { FILE: docs/swagger_test.go function TestServe (line 13) | func TestServe(t *testing.T) { function withURL (line 28) | func withURL(ctx *gin.Context, scheme, host string) { FILE: docs/ui.go function UI (line 71) | func UI(ctx *gin.Context) { FILE: docs/ui_test.go function TestUI (line 12) | func TestUI(t *testing.T) { FILE: error/handler.go function Handler (line 15) | func Handler() gin.HandlerFunc { function validationErrorToText (line 43) | func validationErrorToText(e validator.FieldError) string { function writeError (line 58) | func writeError(ctx *gin.Context, errString string) { FILE: error/handler_test.go function TestDefaultErrorInternal (line 16) | func TestDefaultErrorInternal(t *testing.T) { function TestBindingErrorDefault (line 27) | func TestBindingErrorDefault(t *testing.T) { function TestDefaultErrorBadRequest (line 38) | func TestDefaultErrorBadRequest(t *testing.T) { type testValidate (line 49) | type testValidate struct function TestValidationError (line 56) | func TestValidationError(t *testing.T) { function assertJSONResponse (line 76) | func assertJSONResponse(t *testing.T, rec *httptest.ResponseRecorder, co... FILE: error/notfound.go function NotFound (line 11) | func NotFound() gin.HandlerFunc { FILE: error/notfound_test.go function TestNotFound (line 11) | func TestNotFound(t *testing.T) { FILE: fracdex/fracdex.go constant base62Digits (line 12) | base62Digits = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrst... constant smallestInt (line 13) | smallestInt = "A00000000000000000000000000" constant zero (line 14) | zero = "a0" function KeyBetween (line 21) | func KeyBetween(a, b string) (string, error) { function midpoint (line 108) | func midpoint(a, b string) string { function validateInt (line 163) | func validateInt(i string) error { function getIntLen (line 174) | func getIntLen(head byte) (int, error) { function getIntPart (line 184) | func getIntPart(key string) (string, error) { function validateOrderKey (line 195) | func validateOrderKey(key string) error { function incrementInt (line 214) | func incrementInt(x string) (string, error) { function decrementInt (line 250) | func decrementInt(x string) (string, error) { function Float64Approx (line 292) | func Float64Approx(key string) (float64, error) { function NKeysBetween (line 340) | func NKeysBetween(a, b string, n uint) ([]string, error) { function reverse (line 408) | func reverse(values []string) { FILE: fracdex/fracdex_test.go function TestKeys (line 12) | func TestKeys(t *testing.T) { function TestNKeys (line 60) | func TestNKeys(t *testing.T) { function TestToFloat64Approx (line 85) | func TestToFloat64Approx(t *testing.T) { FILE: mode/mode.go constant Dev (line 7) | Dev = "dev" constant Prod (line 9) | Prod = "prod" constant TestDev (line 11) | TestDev = "testdev" function Set (line 17) | func Set(newMode string) { function Get (line 23) | func Get() string { function IsDev (line 28) | func IsDev() bool { function updateGinMode (line 32) | func updateGinMode() { FILE: mode/mode_test.go function TestDevMode (line 10) | func TestDevMode(t *testing.T) { function TestTestDevMode (line 17) | func TestTestDevMode(t *testing.T) { function TestProdMode (line 24) | func TestProdMode(t *testing.T) { function TestInvalidMode (line 31) | func TestInvalidMode(t *testing.T) { FILE: model/application.go type Application (line 10) | type Application struct FILE: model/client.go type Client (line 10) | type Client struct FILE: model/error.go type Error (line 8) | type Error struct FILE: model/health.go type Health (line 8) | type Health struct constant StatusGreen (line 23) | StatusGreen = "green" constant StatusOrange (line 25) | StatusOrange = "orange" constant StatusRed (line 27) | StatusRed = "red" FILE: model/message.go type Message (line 8) | type Message struct type MessageExternal (line 23) | type MessageExternal struct FILE: model/paging.go type Paging (line 8) | type Paging struct type PagedMessages (line 43) | type PagedMessages struct FILE: model/pluginconf.go type PluginConf (line 4) | type PluginConf struct type PluginConfExternal (line 20) | type PluginConfExternal struct FILE: model/user.go type User (line 4) | type User struct type UserExternal (line 19) | type UserExternal struct type CreateUserExternal (line 43) | type CreateUserExternal struct type UpdateUserExternal (line 66) | type UpdateUserExternal struct type UserExternalPass (line 88) | type UserExternalPass struct FILE: model/version.go type VersionInfo (line 6) | type VersionInfo struct FILE: plugin/compat/instance.go type Capability (line 10) | type Capability constant Messenger (line 14) | Messenger = Capability("messenger") constant Configurer (line 16) | Configurer = Capability("configurer") constant Storager (line 18) | Storager = Capability("storager") constant Webhooker (line 20) | Webhooker = Capability("webhooker") constant Displayer (line 22) | Displayer = Capability("displayer") type PluginInstance (line 26) | type PluginInstance interface function HasSupport (line 52) | func HasSupport(p PluginInstance, toCheck Capability) bool { type Capabilities (line 62) | type Capabilities method Strings (line 65) | func (m Capabilities) Strings() []string { type MessageHandler (line 74) | type MessageHandler interface type StorageHandler (line 80) | type StorageHandler interface type Message (line 86) | type Message struct FILE: plugin/compat/plugin.go type Plugin (line 4) | type Plugin interface type Info (line 11) | type Info struct method String (line 21) | func (c Info) String() string { type UserContext (line 29) | type UserContext struct FILE: plugin/compat/plugin_test.go constant examplePluginPath (line 9) | examplePluginPath = "github.com/gotify/server/v2/plugin/example/echo" function TestPluginInfoStringer (line 11) | func TestPluginInfoStringer(t *testing.T) { FILE: plugin/compat/v1.go type PluginV1 (line 11) | type PluginV1 struct method APIVersion (line 17) | func (c PluginV1) APIVersion() string { method PluginInfo (line 22) | func (c PluginV1) PluginInfo() Info { method NewPluginInstance (line 35) | func (c PluginV1) NewPluginInstance(ctx UserContext) PluginInstance { type PluginV1Instance (line 70) | type PluginV1Instance struct method DefaultConfig (line 80) | func (c *PluginV1Instance) DefaultConfig() interface{} { method ValidateAndSetConfig (line 88) | func (c *PluginV1Instance) ValidateAndSetConfig(config interface{}) er... method GetDisplay (line 96) | func (c *PluginV1Instance) GetDisplay(location *url.URL) string { method SetMessageHandler (line 104) | func (c *PluginV1Instance) SetMessageHandler(h MessageHandler) { method RegisterWebhook (line 111) | func (c *PluginV1Instance) RegisterWebhook(basePath string, mux *gin.R... method SetStorageHandler (line 118) | func (c *PluginV1Instance) SetStorageHandler(handler StorageHandler) { method Supports (line 125) | func (c *PluginV1Instance) Supports() Capabilities { method Enable (line 161) | func (c *PluginV1Instance) Enable() error { method Disable (line 166) | func (c *PluginV1Instance) Disable() error { type PluginV1MessageHandler (line 146) | type PluginV1MessageHandler struct method SendMessage (line 151) | func (c *PluginV1MessageHandler) SendMessage(msg papiv1.Message) error { type PluginV1StorageHandler (line 171) | type PluginV1StorageHandler struct method Save (line 176) | func (c *PluginV1StorageHandler) Save(b []byte) error { method Load (line 181) | func (c *PluginV1StorageHandler) Load() ([]byte, error) { FILE: plugin/compat/v1_test.go type v1MockInstance (line 11) | type v1MockInstance struct method Enable (line 15) | func (c *v1MockInstance) Enable() error { method Disable (line 20) | func (c *v1MockInstance) Disable() error { type V1WrapperSuite (line 25) | type V1WrapperSuite struct method SetupSuite (line 30) | func (s *V1WrapperSuite) SetupSuite() { method TestConfigurer_notSupported_expectEmpty (line 35) | func (s *V1WrapperSuite) TestConfigurer_notSupported_expectEmpty() { method TestDisplayer_notSupported_expectEmpty (line 40) | func (s *V1WrapperSuite) TestDisplayer_notSupported_expectEmpty() { method TestStorager (line 73) | func (s *V1WrapperSuite) TestStorager() { method TestMessenger_sendMessageWithExtras (line 110) | func (s *V1WrapperSuite) TestMessenger_sendMessageWithExtras() { method TestMessenger_sendMessageWithoutExtras (line 136) | func (s *V1WrapperSuite) TestMessenger_sendMessageWithoutExtras() { type v1StorageHandler (line 44) | type v1StorageHandler struct method Save (line 48) | func (c *v1StorageHandler) Save(b []byte) error { method Load (line 53) | func (c *v1StorageHandler) Load() ([]byte, error) { type v1Storager (line 57) | type v1Storager struct method Enable (line 61) | func (c *v1Storager) Enable() error { method Disable (line 65) | func (c *v1Storager) Disable() error { method SetStorageHandler (line 69) | func (c *v1Storager) SetStorageHandler(h papiv1.StorageHandler) { type v1MessengerHandler (line 85) | type v1MessengerHandler struct method SendMessage (line 89) | func (c *v1MessengerHandler) SendMessage(msg Message) error { type v1Messenger (line 94) | type v1Messenger struct method Enable (line 98) | func (c *v1Messenger) Enable() error { method Disable (line 102) | func (c *v1Messenger) Disable() error { method SetMessageHandler (line 106) | func (c *v1Messenger) SetMessageHandler(h papiv1.MessageHandler) { function TestV1Wrapper (line 158) | func TestV1Wrapper(t *testing.T) { FILE: plugin/compat/wrap.go function Wrap (line 12) | func Wrap(p *plugin.Plugin) (Plugin, error) { FILE: plugin/compat/wrap_test.go type CompatSuite (line 20) | type CompatSuite struct method SetupSuite (line 27) | func (s *CompatSuite) SetupSuite() { method TearDownSuite (line 49) | func (s *CompatSuite) TearDownSuite() { method TestGetPluginAPIVersion (line 53) | func (s *CompatSuite) TestGetPluginAPIVersion() { method TestGetPluginInfo (line 57) | func (s *CompatSuite) TestGetPluginInfo() { method TestInstantiatePlugin (line 64) | func (s *CompatSuite) TestInstantiatePlugin() { method TestGetCapabilities (line 73) | func (s *CompatSuite) TestGetCapabilities() { method TestSetConfig (line 87) | func (s *CompatSuite) TestSetConfig() { method TestRegisterWebhook (line 97) | func (s *CompatSuite) TestRegisterWebhook() { method TestEnableDisable (line 110) | func (s *CompatSuite) TestEnableDisable() { method TestGetDisplay (line 119) | func (s *CompatSuite) TestGetDisplay() { function TestCompatSuite (line 128) | func TestCompatSuite(t *testing.T) { function TestWrapIncompatiblePlugins (line 132) | func TestWrapIncompatiblePlugins(t *testing.T) { FILE: plugin/example/clock/main.go function GetGotifyPluginInfo (line 11) | func GetGotifyPluginInfo() plugin.Info { type Plugin (line 20) | type Plugin struct method Enable (line 27) | func (c *Plugin) Enable() error { method Disable (line 41) | func (c *Plugin) Disable() error { method SetMessageHandler (line 50) | func (c *Plugin) SetMessageHandler(h plugin.MessageHandler) { function NewGotifyPluginInstance (line 55) | func NewGotifyPluginInstance(ctx plugin.UserContext) plugin.Plugin { function main (line 61) | func main() { FILE: plugin/example/echo/echo.go function GetGotifyPluginInfo (line 14) | func GetGotifyPluginInfo() plugin.Info { type EchoPlugin (line 22) | type EchoPlugin struct method SetStorageHandler (line 30) | func (c *EchoPlugin) SetStorageHandler(h plugin.StorageHandler) { method SetMessageHandler (line 35) | func (c *EchoPlugin) SetMessageHandler(h plugin.MessageHandler) { method DefaultConfig (line 50) | func (c *EchoPlugin) DefaultConfig() interface{} { method ValidateAndSetConfig (line 57) | func (c *EchoPlugin) ValidateAndSetConfig(config interface{}) error { method Enable (line 63) | func (c *EchoPlugin) Enable() error { method Disable (line 69) | func (c *EchoPlugin) Disable() error { method RegisterWebhook (line 75) | func (c *EchoPlugin) RegisterWebhook(baseURL string, g *gin.RouterGrou... method GetDisplay (line 98) | func (c *EchoPlugin) GetDisplay(location *url.URL) string { type Storage (line 40) | type Storage struct type Config (line 45) | type Config struct function NewGotifyPluginInstance (line 113) | func NewGotifyPluginInstance(ctx plugin.UserContext) plugin.Plugin { function main (line 117) | func main() { FILE: plugin/example/minimal/main.go function GetGotifyPluginInfo (line 8) | func GetGotifyPluginInfo() plugin.Info { type Plugin (line 16) | type Plugin struct method Enable (line 19) | func (c *Plugin) Enable() error { method Disable (line 24) | func (c *Plugin) Disable() error { function NewGotifyPluginInstance (line 29) | func NewGotifyPluginInstance(ctx plugin.UserContext) plugin.Plugin { function main (line 33) | func main() { FILE: plugin/manager.go type Database (line 25) | type Database interface type Notifier (line 42) | type Notifier interface type Manager (line 47) | type Manager struct method applicationExists (line 106) | func (m *Manager) applicationExists(token string) bool { method pluginConfExists (line 111) | func (m *Manager) pluginConfExists(token string) bool { method SetPluginEnabled (line 117) | func (m *Manager) SetPluginEnabled(pluginID uint, enabled bool) error { method PluginInfo (line 151) | func (m *Manager) PluginInfo(modulePath string) compat.Info { method Instance (line 167) | func (m *Manager) Instance(pluginID uint) (compat.PluginInstance, erro... method HasInstance (line 178) | func (m *Manager) HasInstance(pluginID uint) bool { method RemoveUser (line 184) | func (m *Manager) RemoveUser(userID uint) error { method loadPlugins (line 219) | func (m *Manager) loadPlugins(directory string) error { method LoadPlugin (line 257) | func (m *Manager) LoadPlugin(compatPlugin compat.Plugin) error { method InitializeForUserID (line 267) | func (m *Manager) InitializeForUserID(userID uint) error { method initializeForUser (line 281) | func (m *Manager) initializeForUser(user model.User) error { method initializeSingleUserPlugin (line 315) | func (m *Manager) initializeSingleUserPlugin(userCtx compat.UserContex... method initializeConfigurerForSingleUserPlugin (line 366) | func (m *Manager) initializeConfigurerForSingleUserPlugin(instance com... method createPluginConf (line 399) | func (m *Manager) createPluginConf(instance compat.PluginInstance, inf... function NewManager (line 57) | func NewManager(db Database, directory string, mux *gin.RouterGroup, not... type pluginFileLoadError (line 210) | type pluginFileLoadError struct method Error (line 215) | func (c pluginFileLoadError) Error() string { FILE: plugin/manager_test.go constant examplePluginPath (line 28) | examplePluginPath = "github.com/gotify/server/v2/plugin/example/echo" constant mockPluginPath (line 29) | mockPluginPath = mock.ModulePath constant danglingPluginPath (line 30) | danglingPluginPath = "github.com/gotify/server/v2/plugin/testing/removed" type ManagerSuite (line 33) | type ManagerSuite struct method Notify (line 43) | func (s *ManagerSuite) Notify(uid uint, message *model.MessageExternal) { method SetupSuite (line 50) | func (s *ManagerSuite) SetupSuite() { method TearDownSuite (line 88) | func (s *ManagerSuite) TearDownSuite() { method getConfForExamplePlugin (line 92) | func (s *ManagerSuite) getConfForExamplePlugin(uid uint) *model.Plugin... method getConfForMockPlugin (line 98) | func (s *ManagerSuite) getConfForMockPlugin(uid uint) *model.PluginConf { method getMockPluginInstance (line 104) | func (s *ManagerSuite) getMockPluginInstance(uid uint) *mock.PluginIns... method makeDanglingPluginConf (line 109) | func (s *ManagerSuite) makeDanglingPluginConf(uid uint) *model.PluginC... method TestWebhook_blockedIfDisabled (line 120) | func (s *ManagerSuite) TestWebhook_blockedIfDisabled() { method TestWebhook_successIfEnabled (line 130) | func (s *ManagerSuite) TestWebhook_successIfEnabled() { method TestInitializePlugin_noOpIfEmpty (line 145) | func (s *ManagerSuite) TestInitializePlugin_noOpIfEmpty() { method TestInitializePlugin_noOpIfDotFile (line 149) | func (s *ManagerSuite) TestInitializePlugin_noOpIfDotFile() { method TestInitializePlugin_noOpIfSubDir (line 160) | func (s *ManagerSuite) TestInitializePlugin_noOpIfSubDir() { method TestInitializePlugin_directoryInvalid_expectError (line 167) | func (s *ManagerSuite) TestInitializePlugin_directoryInvalid_expectErr... method TestInitializePlugin_invalidPlugin_expectError (line 171) | func (s *ManagerSuite) TestInitializePlugin_invalidPlugin_expectError() { method TestInitializePlugin_brokenPlugin_expectError (line 175) | func (s *ManagerSuite) TestInitializePlugin_brokenPlugin_expectError() { method TestInitializePlugin_alreadyLoaded_expectError (line 191) | func (s *ManagerSuite) TestInitializePlugin_alreadyLoaded_expectError() { method TestInitializePlugin_alreadyEnabledInConf_expectAutoEnable (line 195) | func (s *ManagerSuite) TestInitializePlugin_alreadyEnabledInConf_expec... method TestInitializePlugin_alreadyEnabledInConf_failedToLoadConfig_disableAutomatically (line 209) | func (s *ManagerSuite) TestInitializePlugin_alreadyEnabledInConf_faile... method TestInitializePlugin_alreadyEnabled_cannotEnable_disabledAutomatically (line 224) | func (s *ManagerSuite) TestInitializePlugin_alreadyEnabled_cannotEnabl... method TestInitializePlugin_userIDNotExist_expectError (line 240) | func (s *ManagerSuite) TestInitializePlugin_userIDNotExist_expectError... method TestSetPluginEnabled (line 244) | func (s *ManagerSuite) TestSetPluginEnabled() { method TestSetPluginEnabled_EnableReturnsError_cannotEnable (line 251) | func (s *ManagerSuite) TestSetPluginEnabled_EnableReturnsError_cannotE... method TestSetPluginEnabled_DisableReturnsError_cannotDisable (line 265) | func (s *ManagerSuite) TestSetPluginEnabled_DisableReturnsError_cannot... method TestAddRemoveNewUser (line 279) | func (s *ManagerSuite) TestAddRemoveNewUser() { method TestRemoveUser_DisableFail_cannotRemove (line 293) | func (s *ManagerSuite) TestRemoveUser_DisableFail_cannotRemove() { method TestRemoveUser_danglingConf_expectSuccess (line 302) | func (s *ManagerSuite) TestRemoveUser_danglingConf_expectSuccess() { method TestTriggerMessage (line 320) | func (s *ManagerSuite) TestTriggerMessage() { method TestStorage (line 332) | func (s *ManagerSuite) TestStorage() { method TestGetPluginInfo (line 341) | func (s *ManagerSuite) TestGetPluginInfo() { method TestGetPluginInfo_notFound_doNotPanic (line 345) | func (s *ManagerSuite) TestGetPluginInfo_notFound_doNotPanic() { method TestSetPluginEnabled_expectNotFound (line 351) | func (s *ManagerSuite) TestSetPluginEnabled_expectNotFound() { function TestManagerSuite (line 355) | func TestManagerSuite(t *testing.T) { function TestNewManager_CannotLoadDirectory_expectError (line 359) | func TestNewManager_CannotLoadDirectory_expectError(t *testing.T) { function TestNewManager_NonPluginFile_expectError (line 364) | func TestNewManager_NonPluginFile_expectError(t *testing.T) { function TestNewManager_InternalApplicationManagement (line 369) | func TestNewManager_InternalApplicationManagement(t *testing.T) { function TestPluginFileLoadError (line 447) | func TestPluginFileLoadError(t *testing.T) { FILE: plugin/messagehandler.go type redirectToChannel (line 10) | type redirectToChannel struct method SendMessage (line 23) | func (c redirectToChannel) SendMessage(msg compat.Message) error { type MessageWithUserID (line 17) | type MessageWithUserID struct FILE: plugin/pluginenabled.go function requirePluginEnabled (line 9) | func requirePluginEnabled(id uint, db Database) gin.HandlerFunc { FILE: plugin/pluginenabled_test.go function TestRequirePluginEnabled (line 13) | func TestRequirePluginEnabled(t *testing.T) { FILE: plugin/storagehandler.go type dbStorageHandler (line 3) | type dbStorageHandler struct method Save (line 8) | func (c dbStorageHandler) Save(b []byte) error { method Load (line 17) | func (c dbStorageHandler) Load() ([]byte, error) { FILE: plugin/testing/broken/cantinstantiate/main.go function GetGotifyPluginInfo (line 10) | func GetGotifyPluginInfo() plugin.Info { type Plugin (line 17) | type Plugin struct method Enable (line 20) | func (c *Plugin) Enable() error { method Disable (line 25) | func (c *Plugin) Disable() error { function NewGotifyPluginInstance (line 30) | func NewGotifyPluginInstance(ctx plugin.UserContext) plugin.Plugin { function main (line 34) | func main() { FILE: plugin/testing/broken/malformedconstructor/main.go function GetGotifyPluginInfo (line 8) | func GetGotifyPluginInfo() plugin.Info { type Plugin (line 15) | type Plugin struct method Enable (line 18) | func (c *Plugin) Enable() error { method Disable (line 23) | func (c *Plugin) Disable() error { function NewGotifyPluginInstance (line 28) | func NewGotifyPluginInstance(ctx plugin.UserContext) interface{} { function main (line 32) | func main() { FILE: plugin/testing/broken/noinstance/main.go function GetGotifyPluginInfo (line 8) | func GetGotifyPluginInfo() plugin.Info { function main (line 14) | func main() { FILE: plugin/testing/broken/nothing/main.go function main (line 3) | func main() { FILE: plugin/testing/broken/unknowninfo/main.go function GetGotifyPluginInfo (line 4) | func GetGotifyPluginInfo() string { function main (line 8) | func main() { FILE: plugin/testing/mock/mock.go constant ModulePath (line 13) | ModulePath = "github.com/gotify/server/v2/plugin/testing/mock" constant Name (line 16) | Name = "mock plugin" type Plugin (line 19) | type Plugin struct method PluginInfo (line 24) | func (c *Plugin) PluginInfo() compat.Info { method NewPluginInstance (line 32) | func (c *Plugin) NewPluginInstance(ctx compat.UserContext) compat.Plug... method APIVersion (line 39) | func (c *Plugin) APIVersion() string { type PluginInstance (line 44) | type PluginInstance struct method Enable (line 77) | func (c *PluginInstance) Enable() error { method Disable (line 86) | func (c *PluginInstance) Disable() error { method SetMessageHandler (line 95) | func (c *PluginInstance) SetMessageHandler(h compat.MessageHandler) { method SetStorageHandler (line 100) | func (c *PluginInstance) SetStorageHandler(handler compat.StorageHandl... method SetStorage (line 105) | func (c *PluginInstance) SetStorage(b []byte) error { method GetStorage (line 110) | func (c *PluginInstance) GetStorage() ([]byte, error) { method RegisterWebhook (line 115) | func (c *PluginInstance) RegisterWebhook(basePath string, mux *gin.Rou... method SetCapability (line 120) | func (c *PluginInstance) SetCapability(p compat.Capability, enable boo... method Supports (line 141) | func (c *PluginInstance) Supports() compat.Capabilities { method DefaultConfig (line 146) | func (c *PluginInstance) DefaultConfig() interface{} { method ValidateAndSetConfig (line 154) | func (c *PluginInstance) ValidateAndSetConfig(config interface{}) error { method GetDisplay (line 163) | func (c *PluginInstance) GetDisplay(url *url.URL) string { method TriggerMessage (line 168) | func (c *PluginInstance) TriggerMessage() { type PluginConfig (line 56) | type PluginConfig struct function ReturnErrorOnEnableForUser (line 67) | func ReturnErrorOnEnableForUser(uid uint, err error) { function ReturnErrorOnDisableForUser (line 72) | func ReturnErrorOnDisableForUser(uid uint, err error) { FILE: router/router.go function Create (line 27) | func Create(db *database.GormDatabase, vInfo *model.VersionInfo, conf *c... function logFormatter (line 224) | func logFormatter(param gin.LogFormatterParams) string { type onlyImageFS (line 251) | type onlyImageFS struct method Open (line 255) | func (fs *onlyImageFS) Open(name string) (http.File, error) { FILE: router/router_test.go function TestIntegrationSuite (line 25) | func TestIntegrationSuite(t *testing.T) { type IntegrationSuite (line 29) | type IntegrationSuite struct method BeforeTest (line 36) | func (s *IntegrationSuite) BeforeTest(string, string) { method AfterTest (line 50) | func (s *IntegrationSuite) AfterTest(string, string) { method TestVersionInfo (line 56) | func (s *IntegrationSuite) TestVersionInfo() { method TestHeaderInDev (line 62) | func (s *IntegrationSuite) TestHeaderInDev() { method TestHeaderInProd (line 73) | func (s *IntegrationSuite) TestHeaderInProd() { method TestOptionsRequest (line 318) | func (s *IntegrationSuite) TestOptionsRequest() { method TestSendMessage (line 326) | func (s *IntegrationSuite) TestSendMessage() { method TestPluginLoadFail_expectPanic (line 358) | func (s *IntegrationSuite) TestPluginLoadFail_expectPanic() { method TestAuthentication (line 369) | func (s *IntegrationSuite) TestAuthentication() { method newRequest (line 404) | func (s *IntegrationSuite) newRequest(method, url, body string) *http.... function TestHeadersFromConfiguration (line 82) | func TestHeadersFromConfiguration(t *testing.T) { function TestHeadersFromCORSConfig (line 114) | func TestHeadersFromCORSConfig(t *testing.T) { function TestInvalidOrigin (line 143) | func TestInvalidOrigin(t *testing.T) { function TestAllowedOriginFromResponseHeaders (line 172) | func TestAllowedOriginFromResponseHeaders(t *testing.T) { function TestAllowedWildcardOriginInHeader (line 210) | func TestAllowedWildcardOriginInHeader(t *testing.T) { function TestCORSHeaderRegex (line 242) | func TestCORSHeaderRegex(t *testing.T) { function TestCORSConfigOverride (line 272) | func TestCORSConfigOverride(t *testing.T) { function doRequestAndExpect (line 411) | func doRequestAndExpect(t *testing.T, req *http.Request, code int, json ... FILE: runner/runner.go function Run (line 21) | func Run(router http.Handler, conf *config.Configuration) error { function doShutdownOnSignal (line 63) | func doShutdownOnSignal(shutdown chan<- error) { function doShutdown (line 70) | func doShutdown(shutdown chan<- error, err error) { function startListening (line 79) | func startListening(connectionType, listenAddr string, port, keepAlive i... function getNetworkAndAddr (line 93) | func getNetworkAndAddr(listenAddr string, port int) (string, string) { type LoggingRoundTripper (line 100) | type LoggingRoundTripper struct method RoundTrip (line 105) | func (l *LoggingRoundTripper) RoundTrip(r *http.Request) (resp *http.R... function applyLetsEncrypt (line 117) | func applyLetsEncrypt(s *http.Server, conf *config.Configuration) { FILE: runner/umask_fallback.go function umask (line 5) | func umask(_ int) int { FILE: test/asserts.go function BodyEquals (line 13) | func BodyEquals(t assert.TestingT, obj interface{}, recorder *httptest.R... function JSONEquals (line 22) | func JSONEquals(t assert.TestingT, obj interface{}, expected string) { type unreadableReader (line 30) | type unreadableReader struct method Read (line 32) | func (c unreadableReader) Read([]byte) (int, error) { function UnreadableReader (line 37) | func UnreadableReader() io.Reader { FILE: test/asserts_test.go type obj (line 12) | type obj struct type fakeTesting (line 17) | type fakeTesting struct method Errorf (line 21) | func (t *fakeTesting) Errorf(format string, args ...interface{}) { function Test_BodyEquals (line 25) | func Test_BodyEquals(t *testing.T) { function Test_BodyEquals_failing (line 35) | func Test_BodyEquals_failing(t *testing.T) { function Test_UnreaableReader (line 45) | func Test_UnreaableReader(t *testing.T) { FILE: test/auth.go function WithUser (line 9) | func WithUser(ctx *gin.Context, userID uint) { FILE: test/auth_test.go function TestFakeAuth (line 13) | func TestFakeAuth(t *testing.T) { FILE: test/filepath.go function GetProjectDir (line 11) | func GetProjectDir() string { function WithWd (line 18) | func WithWd(chDir string, f func(origWd string)) { FILE: test/filepath_test.go function TestProjectPath (line 11) | func TestProjectPath(t *testing.T) { function TestWithWd (line 16) | func TestWithWd(t *testing.T) { FILE: test/testdb/database.go type Database (line 14) | type Database struct method User (line 48) | func (d *Database) User(id uint) *AppClientBuilder { method NewUser (line 54) | func (d *Database) NewUser(id uint) *model.User { method NewUserWithName (line 59) | func (d *Database) NewUserWithName(id uint, name string) *model.User { method AssertAppNotExist (line 180) | func (d *Database) AssertAppNotExist(id uint) { method AssertUserNotExist (line 187) | func (d *Database) AssertUserNotExist(id uint) { method AssertUsernameNotExist (line 194) | func (d *Database) AssertUsernameNotExist(name string) { method AssertClientNotExist (line 201) | func (d *Database) AssertClientNotExist(id uint) { method AssertMessageNotExist (line 208) | func (d *Database) AssertMessageNotExist(ids ...uint) { method AssertAppExist (line 217) | func (d *Database) AssertAppExist(id uint) { method AssertUserExist (line 224) | func (d *Database) AssertUserExist(id uint) { method AssertClientExist (line 231) | func (d *Database) AssertClientExist(id uint) { method AssertMessageExist (line 238) | func (d *Database) AssertMessageExist(id uint) { type AppClientBuilder (line 20) | type AppClientBuilder struct method App (line 66) | func (ab *AppClientBuilder) App(id uint) *MessageBuilder { method InternalApp (line 71) | func (ab *AppClientBuilder) InternalApp(id uint) *MessageBuilder { method app (line 75) | func (ab *AppClientBuilder) app(id uint, internal bool) *MessageBuilder { method AppWithToken (line 80) | func (ab *AppClientBuilder) AppWithToken(id uint, token string) *Messa... method InternalAppWithToken (line 85) | func (ab *AppClientBuilder) InternalAppWithToken(id uint, token string... method appWithToken (line 89) | func (ab *AppClientBuilder) appWithToken(id uint, token string, intern... method NewAppWithToken (line 95) | func (ab *AppClientBuilder) NewAppWithToken(id uint, token string) *mo... method NewInternalAppWithToken (line 100) | func (ab *AppClientBuilder) NewInternalAppWithToken(id uint, token str... method newAppWithToken (line 104) | func (ab *AppClientBuilder) newAppWithToken(id uint, token string, int... method AppWithTokenAndName (line 111) | func (ab *AppClientBuilder) AppWithTokenAndName(id uint, token, name s... method InternalAppWithTokenAndName (line 116) | func (ab *AppClientBuilder) InternalAppWithTokenAndName(id uint, token... method appWithTokenAndName (line 120) | func (ab *AppClientBuilder) appWithTokenAndName(id uint, token, name s... method NewAppWithTokenAndName (line 126) | func (ab *AppClientBuilder) NewAppWithTokenAndName(id uint, token, nam... method NewInternalAppWithTokenAndName (line 131) | func (ab *AppClientBuilder) NewInternalAppWithTokenAndName(id uint, to... method newAppWithTokenAndName (line 135) | func (ab *AppClientBuilder) newAppWithTokenAndName(id uint, token, nam... method AppWithTokenAndDefaultPriority (line 142) | func (ab *AppClientBuilder) AppWithTokenAndDefaultPriority(id uint, to... method Client (line 149) | func (ab *AppClientBuilder) Client(id uint) *AppClientBuilder { method ClientWithToken (line 154) | func (ab *AppClientBuilder) ClientWithToken(id uint, token string) *Ap... method NewClientWithToken (line 160) | func (ab *AppClientBuilder) NewClientWithToken(id uint, token string) ... type MessageBuilder (line 26) | type MessageBuilder struct method Message (line 167) | func (mb *MessageBuilder) Message(id uint) *MessageBuilder { method NewMessage (line 173) | func (mb *MessageBuilder) NewMessage(id uint) model.Message { function NewDBWithDefaultUser (line 32) | func NewDBWithDefaultUser(t *testing.T) *Database { function NewDB (line 40) | func NewDB(t *testing.T) *Database { FILE: test/testdb/database_test.go function Test_WithDefault (line 13) | func Test_WithDefault(t *testing.T) { function TestDatabaseSuite (line 21) | func TestDatabaseSuite(t *testing.T) { type DatabaseSuite (line 25) | type DatabaseSuite struct method BeforeTest (line 30) | func (s *DatabaseSuite) BeforeTest(suiteName, testName string) { method AfterTest (line 35) | func (s *DatabaseSuite) AfterTest(suiteName, testName string) { method Test_Users (line 39) | func (s *DatabaseSuite) Test_Users() { method Test_Clients (line 63) | func (s *DatabaseSuite) Test_Clients() { method Test_Apps (line 95) | func (s *DatabaseSuite) Test_Apps() { method Test_Messages (line 155) | func (s *DatabaseSuite) Test_Messages() { FILE: test/tmpdir.go type TmpDir (line 9) | type TmpDir struct method Path (line 14) | func (c TmpDir) Path(elem ...string) string { method Clean (line 19) | func (c TmpDir) Clean() error { function NewTmpDir (line 24) | func NewTmpDir(prefix string) TmpDir { FILE: test/tmpdir_test.go function TestTmpDir (line 10) | func TestTmpDir(t *testing.T) { FILE: test/token.go function Tokens (line 6) | func Tokens(tokens ...string) func() string { FILE: test/token_test.go function TestTokenGeneration (line 9) | func TestTokenGeneration(t *testing.T) { FILE: ui/serve.go type uiConfig (line 18) | type uiConfig struct function Register (line 24) | func Register(r *gin.Engine, version model.VersionInfo, register bool) { function noop (line 46) | func noop(s string) string { function serveFile (line 50) | func serveFile(name, contentType string, convert func(string) string) gi... FILE: ui/src/CurrentUser.ts class CurrentUser (line 10) | class CurrentUser { method constructor (line 20) | public constructor(private readonly snack: SnackReporter) {} FILE: ui/src/application/AddApplicationDialog.tsx type IProps (line 12) | interface IProps { FILE: ui/src/application/AppStore.ts class AppStore (line 10) | class AppStore extends BaseStore { method constructor (line 13) | public constructor(private readonly snack: SnackReporter) { method deleteImage (line 39) | public async deleteImage(id: number): Promise { FILE: ui/src/application/Applications.tsx type IRowProps (line 196) | interface IRowProps { FILE: ui/src/application/UpdateApplicationDialog.tsx type IProps (line 12) | interface IProps { FILE: ui/src/client/AddClientDialog.tsx type IProps (line 10) | interface IProps { FILE: ui/src/client/ClientStore.ts class ClientStore (line 8) | class ClientStore extends BaseStore { method constructor (line 9) | public constructor(private readonly snack: SnackReporter) { method requestDelete (line 16) | protected requestDelete(id: number): Promise { FILE: ui/src/client/Clients.tsx type IRowProps (line 96) | interface IRowProps { FILE: ui/src/client/UpdateClientDialog.tsx type IProps (line 11) | interface IProps { FILE: ui/src/common/BaseStore.ts type HasID (line 3) | interface HasID { type IClearable (line 7) | interface IClearable { FILE: ui/src/common/ConfirmDialog.tsx type IProps (line 9) | interface IProps { function ConfirmDialog (line 16) | function ConfirmDialog({title, text, fClose, fOnSubmit}: IProps) { FILE: ui/src/common/ConnectionErrorBanner.tsx type ConnectionErrorBannerProps (line 5) | interface ConnectionErrorBannerProps { FILE: ui/src/common/Container.tsx type IProps (line 11) | interface IProps { FILE: ui/src/common/CopyableSecret.tsx type IProps (line 9) | interface IProps { FILE: ui/src/common/DefaultPage.tsx type IProps (line 5) | interface IProps { FILE: ui/src/common/LoadingSpinner.tsx function LoadingSpinner (line 6) | function LoadingSpinner() { FILE: ui/src/common/NumberField.tsx type NumberFieldProps (line 4) | interface NumberFieldProps { FILE: ui/src/common/SettingsDialog.tsx type IProps (line 12) | interface IProps { FILE: ui/src/config.ts type IConfig (line 3) | interface IConfig { type Window (line 10) | interface Window { function set (line 22) | function set(key: Key, value: IConfig[Key]): ... function get (line 26) | function get(key: K): IConfig[K] { FILE: ui/src/layout/Header.tsx type IProps (line 74) | interface IProps { FILE: ui/src/layout/Navigation.tsx type IProps (line 40) | interface IProps { FILE: ui/src/layout/theme.ts type ThemeKey (line 1) | type ThemeKey = 'dark' | 'light' | 'system'; FILE: ui/src/message/Message.tsx constant PREVIEW_LENGTH (line 16) | const PREVIEW_LENGTH = 500; type IProps (line 94) | interface IProps { FILE: ui/src/message/MessagesStore.ts type MessagesState (line 12) | interface MessagesState { type PendingDelete (line 19) | interface PendingDelete { class MessagesStore (line 24) | class MessagesStore { method constructor (line 30) | public constructor( method removeFromList (line 171) | private removeFromList(messages: IMessage[], messageToDelete: IMessage... FILE: ui/src/message/PushMessageDialog.tsx type IProps (line 12) | interface IProps { FILE: ui/src/message/WebSocketStore.ts class WebSocketStore (line 7) | class WebSocketStore { method constructor (line 11) | public constructor( FILE: ui/src/message/extras.ts type RenderMode (line 3) | enum RenderMode { FILE: ui/src/plugin/PluginDetailView.tsx type IPanelWrapperProps (line 90) | interface IPanelWrapperProps { type IConfigurerPanelProps (line 144) | interface IConfigurerPanelProps { type IDisplayerPanelProps (line 183) | interface IDisplayerPanelProps { type IPluginInfo (line 193) | interface IPluginInfo { FILE: ui/src/plugin/PluginStore.ts class PluginStore (line 8) | class PluginStore extends BaseStore { method constructor (line 11) | public constructor(private readonly snack: SnackReporter) { FILE: ui/src/plugin/Plugins.tsx type IRowProps (line 57) | interface IRowProps { FILE: ui/src/reactions.ts constant AUDIO_REPEAT_DELAY (line 5) | const AUDIO_REPEAT_DELAY = 1000; FILE: ui/src/registerServiceWorker.ts function unregister (line 1) | function unregister() { FILE: ui/src/snack/SnackManager.ts type SnackReporter (line 3) | interface SnackReporter { class SnackManager (line 7) | class SnackManager { FILE: ui/src/snack/browserNotification.ts function mayAllowPermission (line 5) | function mayAllowPermission(): boolean { function requestPermission (line 9) | function requestPermission() { function notifyNewMessage (line 18) | function notifyNewMessage(msg: IMessage) { function closeAndFocus (line 29) | function closeAndFocus(event: Event) { function closeAfterTimeout (line 39) | function closeAfterTimeout(event: Event) { FILE: ui/src/stores.tsx type StoreMapping (line 11) | interface StoreMapping { FILE: ui/src/tests/application.test.ts type Col (line 17) | enum Col { FILE: ui/src/tests/client.test.ts type Col (line 18) | enum Col { FILE: ui/src/tests/message.test.ts type Msg (line 36) | interface Msg { FILE: ui/src/tests/plugin.test.ts type Col (line 25) | enum Col { FILE: ui/src/tests/setup.ts type GotifyTest (line 11) | interface GotifyTest { FILE: ui/src/tests/user.test.ts type Col (line 17) | enum Col { FILE: ui/src/typedef/react-timeago.d.ts type FormatterOptions (line 4) | type FormatterOptions = { type Formatter (line 8) | type Formatter = (options: FormatterOptions) => React.ReactNode; type ITimeAgoProps (line 10) | interface ITimeAgoProps { class TimeAgo (line 15) | class TimeAgo extends React.Component {} FILE: ui/src/types.ts type IApplication (line 1) | interface IApplication { type IClient (line 13) | interface IClient { type IPlugin (line 20) | interface IPlugin { type IMessage (line 32) | interface IMessage { type IMessageExtras (line 43) | interface IMessageExtras { type IPagedMessages (line 47) | interface IPagedMessages { type IPaging (line 52) | interface IPaging { type IUser (line 59) | interface IUser { type IVersion (line 65) | interface IVersion { FILE: ui/src/user/AddEditUserDialog.tsx type IProps (line 12) | interface IProps { FILE: ui/src/user/Register.tsx type IProps (line 10) | interface IProps { FILE: ui/src/user/UserStore.ts class UserStore (line 8) | class UserStore extends BaseStore { method constructor (line 9) | constructor(private readonly snack: SnackReporter) { method requestDelete (line 16) | protected requestDelete(id: number): Promise { FILE: ui/src/user/Users.tsx type IRowProps (line 20) | interface IRowProps { FILE: ui/vite.config.ts constant GOTIFY_SERVER_PORT (line 4) | const GOTIFY_SERVER_PORT = process.env.GOTIFY_SERVER_PORT ?? '80';