statping/plugin/main.go

114 lines
2.1 KiB
Go
Raw Normal View History

2018-08-16 06:22:20 +00:00
// Statup
// Copyright (C) 2018. Hunter Long and the project contributors
// Written by Hunter Long <info@socialeck.com> and the project contributors
//
// https://github.com/hunterlong/statup
//
// The licenses for most software and other practical works are designed
// to take away your freedom to share and change the works. By contrast,
// the GNU General Public License is intended to guarantee your freedom to
// share and change all versions of a program--to make sure it remains free
// software for all its users.
//
// You should have received a copy of the GNU General Public License
// along with this program. If not, see <http://www.gnu.org/licenses/>.
2018-06-14 01:19:00 +00:00
package plugin
import (
2018-09-28 16:17:21 +00:00
"github.com/hunterlong/statup/core/notifier"
"github.com/jinzhu/gorm"
"net/http"
2018-06-14 01:19:00 +00:00
)
2018-06-14 06:38:15 +00:00
//
// STATUP PLUGIN INTERFACE
//
// v0.1
//
// https://statup.io
//
2018-06-19 04:48:25 +00:00
//
// An expandable plugin framework that will still
// work even if there's an update or addition.
//
2018-06-14 06:38:15 +00:00
2018-09-28 16:17:21 +00:00
type PluginObject struct{}
var (
AllPlugins []*PluginObject
)
func Add(p Pluginer) *PluginObject {
return &PluginObject{}
}
func (p *PluginObject) AddRoute(s string, i string, f http.HandlerFunc) {
}
type Pluginer interface {
Select() *PluginObject
}
type Databaser interface {
StatupDatabase(*gorm.DB)
}
type Router interface {
AddRoute(string, string, http.HandlerFunc) error
}
type Notifier interface {
notifier.Notifier
notifier.BasicEvents
}
type AdvancedNotifier interface {
notifier.Notifier
notifier.BasicEvents
notifier.UserEvents
notifier.CoreEvents
notifier.NotifierEvents
}
2018-06-14 06:38:15 +00:00
var (
2018-09-21 15:12:58 +00:00
DB *gorm.DB
2018-06-14 06:38:15 +00:00
)
type Routing struct {
URL string
Method string
Handler func(http.ResponseWriter, *http.Request)
}
type Info struct {
Name string
Description string
Form string
}
type Database *gorm.DB
type Plugin struct {
Name string
Description string
}
type PluginDatabase interface {
Database(gorm.DB)
Update() error
}
2018-07-17 09:18:20 +00:00
type PluginInfo struct {
i *Info
2018-06-14 06:38:15 +00:00
}
2018-09-21 15:12:58 +00:00
func SetDatabase(database *gorm.DB) {
2018-07-17 09:18:20 +00:00
DB = database
2018-06-14 06:38:15 +00:00
}
2018-06-19 06:00:56 +00:00
func (p *PluginInfo) Form() string {
return "okkokokkok"
}