Files
APIPark/module/router/dto/output.go
T
2024-12-31 15:24:36 +08:00

124 lines
3.5 KiB
Go

package router_dto
import (
"encoding/json"
"github.com/eolinker/go-common/utils"
"github.com/APIParkLab/APIPark/service/api"
"github.com/eolinker/go-common/auto"
)
type Item struct {
Id string `json:"id"`
Methods []string `json:"methods"`
Protocols []string `json:"protocols"`
Path string `json:"request_path"`
Description string `json:"description"`
Disable bool `json:"disabled"`
Creator auto.Label `json:"creator" aolabel:"user"`
Updater auto.Label `json:"updater" aolabel:"user"`
CreateTime auto.TimeLabel `json:"create_time"`
UpdateTime auto.TimeLabel `json:"update_time"`
CanDelete bool `json:"can_delete"`
}
type SimpleItem struct {
Id string `json:"id"`
Methods []string `json:"methods"`
Name string `json:"name"`
Path string `json:"request_path"`
}
type Detail struct {
SimpleDetail
Proxy *Proxy `json:"proxy"`
Protocols []string `json:"protocols"`
Disable bool `json:"disabled"`
//Doc map[string]interface{} `json:"doc"`
}
func GenSimpleDetail(api *api.Info) *SimpleDetail {
match := make([]Match, 0)
if api.Match == "" {
api.Match = "[]"
}
json.Unmarshal([]byte(api.Match), &match)
return &SimpleDetail{
Id: api.UUID,
Name: api.Name,
Description: api.Description,
Methods: api.Methods,
Path: api.Path,
MatchRules: match,
Creator: auto.UUID(api.Creator),
Updater: auto.UUID(api.Updater),
CreateTime: auto.TimeLabel(api.CreateAt),
UpdateTime: auto.TimeLabel(api.UpdateAt),
}
}
type SimpleDetail struct {
Id string `json:"id"`
Name string `json:"name"`
Description string `json:"description"`
Methods []string `json:"methods"`
Path string `json:"path"`
Protocols []string `json:"protocols"`
MatchRules []Match `json:"match"`
Creator auto.Label `json:"creator" aolabel:"user"`
Updater auto.Label `json:"updater" aolabel:"user"`
CreateTime auto.TimeLabel `json:"create_time"`
UpdateTime auto.TimeLabel `json:"update_time"`
}
func FromServiceProxy(proxy *api.Proxy) *Proxy {
if proxy == nil {
return nil
}
return &Proxy{
Path: proxy.Path,
Timeout: proxy.Timeout,
Retry: proxy.Retry,
Headers: utils.SliceToSlice(proxy.Headers, func(header *api.Header) *Header {
return &Header{
Key: header.Key,
Value: header.Value,
Opt: header.Opt,
}
}),
Extends: proxy.Extends,
Plugins: proxy.Plugins,
}
}
type Proxy struct {
Path string `json:"path"`
Timeout int `json:"timeout"`
Retry int `json:"retry"`
Headers []*Header `json:"headers"`
Extends map[string]any `json:"extends"`
Plugins map[string]api.PluginSetting `json:"plugins"`
}
type Header struct {
Key string `json:"key"`
Value string `json:"value"`
Opt string `json:"opt"`
}
type Export struct {
Id string `json:"id"`
Name string `json:"name"`
Description string `json:"description"`
Method []string `json:"method"`
Path string `json:"path"`
MatchRules []Match `json:"match"`
Service string `json:"service"`
Team string `json:"team"`
Proxy *Proxy `json:"proxy"`
Doc map[string]interface{} `json:"doc"`
}