mirror of
https://github.com/yusing/godoxy.git
synced 2025-05-20 20:52:33 +02:00
74 lines
1.6 KiB
Go
74 lines
1.6 KiB
Go
package homepage
|
|
|
|
import (
|
|
"github.com/yusing/go-proxy/internal/utils"
|
|
)
|
|
|
|
type (
|
|
//nolint:recvcheck
|
|
Categories map[string]Category
|
|
Category []*Item
|
|
|
|
ItemConfig struct {
|
|
Show bool `json:"show"`
|
|
Name string `json:"name"` // display name
|
|
Icon *IconURL `json:"icon"`
|
|
Category string `json:"category"`
|
|
Description string `json:"description" aliases:"desc"`
|
|
SortOrder int `json:"sort_order"`
|
|
WidgetConfig map[string]any `json:"widget_config" aliases:"widget"`
|
|
URL string `json:"url"` // alias + domain
|
|
}
|
|
|
|
Item struct {
|
|
*ItemConfig
|
|
|
|
Alias string `json:"alias"` // proxy alias
|
|
SourceType string `json:"source_type"`
|
|
AltURL string `json:"alt_url"` // original proxy target
|
|
Provider string `json:"provider"`
|
|
|
|
IsUnset bool `json:"-"`
|
|
}
|
|
)
|
|
|
|
func init() {
|
|
utils.RegisterDefaultValueFactory(func() *ItemConfig {
|
|
return &ItemConfig{
|
|
Show: true,
|
|
}
|
|
})
|
|
}
|
|
|
|
func NewItem(alias string) *Item {
|
|
return &Item{
|
|
ItemConfig: &ItemConfig{
|
|
Show: true,
|
|
},
|
|
Alias: alias,
|
|
IsUnset: true,
|
|
}
|
|
}
|
|
|
|
func NewHomePageConfig() Categories {
|
|
return Categories(make(map[string]Category))
|
|
}
|
|
|
|
func (item *Item) IsEmpty() bool {
|
|
return item == nil || item.IsUnset || item.ItemConfig == nil
|
|
}
|
|
|
|
func (item *Item) GetOverride() *Item {
|
|
return overrideConfigInstance.GetOverride(item)
|
|
}
|
|
|
|
func (c *Categories) Clear() {
|
|
*c = make(Categories)
|
|
}
|
|
|
|
func (c Categories) Add(item *Item) {
|
|
if c[item.Category] == nil {
|
|
c[item.Category] = make(Category, 0)
|
|
}
|
|
c[item.Category] = append(c[item.Category], item)
|
|
}
|