mirror of
https://github.com/APIParkLab/APIPark.git
synced 2026-06-12 18:11:34 +08:00
124 lines
3.5 KiB
Go
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"`
|
|
}
|